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

上传人:max****ui 文档编号:15150951 上传时间:2020-08-04 格式:PPT 页数:46 大小:1.62MB
收藏 版权申诉 举报 下载
总线数据传输中的UART技术.ppt_第1页
第1页 / 共46页
总线数据传输中的UART技术.ppt_第2页
第2页 / 共46页
总线数据传输中的UART技术.ppt_第3页
第3页 / 共46页
资源描述:

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

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

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

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

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

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

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

7、抑制了噪声干扰;但不同信号线间会通过公用地线产生干扰,2020/8/4,13,RS232C总线机械特性(1) RS-232-C总线的接口连接器采用DB-25插头和插座,其中阳性插头(DB-25-P)与数据终端设备DTE相连,阴性插座(DB-25-S)与数据通信设备DCE相连,2020/8/4,14,RS232C总线机械特性(2) 通常使用的RS-232-C接口信号只有9根引脚。最基本的三根线是发送数据线2、数据线3和信号地线5,一般近距离的计算机之间的通信使用这三条线就足够了 其余信号线通常在应用MODEM(调制解调器)或通信控制器进行远距离通信时才使用,2020/8/4,15,RS232C电

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

9、有MODEM设备的远距离通信线路 使用了最常用的5根信号线,提供了两个方向的数据线(发送和接收数据)和一对控制数据传输的握手线RTS和DSR,2020/8/4,18,RS232C总线的通信结构(2) 不用MODEM的直接通信线路 近距离通信时,即不通过电话线进行远距离通信时,则不需要使用DCE,而直接把DTE连接起来,称为零调制解调器连接,因为此时调制解调器已经退化成了一个线路交叉,2020/8/4,19,RS232C总线的通信结构(3) 最简单的RS232C数据通信,2020/8/4,20,2020/8/4,21,举例:基于MCU的软件UART,UART的优势 UART提供了一种简单的途径,

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

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

12、中上载数据或者向缓存中下载数据,然后返回继续执行其核心任务。,2020/8/4,24,软件UART并不是一直占用MCU 在启动一次发送或接收操作之后,串行UART(不论是软件还是硬件形式的UART)并不需要连续监控I/O线 在发送一个字符时,每个位周期,UART只需驱动一次发送信号线的状态,从起始位到8个数据位直到结束位依次设置每个位的电平 在接收一个字符时,UART在第一个下降沿开始工作,之后只需在每个位时隙的中央对接收线上的信号状态进行一次采样 同时,为了避免不必要地占用主应用过多的时间,软件UART应该由一些周期性的基于定时器的中断来激活。接收线上初始下降沿的检测需要利用一个边沿触发的外

13、部中断单独处理,2020/8/4,25,采用软件UART实现DSP与PC机之间的串口通信,DSP没有UART接口,GPIO数量也极少,但为了方便数据采集,通常具有多个MCBSP(Multi-Channel Buffered Serial Port,多通道缓冲串口)接口 MCBSP是同步串口,每个接口有7个引脚, 除数据收发引脚DX、DR外, 还包括发送时钟 CLKX、接收时钟CLKR、发送帧同步FSX、接收帧同步FSR和外部输入时钟CLKS,分别用于传输数据、时钟和帧同步信号,2020/8/4,26,UART数据帧结构,UART实质为异步串口,无同步信号,但必须有起始位和终止位 UART接口一

14、般具有以下要求: 数据位长度可变,可以有5,6,7或8个数据位 终止位长度可变,可以有1,1.5或2个停止位 波特率可编程 发送数据时,UART能根据设定产生校验位 接收数据时,UART能根据校验位判断数据是否出错,2020/8/4,27,实现方案硬件,MCBSP是同步串口,每个接口有7个引脚, 除数据收发引脚DX、DR外, 还包括发送时钟 CLKX、接收时钟CLKR、发送帧同步FSX、接收帧同步FSR和外部输入时钟CLKS,分别用于传输数据、时钟和帧同步信号 应用时将BFSR和BDR连在一起与PC机串口的发送端(TXD)相连;BDX和PC机串口的接收端(RXD)相连,其余悬空 添加TTL电平

15、与EIA电平转换芯片MAX232,并采用分压方式实现TTL与CMOS电平之间的转换,2020/8/4,28,2020/8/4,29,实现方案软件(1),实质:同步串口模拟异步串口 设计一种方案使MCBSP能够检测和产生UART数据帧 可以利用同步串口的时钟对UART数据帧进行采样,2020/8/4,30,实现方案软件(2),由于UART没有同步信号,因而不能保证同步串口的时钟与UART数据帧的起始位的上升沿或下降沿严格对齐,导致UART数据帧与同步串口间产生偏移 同步串口时钟频率与UART数据帧的波特率不匹配也会产生偏移,2020/8/4,31,实现方案软件(3),为减少两种偏移造成的影响,可

16、以采用过采样技术 过采样是使用远大于奈奎斯特采样频率的频率对输入信号进行采样 采样定理:如果信号是带限的,并且采样频率高于信号带宽的一倍,那么,原来的连续信号可以从采样样本中完全重建出来 过采样可以提高时域分辨力从而获得更好的时域波形 过采样技术也有利于高速的SPI和低速的UART数据流相匹配,2020/8/4,32,2020/8/4,33,实现方案软件(4),过采样的采样速率可以有多种选择,由于采用的DSP的数据位数是16bit,为了便于处理数据可采用16倍UART收发数据频率进行过采样 过采样频率实际上就是MCBSP的时钟频率,在采用的DSP中,该时钟频率可由DSP的主时钟分频获得,而分频

17、系数可以设置MCBSP相应寄存器,2020/8/4,34,分频系数DIV计算方法 DIV = DSPCLK / (16 * baudrate) 其中16*baudrate即为采样频率 16的含义实际上是16 samples/bit baudrate的单位是bit/s 二者相乘表示每秒采样多少次,即采样频率 DSPCLK为DSP工作时的主频 举例: DSPCLK=50MHz,baudrate=19200bps DIV = 50M / (16 * 19200) = 162.76 实际分频系数可取162或163 分频寄存器只有8位,故最大分频值是256,2020/8/4,35,实现方案软件(5),数

18、据发送流程 将待发送数据(含起始位0 x0000和终止位0 xffff)写入MCBSP缓存寄存器中 启动MCBSP以过采样时钟为基准发送数据(发送“1”即0 xffff,发送“0”即0 x0000),2020/8/4,36,实现方案软件(6),数据接收 接收过程要比发送过程复杂 由于不知道数据何时到来,在接收数据的实际采样过程中,采样时钟的下降沿和起始位的数据沿之间不可能完全对齐 DSP主频和波特率的16倍相除很有可能不是整数,导致比率偏差 实际采样获得的数据,“0”不可能刚好是0 x0000,“1”也不可能刚好是0 xffff,在还原数据时应加以判断,2020/8/4,37,数据接收流程 M

19、CBSP口接收到异步串口数据帧时,BFSR会在收到起始位信息时产生帧同步信号,开始接收数据 对接收的数据进行过采样,DMA将采得的数据存入缓存寄存器,读取一个完整的数据帧后以中断形式通知DSP DSP调用中断处理程序从缓存寄存器中读出接收到的原始数据,并进行相应判断后还原接收数据,2020/8/4,38,实现方案软件(7),MCBSP相关寄存器简介 MCBSP共有9个控制寄存器,分别为 采样率设置寄存器SRGR1、SRGR2:主要设置串口时钟的来源(如内部CPU时钟)、分频系数DIV和采样时钟的工作方式 串行端口控制寄存器SPCR1、SPCR2:主要设置串口的环回模式、接收中断和发送中断的触发

20、方式等 引脚控制寄存器PCR:主要设置串口引脚的复用方式、发送和接收的帧同步方式、帧同步有效电平以及采样时钟的有效模式(上升沿还是下降沿) 接收控制寄存器RCR1、RCR2:主要设置串口通信中接收数据的帧结构, 包括帧长、相位、延迟和压缩模式 发送控制寄存器XCR1、XCR2:主要设置串口通信中发送数据的帧结构, 与RCR中的设置相对应,2020/8/4,39,MCBSP相关寄存器重点位的初始化,40,实现代码(1)初始化,void SerialInit(long lBaudRate) volatile int i; *(volatile int*)(SPSA_ADDR(0) = SPCR1_

21、SUBADDR; *(volatile int*)(SPSD_ADDR(0) = 0 x0040; /接收中断模式为帧同步触发 *(volatile int*)(SPSA_ADDR(0) = SPCR2_SUBADDR; *(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

22、(lBaudRate = 19200 | lBaudRate = 9600) *(volatile int*)(SPSD_ADDR(0) = 0 x00a0;/for 19200 or 9600 baudrate /发送字长为32bits else *(volatile 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; *(vola

23、tile int*)(SPSA_ADDR(0) = RCR1_SUBADDR; *(volatile int*)(SPSD_ADDR(0) = 0 x0940;/接收字长为16bits,接收帧长为10(1起始位+8数据位+1终止位) *(volatile int*)(SPSA_ADDR(0) = RCR2_SUBADDR; *(volatile int*)(SPSD_ADDR(0) = 0 x0004;/忽略第一个字以后的接收帧同步信号,将起始位作为帧同步 *(volatile int*)(SPSA_ADDR(0) = SRGR1_SUBADDR; if(lBaudRate = 57600)/

24、设置分频系数DIV,不同波特率对应不同分频系数 *(volatile int*)(SPSD_ADDR(0) = 0 x00ac;/for 57600 baudrate else if(lBaudRate = 115200) *(volatile int*)(SPSD_ADDR(0) = 0 x0056;/for 115200 baudrate else *(volatile int*)(SPSD_ADDR(0) = 0 x00ff;/for 38400 19200 9600 baudrate *(volatile int*)(SPSA_ADDR(0) = SRGR2_SUBADDR; *(vo

25、latile 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_ADDR(0) = SPCR1_SUBADDR; *(volatile int*)(SPSD_ADDR(0) = 0 x0080;/DX引脚使能 *(volatile int*)(SPSA_ADDR(0) = SPCR2_S

26、UBADDR; *(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, nBitTemp; int nRXData = 0; *(volatile int*)(SPSA_ADDR(0) = SPCR1_SUBADDR; *(volatile int*)(SPSD

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

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!