《第7章 串行通信接口.ppt》由会员分享,可在线阅读,更多相关《第7章 串行通信接口.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7章章 串行通信接口串行通信接口 7.1串行通信7.2S3C2410X异步串行通信7.3接口电路与程序设计7.4小结7.5思考与练习本章课程:本章课程:2 7.1.1串行通信与并行通信概念在微型计算机中,通信(数据交换)有两种方式:串行通信和并行通信。串行通信是指计算机与I/O设备之间数据传输的各位是按顺序依次一位接一位进行传送。通常数据在一根数据线或一对差分线上传输。并行通信是指计算机与I/O设备之间通过多条传输线交换数据,数据的各位同时进行传送。7.1串行通信3 7.1.2异步串行方式的特点异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步
2、的。异步串行通信的特点:以字符为单位传送信息。相邻两字符间的间隔是任意长。因为一个字符中的比特位长度有限,所以需要的接收时钟和发送时钟只要相近就可以。异步方式特点简单的说就是:字符间异步,字符内部各位同步。7.1串行通信4 7.1.3异步串行方式的数据格式异步串行通信数据每个字符(每帧信息)由4个部分组成1位起始位,规定为低电0;58位数据位,即要传送的有效信息;1位奇偶校验位;12位停止位,规定为高电平1。图8-1异步串行数据格式7.1串行通信5 7.1.4同步串行方式的特点同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步。同步串行通信的特点:以
3、数据块为单位传送信息。在一个数据块(信息帧)内,字符与字符间无间隔。因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟。7.1串行通信6 7.1.5同步串行方式的数据格式同步串行通信的数据格式如图8-2所示,每个数据块(信息帧)由3个部分组成:2个同步字符作为一个数据块(信息帧)的起始标志;n个连续传送的数据2个字节循环冗余校验码(CRC)8-2同步串行数据格式7.1串行通信7 7.1.6RS-232C串口规范RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业
4、协会,RS(ecommededstandard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969)常用物理标准还有EIA-RS-232-C、EIA-RS-422-A、EIA-RS-423A、EIA-RS-485目前在PC机上的COM1、COM2接口,就是RS-232C7.1串行通信8 7.1.6RS-232C串口规范1、9针串口引脚定义PC电脑串行口中的典型是RS-232及其兼容接口,串口引脚有9针和25针两类7.1串行通信9 7.1.6RS-232C串口规范2、RS-232C电气特性在TXD和RXD引脚上电平定义:逻辑1=-3V-15V在RTS、CTS、DSR、DTR和
5、DCD等控制线上电平定义:信号有效=+3V+15V信号无效=-3V-15V注意:对于介于-3V+3V之间的电压处于模糊区电位,此部分电压将使得计算机无法正确判断输出信号的意义,可能得到0,也可能得到1,如此得到的结果是不可信的。因此,实际工作时,应保证传输的电平在+3+15V或-3V-15V之间。7.1串行通信10 7.1.6RS-232C串口规范3、RS-232C的通讯距离和速度RS-232C能够可靠进行数据传输的最大通讯距离为15米传输速度一般都可以达到115200bps甚至更高,标准串口能够提供的传输速度主要有以下波特率:1200bps、2400bps、4800bps、9600bps、1
6、9200bsp、38400bps、57600bps、115200bps等7.1串行通信11 7.1.6RS-232C串口规范4、RS-232C电平转换芯片及电路MAX3232主要特点有:符合所有的RS-232C规范单一供电电压+5V或3.3V片内电荷泵,具有升压。电压极行反转能力,能够产生+10V和-10V电压V+、V-低功耗,典型供电电流3mA内部集成2个RS-232C驱动器内部集成2个RS-232C接收器图8-3MAX3232芯片7.1串行通信12 7.1.7RS-232C接线方式RS-232C串口的接线方式有全串口连接、3线连接等方式3线连接方法:RXD,TXD和GND图8-43线连接法
7、7.1串行通信13 7.2.1S3C2410X串口控制器概述1S3C2410X串行通信(UART)单元S3C2410XUART单元提供3个独立的异步串行通信接口,皆可工作于中断和DMA模式。使用系统时钟最高波特率达230.4Kbit/s,如果使用外部设备提供的时钟,可以达到更高的速率。每一个UART单元包含一个16字节的FIFO,用于数据的接收和发送7.2S3C2410X异步串行通信14 7.2.1S3C2410X串口控制器概述2波特率的产生波特率由一个专用的UART波特率分频寄存器(UBRDIVn)控制,计算公式如下:UBRDIVn=(int)(ULK/(bps16)1或者UBRDIVn=(
8、int)(PLK/(bps16)1说明:时钟选用UCLK还是PCLK由UART控制寄存器UCONn10的状态决定。如果UCONn10=0,用PCLK作为波特率发生,否则选用UCLK做波特率发生。UBRDIVn的值必须在1到(2161)之间例:UCLK或者PCLK等于40MHz,当波特率为115200时UBRDIVn=(int)(40000000/(11520016)1=(int)(21.7)1=211=207.2S3C2410X异步串行通信15 7.2.1S3C2410X串口控制器概述3S3C2410XUART通信操作1、发送数据帧包含一个起始位,58个数据位,一个可选的奇偶校验位和12位停止
9、位,停止位通过行控制寄存器ULCONn配置2、接收数据帧由一个起始位,58个数据位,一个可选的奇偶校验和12位行控制寄存器ULCONn里的停止位组成3、接收器还可以检测溢出错、奇偶校验错、帧错误和传输中断,每一个错误均可以设置一个错误标志。1)溢出错误(OverrunError)是指已接收到的数据在读取之前被新接收的数据覆盖2)奇偶校验错是指接收器检测到的校验和与设置的不符3)帧错误指没有接收到有效的停止位4)传输中断表示接收数据RxDn保持逻辑0超过一帧的传输时间7.2S3C2410X异步串行通信16 7.2.2S3C2410X串口控制器寄存器详解1、UART行控制寄存器ULCONn7.2S
10、3C2410X异步串行通信17 7.2.2S3C2410X串口控制器寄存器详解2、UART控制寄存器UCONn7.2S3C2410X异步串行通信18 7.2.2S3C2410X串口控制器寄存器详解3、UARTFIFO控制寄存器UFCONn7.2S3C2410X异步串行通信19 7.2.2S3C2410X串口控制器寄存器详解4、UARTMODEM控制寄存器UMCONn7.2S3C2410X异步串行通信20 7.2.2S3C2410X串口控制器寄存器详解5、发送寄存器UTXHn和接收寄存器URXHn这两个寄存器存放着发送和接收的数据,在关闭FIFO的情况下只有一个字节位数据。需要注意的是,在发生溢
11、出错误的时候,接收的数据必须被读出来,否则会引发下次溢出错误。7.2S3C2410X异步串行通信21 7.2.2S3C2410X串口控制器寄存器详解6、波特率分频寄存器UBRDIVn7.2S3C2410X异步串行通信22 7.2.2S3C2410X串口控制器寄存器详解7、串口状态寄存器UTRSTATn7.2S3C2410X异步串行通信23 7.3.1电路连接图8-5串口连接图7.3接口电路与程序设计24 7.3.2寄存器设置(1)禁止串口控制器的FIFO功能设置UFCON0的0为“0”。(2)禁止AFC自动流控功能设置UMCON0的4为“0”(3)设置通讯格式为正常串口通讯模式、8个数据位、1
12、个停止位、无奇偶校验设置ULCON0的7:0为0 x03。(4)设置串口的接收、发送模式为轮询模式设置UCONn的3:0为“0101”(5)设置串口的时钟源为PCLK设置UCONn的10为“0”。7.3接口电路与程序设计25 7.3.3程序的编写1、相关寄存器定义在例程MDKcommoninc2410addr.h中:#definerULCON0(*(volatileunsigned*)0 x50000000)/UART0Linecontrol#definerUCON0(*(volatileunsigned*)0 x50000004)/UART0Control#definerUFCON0(*(v
13、olatileunsigned*)0 x50000008)/UART0FIFOcontrol#definerUMCON0(*(volatileunsigned*)0 x5000000c)/UART0Modemcontrol#definerUTRSTAT0(*(volatileunsigned*)0 x50000010)/UART0Tx/Rxstatus#definerUBRDIV0(*(volatileunsigned*)0 x50000028)/UART0Baudratedivisor#definerUTXH0(*(volatileunsignedchar*)0 x50000020)/UAR
14、T0TransmissionHold#definerURXH0(*(volatileunsignedchar*)0 x50000024)/UART0Receivebuffer7.3接口电路与程序设计26 7.3.3程序的编写2、串口初始化函数函数输入参数为:串口工作波特率、串口通道。voiduart_init(intnMainClk,intnBaud,intnChannel)switch(nChannel)caseUART0:rUFCON0=0 x0;/禁止FIFOrUMCON0=0 x0;/禁止AFC自动流控功能/设置通讯格式为正常串口通讯模式、8个数据位、1个停止位、无奇偶校验rULCON
15、0=0 x3;/设置串口的接收、发送模式为轮询模式,串口的时钟源为PCLKrUCON0=0 x245;/根据nBaud波特率和PCLK设置分频寄存器rUBRDIV0=(int)(PCLK/16./nBaud)-1);break;。7.3接口电路与程序设计27 7.3.3程序的编写3、串口接收一个字符charuart_getch(void)if(f_nWhichUart=0)/判断从第几个串口获取字符while(!(rUTRSTAT0&0 x1);/根据UTRSTAT0第0位的值,判断是否接收完成returnRdURXH0();。7.3接口电路与程序设计28 7.3.3程序的编写4、串口发送一个
16、字符voiduart_sendbyte(intnData)if(f_nWhichUart=0)/判断发送的字符是否是换行符,如果是,则需要先发送回车符rif(nData=n)while(!(rUTRSTAT0&0 x2);/等待,直到发送缓冲为空delay(10);WrUTXH0(r);/发送缓冲为空时,发送rwhile(!(rUTRSTAT0&0 x2);/等待,直到发送缓冲为空delay(10);WrUTXH0(nData);/发送缓冲为空时,发送nData。7.3接口电路与程序设计29 7.3.4调试与运行结果1、调试步骤(1)串口设置在PC机上运行Windows自带的超级终端串口通信程
17、序(波特率为115200Bd、1位停止位、无校验位、无硬件流控制)如图8-6所示;或者使用其他串口通信程序图8-6超级终端配置7.3接口电路与程序设计30 7.3.4调试与运行结果(2)硬件接线,使用目标板附带的串口线连接目标板上UART0和PC机串口COMx,并连接好ULINK2仿真器套件(3)运行MDK开发环境,进入实验例程目录MDKuart_test子目录下的uart_test.Uv2例程,编译链接工程(4)单击MDK控制栏“OptionsforTarget”选择Debug菜单,选择ULINKARMDebugger(5)单击Debug运行程序,下载调试代码到目标系统的RAM中(6)在超级
18、终端的“Pleaseinputwordsthatyouwanttotransmit:”提示后输入想要发送的数据,并以回车作为发送字符串的结尾标志(7)继续运行程序,直至程序的结尾(8)结合实验内容和实验原理部分,熟练掌握S3C2410X处理器UART模块的使用7.3接口电路与程序设计31 7.3.4调试与运行结果2、观察实验结果在执行到第(6)步时,可以看到超级终端上输出等待输入字符:bootsuccess.UART0CommunicationTestExamplePleaseinputwords,thenpressEnter:/如果输入字符就会马上显示在超级终端上(假设输入为abcdefg),输入回车符后打印一整串字符:Thewordsthatyouinputare:abcdefg7.3接口电路与程序设计32 串口通讯的概念、数据规范S3C2410X串口控制器及编程方法7.4小结33 7.3.4调试与运行结果7.3接口电路与程序设计34 7-1串行通讯与并行通讯的概念?7-2 同步通讯与异步通讯的概念、区别?7-3 RS-232C串口通讯接口规范?7-4 S3C2410X串口控制器中,哪个寄存器用来设置串口波特率?7-5 编写一个串口程序采用中断的方式,实现向PC的串口终端打印一个字符串“hello”的功能?7.5思考与练习3536