帮助文档

FAQ


UART通信

<p>[TOC]</p> <h2>1、UART简介</h2> <p>UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信,如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d1b7f261d928d3f30384acc0bc00bae1&amp;amp;file=file.jpg" alt="" /></p> <h2>2、UART特性</h2> <p>UART接口不使用时钟信号来同步发送器和接收器设备,而是以异步方式传输数据。发送器根据其时钟信号生成的位流取代了时钟信号,接收器使用其内部时钟信号对输入数据进行采样。 同步点是通过两个设备的相同波特率(UART和大多数串行通信一样,发送和接收设备需要将波特率(波特率是指信息传输到信道的速率)设置为相同的值。对于串行端口,设定的波特率将用作每秒传输的最大位数)来管理的。 如果波特率不同,发送和接收数据的时序可能会受影响,导致数据处理过程出现不一致。允许的波特率差异最大值为10%,超过此值,位的时序就会脱节。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=902d3a6b9f2577032dcbd0462c11f0c1&amp;amp;file=file.webp" alt="" /> 下总结了关于UART必须了解的几点:</p> <table> <thead> <tr> <th style="text-align: left;"></th> <th style="text-align: left;"></th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">导线数量</td> <td style="text-align: left;">3根(TX、RX和GND)</td> </tr> <tr> <td style="text-align: left;">速度</td> <td style="text-align: left;">1200、2400、4800、9600、19200、38400、57600、115200等</td> </tr> <tr> <td style="text-align: left;">传输方式</td> <td style="text-align: left;">全双工异步</td> </tr> <tr> <td style="text-align: left;">最大主机数量</td> <td style="text-align: left;">1</td> </tr> <tr> <td style="text-align: left;">最大从机数量</td> <td style="text-align: left;">1</td> </tr> </tbody> </table> <h2>3、UART协议帧</h2> <p>在UART中,传输模式为数据包形式。数据包由起始位、数据帧、奇偶校验位和停止位组成。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7b3f8a5ee89ba17832ece97906d0d0ec&amp;amp;file=file.webp" alt="" /></p> <h3>3.1、起始位</h3> <p>当不传输数据时,UART数据传输线通常保持高电压电平。若要开始数据传输,发送UART会将传输线从高电平拉到低电平并保持1个时钟周期。</p> <p>当接收UART检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=aa712d45dbd2749f8ef7a5e194206d6d&amp;amp;file=file.webp" alt="" /></p> <h3>3.2、数据位</h3> <p>数据帧包含所传输的实际数据。如果使用奇偶校验位,数据帧长度可以是5位到8位。如果不使用奇偶校验位,数据帧长度可以是9位。</p> <p>在大多数情况下,数据以最低有效位优先方式发送。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ca14221fcf327a229b4f770e0da529df&amp;amp;file=file.webp" alt="" /></p> <h3>3.3、奇偶校验位</h3> <p>奇偶性描述数字是偶数还是奇数。通过奇偶校验位,接收UART判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。</p> <p>校验位可以配置成 1 位偶校验或 1 位奇校验或无校验位。</p> <p>接收UART读取数据帧后,将统计数值为1的位,检查总数是偶数还是奇数。如果奇偶校验位为0(偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数。如果奇偶校验位为1(奇数奇偶校验),则数据帧中的1或逻辑高位总计应为奇数。</p> <p>当奇偶校验位与数据匹配时,UART认为传输未出错。但是,如果奇偶校验位为0,而总和为奇数,或者奇偶校验位为1,而总和为偶数,则UART认为数据帧中的位已改变。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=918a613b56de8abd02ddf9c81728fb7e&amp;amp;file=file.webp" alt="" /></p> <h3>3.4、停止位</h3> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9ed2dedf3be90b5c75e14c8ec5600bd7&amp;amp;file=file.webp" alt="" /></p> <h2>4、UART通信步骤</h2> <p>第1步:数据从数据总线到发送器。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=60fe32ea77639d996b3daa5d06eaf46f&amp;amp;file=file.jpg" alt="" /> 第2步:发送UART将起始位、奇偶校验位和停止位添加到数据帧。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f581c48647a1fee447dc10f6fcaa64ec&amp;amp;file=file.webp" alt="" /> 第3步:从起始位到结束位,整个数据包以串行方式从发送器送至接收器。</p> <p>接收UART以预配置的波特率对数据线进行采样。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ad3434d5a8a6547bc7d6574973f3e9f2&amp;amp;file=file.webp" alt="" /> 第4步:接收器丢弃数据帧中的起始位、奇偶校验位和停止位。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0a8aa0861fecda668e29a9297054b45f&amp;amp;file=file.webp" alt="" /> 第5步:接收器将串行数据转换回并行数据,并将其传输到接收端的数据总线。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ab4d8bd71e442654b1cda34bbe02665d&amp;amp;file=file.jpg" alt="" /></p>

页面列表

ITEM_HTML