UART串口通讯

UART串口通讯UART 代表通用异步接收器 发送器也称为串口通讯 它不像 SPI 和 I2C 这样的通信协议 而是微控制器中的物理电路或独立的 IC UART 的主要目的是发送和接收串行数据 其最好的优点是它仅使用两条线在设备之间传输数据 UART 的原理很容易理解 但是如果您还没有阅读 SPI 通讯协议 那可能是一个不错的起点 UART 通信在 UART 通信中 两个 UART 直接相互通信 发送 UART 将控制设备 如 CPU 的并行数据转换为串行形式 以串行方式将其发送到接收 UART 只需要两条线即可在两个 UART 之间

Image

UART代表通用异步接收器/发送器也称为串口通讯,它不像SPI和I2C这样的通信协议,而是微控制器中的物理电路或独立的IC。UART的主要目的是发送和接收串行数据,其最好的优点是它仅使用两条线在设备之间传输数据。UART的原理很容易理解,但是如果您还没有阅读SPI 通讯协议,那可能是一个不错的起点。

Image

UART通信 

Image

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

Image

UART属于异步通讯,这意味着没有时钟信号,取而代之的是在数据包中添加开始和停止位。这些位定义了数据包的开始和结束,因此接收UART知道何时读取这些数据。 

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

Image

工作原理

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

Image

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

Image

起始位

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

数据帧

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

校验位

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

停止位

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

传输步骤

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

Image

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

Image

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

Image

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

Image

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

Image

优劣

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

优点

  • 仅使用两根电线
  • 无需时钟信号
  • 具有奇偶校验位以允许进行错误检查
  • 只要双方都设置好数据包的结构
  • 有据可查并得到广泛使用的方法

缺点

  • 数据帧的大小最大为9位
  • 不支持多个从属系统或多个主系统
  • 每个UART的波特率必须在彼此的10%之内
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209760.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午8:28
下一篇 2026年3月19日 上午8:29


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号