打印

单片机的UART通信

[复制链接]
286|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LOVEEVER|  楼主 | 2023-12-16 16:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
UART代表通用异步接收器/发送器也称为串口通讯,它不像SPI和I2C这样的通信协议,而是微控制器中的物理电路或独立的IC。UART的主要目的是发送和接收串行数据,其最好的优点是它仅使用两条线在设备之间传输数据。UART的原理很容易理解,但是如果您还没有阅读SPI 通讯协议,那可能是一个不错的起点。

UART通信
在UART通信中,两个UART直接相互通信。发送UART将控制设备(如CPU)的并行数据转换为串行形式,以串行方式将其发送到接收UART。只需要两条线即可在两个UART之间传输数据,数据从发送UART的Tx引脚流到接收UART的Rx引脚:


使用特权

评论回复
沙发
LOVEEVER|  楼主 | 2023-12-16 16:15 | 只看该作者
UART属于异步通讯,这意味着没有时钟信号,取而代之的是在数据包中添加开始和停止位。这些位定义了数据包的开始和结束,因此接收UART知道何时读取这些数据。

当接收UART检测到起始位时,它将以特定波特率的频率读取。波特率是数据传输速度的度量,以每秒比特数(bps)表示。两个UART必须以大约相同的波特率工作,发送和接收UART之间的波特率只能相差约10%。


使用特权

评论回复
板凳
LOVEEVER|  楼主 | 2023-12-16 16:16 | 只看该作者
工作原理

发送UART从数据总线获取并行数据后,它会添加一个起始位,一个奇偶校验位和一个停止位来组成数据包并从Tx引脚上逐位串行输出,接收UART在其Rx引脚上逐位读取数据包。



UART数据包含有1个起始位,5至9个数据位(取决于UART),一个可选的奇偶校验位以及1个或2个停止位:



起始位:

UART数据传输线通常在不传输数据时保持在高电压电平。开始传输时发送UART在一个时钟周期内将传输线从高电平拉低到低电平,当接收UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位。

数据帧:

数据帧内包含正在传输的实际数据。如果使用奇偶校验位,则可以是5位,最多8位。如果不使用奇偶校验位,则数据帧的长度可以为9位。

校验位:

奇偶校验位是接收UART判断传输期间是否有任何数据更改的方式。接收UART读取数据帧后,它将对值为1的位数进行计数,并检查总数是偶数还是奇数,是否与数据相匹配。

停止位:

为了向数据包的结尾发出信号,发送UART将数据传输线从低电压驱动到高电压至少持续两位时间。

使用特权

评论回复
地板
LOVEEVER|  楼主 | 2023-12-16 16:19 | 只看该作者
传输步骤

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


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



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



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



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



优劣

没有任何通信协议是完美的,但是UART非常擅长于其工作。以下是一些利弊,可帮助您确定它们是否适合您的项目需求:

优点

仅使用两根电线

无需时钟信号

具有奇偶校验位以允许进行错误检查

只要双方都设置好数据包的结构

有据可查并得到广泛使用的方法

缺点

数据帧的大小最大为9位

不支持多个从属系统或多个主系统

每个UART的波特率必须在彼此的10%之内

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

171

主题

1398

帖子

4

粉丝