大家好,又见面了,我是你们的朋友全栈
UART即通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),它是一种串行通信的物理接口形式。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。
一、UART硬件连接
UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。如下图:
引脚介绍:
-
- 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以异步方式发送数据,这意味着没有时钟信号将发送UART的位输出与接收UART的位采样同步。发送UART不是时钟信号,而是将开始和停止位添加到正在传输的数据包中。这些位定义数据包的开始和结束,因此接收UART知道何时开始读取位。
当接收UART检测到起始位时,它开始以称为波特率的特定频率读取输入位。波特率是数据传输速度的度量,以每秒位数(bps)表示。两个UART必须以大致相同的波特率运行。发送和接收UART之间的波特率只能相差10%左右。
两个UART还必须配置为发送和接收相同的数据包结构。
UART协议如下:
空闲位:
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从数据总线并行接收数据:
3.2 发送UART将起始位,奇偶校验位和停止位添加到数据帧:
3.3 整个数据包从发送UART串行发送到接收UART。接收UART以预先配置的波特率对数据线进行采样:
3.4 接收UART丢弃数据帧中的起始位,奇偶校验位和停止位:
3.5 接收UART将串行数据转换回并行并将其传输到接收端的数据总线:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。