WithCoderWithCoderWithCoder

UART接口简介

    UART即通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),它是一种串行通信的物理接口形式。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。

    一、UART硬件连接

    UART有4个pin(VCC, GND, RX, TX), 用的TTL电平,  低电平为0(0V),高电平为1(3.3V或以上)。如下图:

    1-20112R22922405.png

    引脚介绍:

    • VCC:供电pin,一般是3.3v,在我们的板子上没有过电保护,这个pin一般不接更安全

    • GND:接地pin,有的时候rx接受数据有问题,就要接上这个pin,一般也可不接

    • RX:接收数据pin

    • TX:发送数据pin

    二、UART通信简介

    UART最好的一点是它只使用两根线就可以在设备之间传输数据。在UART通信中,两个UART直接相互通信。发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据。在两个UART之间传输数据只需要两根线。数据从发送UART的Tx引脚流向接收UART的Rx引脚:

    UART接口简介(图2)

    UART以异步方式发送数据,这意味着没有时钟信号将发送UART的位输出与接收UART的位采样同步。发送UART不是时钟信号,而是将开始和停止位添加到正在传输的数据包中。这些位定义数据包的开始和结束,因此接收UART知道何时开始读取位。

    当接收UART检测到起始位时,它开始以称为波特率的特定频率读取输入位。波特率是数据传输速度的度量,以每秒位数(bps)表示。两个UART必须以大致相同的波特率运行。发送和接收UART之间的波特率只能相差10%左右。

    两个UART还必须配置为发送和接收相同的数据包结构。

    UART协议如下:

    UART接口简介(图3)

    空闲位:

    UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平。

    起始位:

    开始进行数据传输时发送方要先发出一个低电平’0’来表示传输字符的开始。因为当UART数据传输线不传输数据时,它通常保持在高电压电平。为了开始数据传输,发送UART将传输线从高电平拉至低电平一个时钟周期。当接收UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位。

    数据位:

    起始位之后就是要传输的数据。如果使用奇偶校验位,则它可以是5位到8位长。如果不使用奇偶校验位,则数据帧可以是9位长,一般都是8位。在大多数情况下,数据首先以最低有效位发送。

    奇偶校验位:

    数据位传送完成后,要进行奇偶校验,校验位其实是调整个数,串口校验分几种方式:

    • 1.无校验(no parity)

    • 2.奇校验(odd parity):如果数据位中’1’的数目是偶数,则校验位为’1’,如果’1’的数目是奇数,校验位为’0’。

    • 3.偶校验(even parity):如果数据为中’1’的数目是偶数,则校验位为’0’,如果为奇数,校验位为’1’。

    • 4.mark parity:校验位始终为1

    • 5.space parity:校验位始终为0

    停止位:

    数据结束标志,可以是1位,1.5位,2位的高电平。为了通知传输数据包的结束,UART发送端会将数据传输线从低电压驱动至高电压至少两位持续时间。

    波特率:

    数据传输速率使用波特率来表示,单位bps(bits per second),常见的波特率9600bps,115200bps等等,其他标准的波特率是1200,2400,4800,19200,38400,57600。举个例子,如果串口波特率设置为9600bps,那么传输一个比特需要的时间是1/9600≈104.2us。

    三、UART传输步骤

    3.1 发送UART从数据总线并行接收数据:

    UART接口简介(图4)

    3.2 发送UART将起始位,奇偶校验位和停止位添加到数据帧:

    UART接口简介(图5)

    3.3 整个数据包从发送UART串行发送到接收UART。接收UART以预先配置的波特率对数据线进行采样:

    UART接口简介(图6)

    3.4 接收UART丢弃数据帧中的起始位,奇偶校验位和停止位:

    UART接口简介(图7)

    3.5 接收UART将串行数据转换回并行并将其传输到接收端的数据总线:

    UART接口简介(图8)

欢迎分享交流,转载请注明出处:WithCoder » UART接口简介