总线数据传输中的UART技术.ppt

上传人:小飞机 文档编号:5977125 上传时间:2023-09-10 格式:PPT 页数:46 大小:2.36MB
返回 下载 相关 举报
总线数据传输中的UART技术.ppt_第1页
第1页 / 共46页
总线数据传输中的UART技术.ppt_第2页
第2页 / 共46页
总线数据传输中的UART技术.ppt_第3页
第3页 / 共46页
总线数据传输中的UART技术.ppt_第4页
第4页 / 共46页
总线数据传输中的UART技术.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《总线数据传输中的UART技术.ppt》由会员分享,可在线阅读,更多相关《总线数据传输中的UART技术.ppt(46页珍藏版)》请在三一办公上搜索。

1、2023/9/10,1,第四讲 总线数据传输中的UART技术,主讲人:于海滨二教中楼309室,UART,UART:Universal Asynchronous Receiver/Transmitter(通用异步接收/发送装置)实质是一种通用串行总线,用于异步通信可以实现全双工传输和接收在嵌入式设计中,UART通常用于嵌入式系统板与PC机之间通信,典型的例子就是串口,2023/9/10,2,典型UART设备的发送流程,首先将接收到的并行数据转换成串行数据(并串转换)传输时消息帧从一个低位起始位开始,后面是7个或8个数据位,一个可用的奇偶位和一个或几个高位停止位如果选择了奇偶,UART就在数据位后

2、面加上奇偶位。奇偶位可用来帮助错误校验,2023/9/10,3,典型UART设备的接收流程,接收器发现开始位后,获知数据准备发送,做好接收数据准备在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行UART也产生额外的信号来指示发送和接收的状态。例如,如果产生一个奇偶错误,UART就置位奇偶标志,2023/9/10,4,UART的数据方向,数据传输可以首先从最低有效位(LSB)开始有些UART允许灵活选择先发送最低有效位或最高有效位(MSB),2023/9/10,5,UART的通信速度,微控制器中的UART传送数据的速度范围为每秒几百位到1

3、.5Mb例如,嵌入在ElanSC520微控制器中的高速UART通信的速度可以高达1.1152Mbps。UART波特率还受发送和接收线对距离(线长度)的影响市场上有只支持异步通信和同时支持异步与同步通信的两种硬件可用于UART前者就是UART名字本身的含义,在摩托罗拉微控制器中被称为串行通信接口(SCI);Microchip微控制器中的通用同步异步收发器(USART)和在富士通微控制器中的UART是后者的两个典型例子,2023/9/10,6,UART的实现方式,芯片内部集成UART,直接选用具有UART接口的MCU例如单片机、ARM在MCU的并行总线上扩展UART芯片,如Ti的TL16C552,

4、用硬件来实现异步数据传输优点:软件实现简单缺点:总线还要扩展其他设备,使目标系统复杂化利用MCU的通用I/O或同步串口采用软件模拟异步时序,实现软件UART优点:硬件简单缺点:软件实现复杂,加大MCU负担,不适合通信数据量大的场合,2023/9/10,7,计算机中的UART,UART是计算机中串行通信端口的关键部分在计算机中,UART相连于产生兼容RS232规范信号的电路当一个微控制器中的UART相连于PC时,它需要一个RS232驱动器来转换电平,2023/9/10,8,RS232C串行总线,电气连接方式,2023/9/10,9,TTL、CMOS和RS232电平,TTL电平输出高电平2.4V,

5、输出低电平=2.0V,输入低电平=0.8V,噪声容限是0.4V一般认为TTL电平逻辑“1”为5VCMOS电平“1”逻辑电平电压接近于电源电压,“0”逻辑电平接近于0V。而且具有很宽的噪声容限一般CMOS工艺器件的电源电压为3.3V,因而一般意义上的CMOS电平逻辑“1”即为3.3VRS232C电平为EIA电平逻辑“1”:+3V+25V;逻辑“0”:-3V-25V,2023/9/10,10,TTL、CMOS和RS232电平之间的相互转换,TTL电平与CMOS电平之间的相互转换少量总线最简单方式:用两个电阻对电平分压多根总线同时需要转换:总线隔离器,2023/9/10,11,74LVT16245,

6、TTL电平与RS232C电平之间的相互转换MAX232,2023/9/10,12,RS232C总线主要特点非平衡连接方式非平衡线缆通常是一个同轴电缆,在非平衡线缆中,电流通过导体流过去,并通过大地返回平衡连接通常是包含两个导体的双绞线或双股电缆,两根电线都连接到发生器(发送方)和接收方,并且它们都有相同的电流,但是电流是反方向的信道噪声会叠加在信号上并全部反映到接收器中,因而会加大通信误码率,但却最大限度降低了通信成本采用点对点通信只用一对收发设备完成通信工作,其驱动器负载为37k 公用地线所有信号线共用一条信号地线,在短距离通信时有效地抑制了噪声干扰;但不同信号线间会通过公用地线产生干扰,2

7、023/9/10,13,RS232C总线机械特性(1)RS-232-C总线的接口连接器采用DB-25插头和插座,其中阳性插头(DB-25-P)与数据终端设备DTE相连,阴性插座(DB-25-S)与数据通信设备DCE相连,2023/9/10,14,RS232C总线机械特性(2)通常使用的RS-232-C接口信号只有9根引脚。最基本的三根线是发送数据线2、数据线3和信号地线5,一般近距离的计算机之间的通信使用这三条线就足够了 其余信号线通常在应用MODEM(调制解调器)或通信控制器进行远距离通信时才使用,2023/9/10,15,RS232C电气参数引线信号状态RS-232C标准引线状态必须是以下

8、三种之一,即SPACE/MARK(空号/传号)、或ON/OFF(通/断)、或逻辑0/逻辑1引线逻辑电平 EIA电平短路抑制性能RS-232C的驱动电路必须能承受电缆中任何导线短路,而不至于损坏所连接的任何设备,2023/9/10,16,RS232C通信速率RS-232C标准的电气连接方式决定其通信速率不可能太高非平衡连接及共用地线都会使信号质量下降,通信速率也因此受到限制 最高通信速率为115200bps由于受噪声的影响,RS-232C标准规定通信距离应小于15m,2023/9/10,17,RS232C总线的通信结构(1)具有MODEM设备的远距离通信线路使用了最常用的5根信号线,提供了两个方

9、向的数据线(发送和接收数据)和一对控制数据传输的握手线RTS和DSR,2023/9/10,18,RS232C总线的通信结构(2)不用MODEM的直接通信线路近距离通信时,即不通过电话线进行远距离通信时,则不需要使用DCE,而直接把DTE连接起来,称为零调制解调器连接,因为此时调制解调器已经退化成了一个线路交叉,2023/9/10,19,RS232C总线的通信结构(3)最简单的RS232C数据通信,2023/9/10,20,2023/9/10,21,举例:基于MCU的软件UART,UART的优势UART提供了一种简单的途径,使两个器件无需共享同一个时钟信号就能进行通信如果再加入一个合适的电平转换

10、器,串口还能用在RS-232和RS-485网络中通信,或者与计算机的COM端口连接串口只需两根信号线(Rx和Tx)即可实现,而且只要两端器件都采用同样的位格式和波特率,那么它们无需其它任何对方的信息就可以成功传输数据,2023/9/10,22,目前,可提供功能完善的硬件串口的微控制器比比皆是,那么我们为什么还要费力地用微控制器的端口管脚来实现软件UART呢?尽管确实有许多微控制器都包含了硬件UART,但仍有许多没有包含这种接口。在系统设计中,选择微控制器时,可能很难找到一款各方面都很理想的产品即便一款微控制器包含了一个功能完善的硬件UART,由于某种原因,这对即将进行的设计来说可能仍然不够 一

11、款微控制器的硬件UART也许能够很好地满足应用的需求,但只是数量不够,2023/9/10,23,采用软件UART需要注意的问题软件UART会从主应用中占用多大带宽?因为采用硬件UART(或其它硬件串行通信接口)的一个主要原因首先就是将微控制器解放出来,使其无需费时去处理串口协议底层的细节像位采样(bit-sampling)、时隙计算以及输入输出移位这类繁琐的操作都在硬件中完成,然后UART通过中断或其它标志位的方式告诉主微控制器,它已经收到了一个字符或者已经发送完一个字符接着,微控制器就可以快速地从UART缓存中上载数据或者向缓存中下载数据,然后返回继续执行其核心任务。,2023/9/10,2

12、4,软件UART并不是一直占用MCU在启动一次发送或接收操作之后,串行UART(不论是软件还是硬件形式的UART)并不需要连续监控I/O线在发送一个字符时,每个位周期,UART只需驱动一次发送信号线的状态,从起始位到8个数据位直到结束位依次设置每个位的电平在接收一个字符时,UART在第一个下降沿开始工作,之后只需在每个位时隙的中央对接收线上的信号状态进行一次采样同时,为了避免不必要地占用主应用过多的时间,软件UART应该由一些周期性的基于定时器的中断来激活。接收线上初始下降沿的检测需要利用一个边沿触发的外部中断单独处理,2023/9/10,25,采用软件UART实现DSP与PC机之间的串口通信

13、,DSP没有UART接口,GPIO数量也极少,但为了方便数据采集,通常具有多个MCBSP(Multi-Channel Buffered Serial Port,多通道缓冲串口)接口MCBSP是同步串口,每个接口有7个引脚,除数据收发引脚DX、DR外,还包括发送时钟 CLKX、接收时钟CLKR、发送帧同步FSX、接收帧同步FSR和外部输入时钟CLKS,分别用于传输数据、时钟和帧同步信号,2023/9/10,26,UART数据帧结构,UART实质为异步串口,无同步信号,但必须有起始位和终止位UART接口一般具有以下要求:数据位长度可变,可以有5,6,7或8个数据位终止位长度可变,可以有1,1.5或

14、2个停止位波特率可编程发送数据时,UART能根据设定产生校验位接收数据时,UART能根据校验位判断数据是否出错,2023/9/10,27,实现方案硬件,MCBSP是同步串口,每个接口有7个引脚,除数据收发引脚DX、DR外,还包括发送时钟 CLKX、接收时钟CLKR、发送帧同步FSX、接收帧同步FSR和外部输入时钟CLKS,分别用于传输数据、时钟和帧同步信号应用时将BFSR和BDR连在一起与PC机串口的发送端(TXD)相连;BDX和PC机串口的接收端(RXD)相连,其余悬空添加TTL电平与EIA电平转换芯片MAX232,并采用分压方式实现TTL与CMOS电平之间的转换,2023/9/10,28,

15、2023/9/10,29,实现方案软件(1),实质:同步串口模拟异步串口设计一种方案使MCBSP能够检测和产生UART数据帧可以利用同步串口的时钟对UART数据帧进行采样,2023/9/10,30,实现方案软件(2),由于UART没有同步信号,因而不能保证同步串口的时钟与UART数据帧的起始位的上升沿或下降沿严格对齐,导致UART数据帧与同步串口间产生偏移同步串口时钟频率与UART数据帧的波特率不匹配也会产生偏移,2023/9/10,31,实现方案软件(3),为减少两种偏移造成的影响,可以采用过采样技术过采样是使用远大于奈奎斯特采样频率的频率对输入信号进行采样采样定理:如果信号是带限的,并且采

16、样频率高于信号带宽的一倍,那么,原来的连续信号可以从采样样本中完全重建出来过采样可以提高时域分辨力从而获得更好的时域波形过采样技术也有利于高速的SPI和低速的UART数据流相匹配,2023/9/10,32,2023/9/10,33,实现方案软件(4),过采样的采样速率可以有多种选择,由于采用的DSP的数据位数是16bit,为了便于处理数据可采用16倍UART收发数据频率进行过采样过采样频率实际上就是MCBSP的时钟频率,在采用的DSP中,该时钟频率可由DSP的主时钟分频获得,而分频系数可以设置MCBSP相应寄存器,2023/9/10,34,分频系数DIV计算方法 DIV=DSPCLK/(16*

17、baudrate)其中16*baudrate即为采样频率16的含义实际上是16 samples/bitbaudrate的单位是bit/s二者相乘表示每秒采样多少次,即采样频率DSPCLK为DSP工作时的主频举例:DSPCLK=50MHz,baudrate=19200bpsDIV=50M/(16*19200)=162.76实际分频系数可取162或163分频寄存器只有8位,故最大分频值是256,2023/9/10,35,实现方案软件(5),数据发送流程将待发送数据(含起始位0 x0000和终止位0 xffff)写入MCBSP缓存寄存器中启动MCBSP以过采样时钟为基准发送数据(发送“1”即0 xf

18、fff,发送“0”即0 x0000),2023/9/10,36,实现方案软件(6),数据接收接收过程要比发送过程复杂由于不知道数据何时到来,在接收数据的实际采样过程中,采样时钟的下降沿和起始位的数据沿之间不可能完全对齐DSP主频和波特率的16倍相除很有可能不是整数,导致比率偏差实际采样获得的数据,“0”不可能刚好是0 x0000,“1”也不可能刚好是0 xffff,在还原数据时应加以判断,2023/9/10,37,数据接收流程MCBSP口接收到异步串口数据帧时,BFSR会在收到起始位信息时产生帧同步信号,开始接收数据对接收的数据进行过采样,DMA将采得的数据存入缓存寄存器,读取一个完整的数据帧

19、后以中断形式通知DSPDSP调用中断处理程序从缓存寄存器中读出接收到的原始数据,并进行相应判断后还原接收数据,2023/9/10,38,实现方案软件(7),MCBSP相关寄存器简介MCBSP共有9个控制寄存器,分别为采样率设置寄存器SRGR1、SRGR2:主要设置串口时钟的来源(如内部CPU时钟)、分频系数DIV和采样时钟的工作方式串行端口控制寄存器SPCR1、SPCR2:主要设置串口的环回模式、接收中断和发送中断的触发方式等引脚控制寄存器PCR:主要设置串口引脚的复用方式、发送和接收的帧同步方式、帧同步有效电平以及采样时钟的有效模式(上升沿还是下降沿)接收控制寄存器RCR1、RCR2:主要设

20、置串口通信中接收数据的帧结构,包括帧长、相位、延迟和压缩模式发送控制寄存器XCR1、XCR2:主要设置串口通信中发送数据的帧结构,与RCR中的设置相对应,2023/9/10,39,MCBSP相关寄存器重点位的初始化,40,实现代码(1)初始化,void SerialInit(long lBaudRate)volatile int i;*(volatile int*)(SPSA_ADDR(0)=SPCR1_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0040;/接收中断模式为帧同步触发*(volatile int*)(SPSA_ADDR(0)=SPCR2_S

21、UBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0040;/发送中断模式为帧同步触发*(volatile int*)(SPSA_ADDR(0)=PCR_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0b0c;*(volatile int*)(SPSA_ADDR(0)=XCR1_SUBADDR;if(lBaudRate=19200|lBaudRate=9600)*(volatile int*)(SPSD_ADDR(0)=0 x00a0;/for 19200 or 9600 baudrate/发送字长为32bitselse*(vo

22、latile int*)(SPSD_ADDR(0)=0 x0040;/for 57600 or 38400 baudrate/发送字长为16bits*(volatile int*)(SPSA_ADDR(0)=XCR2_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0000;*(volatile int*)(SPSA_ADDR(0)=RCR1_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0940;/接收字长为16bits,接收帧长为10(1起始位+8数据位+1终止位)*(volatile int*)(SPSA_ADDR(0

23、)=RCR2_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0004;/忽略第一个字以后的接收帧同步信号,将起始位作为帧同步*(volatile int*)(SPSA_ADDR(0)=SRGR1_SUBADDR;if(lBaudRate=57600)/设置分频系数DIV,不同波特率对应不同分频系数*(volatile int*)(SPSD_ADDR(0)=0 x00ac;/for 57600 baudrateelse if(lBaudRate=115200)*(volatile int*)(SPSD_ADDR(0)=0 x0056;/for 115200 b

24、audrateelse*(volatile int*)(SPSD_ADDR(0)=0 x00ff;/for 38400 19200 9600 baudrate*(volatile int*)(SPSA_ADDR(0)=SRGR2_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x2000;/采样时钟由CPU时钟分频获得for(i=0;i RESET_LATENCY;i+);,41,实现代码(2)发送数据,void SerialWrite(int nXData,long lBaudRate)int I,nBitTemp;*(volatile int*)(SPSA_

25、ADDR(0)=SPCR1_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0080;/DX引脚使能*(volatile int*)(SPSA_ADDR(0)=SPCR2_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0041;/发送使能*(volatile int*)(DXR1_ADDR(0)=0 x0000;/DX寄存器内写入“0”,发送起始位while(*(volatile int*)(SPSD_ADDR(0),42,实现代码(2)接收数据,int SerialReceive()int nTemp10;int i,nB

26、itTemp;int nRXData=0;*(volatile int*)(SPSA_ADDR(0)=SPCR1_SUBADDR;*(volatile int*)(SPSD_ADDR(0)=0 x0001;/接收使能for(i=0;i 10;i+)while(*(volatile int*)(SPSD_ADDR(0),43,实现代码(2)解码还原函数,int BitDecode(int nRXBitData)int i;int nOneNum=0;int nTemp;for(i=6;i i);if(nTemp,2023/9/10,44,The end 结束,课程小论文要求,结合自己的科研实际完

27、成一篇与总线相关的小论文至少包含以下内容我正在从事的课题是“xxxxxx”,里面用到了xxx总线技术选取xxx总线的依据是系统的基本结构是,用来实现xxx总线,拟实现的技术指标是实现的细节,包括硬件、软件题目自拟,但必须包含选取的总线名称,副标题为学号、姓名字数在3000字左右,需打印提交时间:5月16日之前,二教中楼309,可集中后一起交,课程小论文要求,若暂时还未进入课题从下述总线中选取一种,完成一篇综述性文章,介绍该总线的基本原理、主要特性、应用范围,并列举至少一个应用实例,给出该应用实例的电路结构框图、工作原理、实现的功能和具体技术指标CANUSBRS232RS485I2CSPIModbusProfibus无线方面的总线协议,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号