总线数据传输中的UART技术.ppt_第1页
总线数据传输中的UART技术.ppt_第2页
总线数据传输中的UART技术.ppt_第3页
总线数据传输中的UART技术.ppt_第4页
总线数据传输中的UART技术.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020 3 26 1 第四讲总线数据传输中的UART技术 主讲人 于海滨二教中楼309室shoreyhb UART UART UniversalAsynchronousReceiver Transmitter 通用异步接收 发送装置 实质是一种通用串行总线 用于异步通信可以实现全双工传输和接收在嵌入式设计中 UART通常用于嵌入式系统板与PC机之间通信 典型的例子就是串口 2020 3 26 2 典型UART设备的发送流程 首先将接收到的并行数据转换成串行数据 并串转换 传输时消息帧从一个低位起始位开始 后面是7个或8个数据位 一个可用的奇偶位和一个或几个高位停止位如果选择了奇偶 UART就在数据位后面加上奇偶位 奇偶位可用来帮助错误校验 2020 3 26 3 典型UART设备的接收流程 接收器发现开始位后 获知数据准备发送 做好接收数据准备在接收过程中 UART从消息帧中去掉起始位和结束位 对进来的字节进行奇偶校验 并将数据字节从串行转换成并行UART也产生额外的信号来指示发送和接收的状态 例如 如果产生一个奇偶错误 UART就置位奇偶标志 2020 3 26 4 UART的数据方向 数据传输可以首先从最低有效位 LSB 开始有些UART允许灵活选择先发送最低有效位或最高有效位 MSB 2020 3 26 5 UART的通信速度 微控制器中的UART传送数据的速度范围为每秒几百位到1 5Mb例如 嵌入在ElanSC520微控制器中的高速UART通信的速度可以高达1 1152Mbps UART波特率还受发送和接收线对距离 线长度 的影响市场上有只支持异步通信和同时支持异步与同步通信的两种硬件可用于UART前者就是UART名字本身的含义 在摩托罗拉微控制器中被称为串行通信接口 SCI Microchip微控制器中的通用同步异步收发器 USART 和在富士通微控制器中的UART是后者的两个典型例子 2020 3 26 6 UART的实现方式 芯片内部集成UART 直接选用具有UART接口的MCU例如单片机 ARM在MCU的并行总线上扩展UART芯片 如Ti的TL16C552 用硬件来实现异步数据传输优点 软件实现简单缺点 总线还要扩展其他设备 使目标系统复杂化利用MCU的通用I O或同步串口采用软件模拟异步时序 实现软件UART优点 硬件简单缺点 软件实现复杂 加大MCU负担 不适合通信数据量大的场合 2020 3 26 7 计算机中的UART UART是计算机中串行通信端口的关键部分在计算机中 UART相连于产生兼容RS232规范信号的电路当一个微控制器中的UART相连于PC时 它需要一个RS232驱动器来转换电平 2020 3 26 8 RS232C串行总线 电气连接方式 2020 3 26 9 TTL CMOS和RS232电平 TTL电平输出高电平 2 4V 输出低电平 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 2020 3 26 10 TTL CMOS和RS232电平之间的相互转换 TTL电平与CMOS电平之间的相互转换少量总线最简单方式 用两个电阻对电平分压多根总线同时需要转换 总线隔离器 2020 3 26 11 74LVT16245 TTL电平与RS232C电平之间的相互转换MAX232 2020 3 26 12 RS232C总线主要特点非平衡连接方式非平衡线缆通常是一个同轴电缆 在非平衡线缆中 电流通过导体流过去 并通过大地返回平衡连接通常是包含两个导体的双绞线或双股电缆 两根电线都连接到发生器 发送方 和接收方 并且它们都有相同的电流 但是电流是反方向的信道噪声会叠加在信号上并全部反映到接收器中 因而会加大通信误码率 但却最大限度降低了通信成本采用点对点通信只用一对收发设备完成通信工作 其驱动器负载为3 7k 公用地线所有信号线共用一条信号地线 在短距离通信时有效地抑制了噪声干扰 但不同信号线间会通过公用地线产生干扰 2020 3 26 13 RS232C总线机械特性 1 RS 232 C总线的接口连接器采用DB 25插头和插座 其中阳性插头 DB 25 P 与数据终端设备DTE相连 阴性插座 DB 25 S 与数据通信设备DCE相连 2020 3 26 14 RS232C总线机械特性 2 通常使用的RS 232 C接口信号只有9根引脚 最基本的三根线是发送数据线2 数据线3和信号地线5 一般近距离的计算机之间的通信使用这三条线就足够了其余信号线通常在应用MODEM 调制解调器 或通信控制器进行远距离通信时才使用 2020 3 26 15 RS232C电气参数引线信号状态RS 232C标准引线状态必须是以下三种之一 即SPACE MARK 空号 传号 或ON OFF 通 断 或逻辑0 逻辑1引线逻辑电平EIA电平短路抑制性能RS 232C的驱动电路必须能承受电缆中任何导线短路 而不至于损坏所连接的任何设备 2020 3 26 16 RS232C通信速率RS 232C标准的电气连接方式决定其通信速率不可能太高非平衡连接及共用地线都会使信号质量下降 通信速率也因此受到限制最高通信速率为115200bps由于受噪声的影响 RS 232C标准规定通信距离应小于15m 2020 3 26 17 RS232C总线的通信结构 1 具有MODEM设备的远距离通信线路使用了最常用的5根信号线 提供了两个方向的数据线 发送和接收数据 和一对控制数据传输的握手线RTS和DSR 2020 3 26 18 RS232C总线的通信结构 2 不用MODEM的直接通信线路近距离通信时 即不通过电话线进行远距离通信时 则不需要使用DCE 而直接把DTE连接起来 称为零调制解调器连接 因为此时调制解调器已经退化成了一个线路交叉 2020 3 26 19 RS232C总线的通信结构 3 最简单的RS232C数据通信 2020 3 26 20 2020 3 26 21 举例 基于MCU的软件UART UART的优势UART提供了一种简单的途径 使两个器件无需共享同一个时钟信号就能进行通信如果再加入一个合适的电平转换器 串口还能用在RS 232和RS 485网络中通信 或者与计算机的COM端口连接串口只需两根信号线 Rx和Tx 即可实现 而且只要两端器件都采用同样的位格式和波特率 那么它们无需其它任何对方的信息就可以成功传输数据 2020 3 26 22 目前 可提供功能完善的硬件串口的微控制器比比皆是 那么我们为什么还要费力地用微控制器的端口管脚来实现软件UART呢 尽管确实有许多微控制器都包含了硬件UART 但仍有许多没有包含这种接口 在系统设计中 选择微控制器时 可能很难找到一款各方面都很理想的产品即便一款微控制器包含了一个功能完善的硬件UART 由于某种原因 这对即将进行的设计来说可能仍然不够一款微控制器的硬件UART也许能够很好地满足应用的需求 但只是数量不够 2020 3 26 23 采用软件UART需要注意的问题软件UART会从主应用中占用多大带宽 因为采用硬件UART 或其它硬件串行通信接口 的一个主要原因首先就是将微控制器解放出来 使其无需费时去处理串口协议底层的细节像位采样 bit sampling 时隙计算以及输入输出移位这类繁琐的操作都在硬件中完成 然后UART通过中断或其它标志位的方式告诉主微控制器 它已经收到了一个字符或者已经发送完一个字符接着 微控制器就可以快速地从UART缓存中上载数据或者向缓存中下载数据 然后返回继续执行其核心任务 2020 3 26 24 软件UART并不是一直占用MCU在启动一次发送或接收操作之后 串行UART 不论是软件还是硬件形式的UART 并不需要连续监控I O线在发送一个字符时 每个位周期 UART只需驱动一次发送信号线的状态 从起始位到8个数据位直到结束位依次设置每个位的电平在接收一个字符时 UART在第一个下降沿开始工作 之后只需在每个位时隙的中央对接收线上的信号状态进行一次采样同时 为了避免不必要地占用主应用过多的时间 软件UART应该由一些周期性的基于定时器的中断来激活 接收线上初始下降沿的检测需要利用一个边沿触发的外部中断单独处理 2020 3 26 25 采用软件UART实现DSP与PC机之间的串口通信 DSP没有UART接口 GPIO数量也极少 但为了方便数据采集 通常具有多个MCBSP Multi ChannelBufferedSerialPort 多通道缓冲串口 接口MCBSP是同步串口 每个接口有7个引脚 除数据收发引脚DX DR外 还包括发送时钟CLKX 接收时钟CLKR 发送帧同步FSX 接收帧同步FSR和外部输入时钟CLKS 分别用于传输数据 时钟和帧同步信号 2020 3 26 26 UART数据帧结构 UART实质为异步串口 无同步信号 但必须有起始位和终止位UART接口一般具有以下要求 数据位长度可变 可以有5 6 7或8个数据位终止位长度可变 可以有1 1 5或2个停止位波特率可编程发送数据时 UART能根据设定产生校验位接收数据时 UART能根据校验位判断数据是否出错 2020 3 26 27 实现方案 硬件 MCBSP是同步串口 每个接口有7个引脚 除数据收发引脚DX DR外 还包括发送时钟CLKX 接收时钟CLKR 发送帧同步FSX 接收帧同步FSR和外部输入时钟CLKS 分别用于传输数据 时钟和帧同步信号应用时将BFSR和BDR连在一起与PC机串口的发送端 TXD 相连 BDX和PC机串口的接收端 RXD 相连 其余悬空添加TTL电平与EIA电平转换芯片MAX232 并采用分压方式实现TTL与CMOS电平之间的转换 2020 3 26 28 2020 3 26 29 实现方案 软件 1 实质 同步串口模拟异步串口设计一种方案使MCBSP能够检测和产生UART数据帧可以利用同步串口的时钟对UART数据帧进行采样 2020 3 26 30 实现方案 软件 2 由于UART没有同步信号 因而不能保证同步串口的时钟与UART数据帧的起始位的上升沿或下降沿严格对齐 导致UART数据帧与同步串口间产生偏移同步串口时钟频率与UART数据帧的波特率不匹配也会产生偏移 2020 3 26 31 实现方案 软件 3 为减少两种偏移造成的影响 可以采用过采样技术过采样是使用远大于奈奎斯特采样频率的频率对输入信号进行采样采样定理 如果信号是带限的 并且采样频率高于信号带宽的一倍 那么 原来的连续信号可以从采样样本中完全重建出来过采样可以提高时域分辨力从而获得更好的时域波形过采样技术也有利于高速的SPI和低速的UART数据流相匹配 2020 3 26 32 2020 3 26 33 实现方案 软件 4 过采样的采样速率可以有多种选择 由于采用的DSP的数据位数是16bit 为了便于处理数据可采用16倍UART收发数据频率进行过采样过采样频率实际上就是MCBSP的时钟频率 在采用的DSP中 该时钟频率可由DSP的主时钟分频获得 而分频系数可以设置MCBSP相应寄存器 2020 3 26 34 分频系数DIV计算方法DIV DSPCLK 16 baudrate 其中16 baudrate即为采样频率16的含义实际上是16samples bitbaudrate的单位是bit s二者相乘表示每秒采样多少次 即采样频率DSPCLK为DSP工作时的主频举例 DSPCLK 50MHz baudrate 19200bpsDIV 50M 16 19200 162 76实际分频系数可取162或163分频寄存器只有8位 故最大分频值是256 2020 3 26 35 实现方案 软件 5 数据发送流程将待发送数据 含起始位0 x0000和终止位0 xffff 写入MCBSP缓存寄存器中启动MCBSP以过采样时钟为基准发送数据 发送 1 即0 xffff 发送 0 即0 x0000 2020 3 26 36 实现方案 软件 6 数据接收接收过程要比发送过程复杂由于不知道数据何时到来 在接收数据的实际采样过程中 采样时钟的下降沿和起始位的数据沿之间不可能完全对齐DSP主频和波特率的16倍相除很有可能不是整数 导致比率偏差实际采样获得的数据 0 不可能刚好是0 x0000 1 也不可能刚好是0 xffff 在还原数据时应加以判断 2020 3 26 37 数据接收流程MCBSP口接收到异步串口数据帧时 BFSR会在收到起始位信息时产生帧同步信号 开始接收数据对接收的数据进行过采样 DMA将采得的数据存入缓存寄存器 读取一个完整的数据帧后以中断形式通知DSPDSP调用中断处理程序从缓存寄存器中读出接收到的原始数据 并进行相应判断后还原接收数据 2020 3 26 38 实现方案 软件 7 MCBSP相关寄存器简介MCBSP共有9个控制寄存器 分别为采样率设置寄存器SRGR1 SRGR2 主要设置串口时钟的来源 如内部CPU时钟 分频系数DIV和采样时钟的工作方式串行端口控制寄存器SPCR1 SPCR2 主要设置串口的环回模式 接收中断和发送中断的触发方式等引脚控制寄存器PCR 主要设置串口引脚的复用方式 发送和接收的帧同步方式 帧同步有效电平以及采样时钟的有效模式 上升沿还是下降沿 接收控制寄存器RCR1 RCR2 主要设置串口通信中接收数据的帧结构 包括帧长 相位 延迟和压缩模式发送控制寄存器XCR1 XCR2 主要设置串口通信中发送数据的帧结构 与RCR中的设置相对应 2020 3 26 39 MCBSP相关寄存器重点位的初始化 40 实现代码 1 初始化 voidSerialInit longlBaudRate volatileinti volatileint SPSA ADDR 0 SPCR1 SUBADDR volatileint SPSD ADDR 0 0 x0040 接收中断模式为帧同步触发 volatileint SPSA ADDR 0 SPCR2 SUBADDR volatileint SPSD ADDR 0 0 x0040 发送中断模式为帧同步触发 volatileint SPSA ADDR 0 PCR SUBADDR volatileint SPSD ADDR 0 0 x0b0c volatileint SPSA ADDR 0 XCR1 SUBADDR if lBaudRate 19200 lBaudRate 9600 volatileint SPSD ADDR 0 0 x00a0 for19200or9600baudrate 发送字长为32bitselse volatileint SPSD ADDR 0 0 x0040 for57600or38400baudrate 发送字长为16bits volatileint SPSA ADDR 0 XCR2 SUBADDR volatileint SPSD ADDR 0 0 x0000 volatileint SPSA ADDR 0 RCR1 SUBADDR volatileint SPSD ADDR 0 0 x0940 接收字长为16bits 接收帧长为10 1起始位 8数据位 1终止位 volatileint SPSA ADDR 0 RCR2 SUBADDR volatileint SPSD ADDR 0 0 x0004 忽略第一个字以后的接收帧同步信号 将起始位作为帧同步 volatileint SPSA ADDR 0 SRGR1 SUBADDR if lBaudRate 57600 设置分频系数DIV 不同波特率对应不同分频系数 volatileint SPSD ADDR 0 0 x00ac for57600baudrateelseif lBaudRate 115200 volatileint SPSD ADDR 0 0 x0056 for115200baudrateelse volatileint SPSD ADDR 0 0 x00ff for38400192009600baudrate volatileint SPSA ADDR 0 SRGR2 SUBADDR volatileint SPSD ADDR 0 0 x2000 采样时钟由CPU时钟分频获得for i 0 i RESET LATENCY i 41 实现代码 2 发送数据 voidSerialWrite intnXData longlBaudRate intI nBitTemp volatileint SPSA ADDR 0 SPCR1 SUBADDR volatileint SPSD ADDR 0 0 x0080 DX引脚使能 volatilein

温馨提示

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

评论

0/150

提交评论