大家好,又见面了,我是你们的朋友全栈君。
很多工程师都知道UART和USART都是一样的,没有区别。但实际上,两者彼此不同,并且具有不同的属性。
这就是我在这里写一篇文章UART vs USART的原因。但在研究 UART 和 USART(UART 与 USART)之间的主要区别之前,我想先解释一下什么是异步和同步通信。
异步串行传输:
在异步通信中,发送方和接收方之间没有公共时钟。它广泛用于面向字节的传输,这意味着它一次可以发送 1 个字节或字符。与同步相比,异步通信速度较慢,并且还具有启动和停止位的开销。在异步通信中,每一帧都用开始和停止位进行包装。让我们看看异步通信的帧结构。
异步通信中的帧结构:
START 位: 每帧以一个 START 位开始,并且始终为低电平。
数据位数据包:数据位可以是 5 到 9 位数据包。通常我们使用 8 位数据包,总是在 START 位之后发送。
STOP 位:可以是一位或两位。它在数据位包之后发送以指示帧的结束。停止位始终为逻辑高。
在异步串行通信帧中,第一个 START 位后跟数据字节和最后一个 STOP 位形成一个 10 位帧。有时最后一位也用作奇偶校验位。
同步串行传输:
在同步通信中,时钟由发送方和接收方共享。我们可以在其中传输一个数据块,并且对于该数据块只有一个开始和停止位。这是同步通信开销较小的原因。
UART和USART之间的区别(UART与USART)
UART | USART |
---|---|
全称是Universal Asynchronous Receiver/Transmitter。 |
全称是Universal Synchronous Asynchronous Receiver/Transmitter。 |
没有与数据相关的输入时钟信号,因此接收器需要在开始接收之前知道发送器的波特率。 |
其中接收器不需要知道发送器的波特率。它来源于主控提供的时钟信号和数据线。 |
其中只需要数据线。 |
其中需要数据线和时钟线。 |
数据是按字符或逐字节传输的。 |
同步数据以块的形式传输。 |
UART 在微控制器内部生成其数据时钟,并通过使用起始位转换将该时钟与数据流同步。 |
在这种模式下,发送外设将生成一个时钟,接收外设可以从数据流中恢复,而无需提前知道波特率。 |
由于与 USART 相比,UART 中的起始位和停止位数据传输速率的开销较低。 |
使用外部时钟使 USART 的数据速率远高于标准 UART 的数据速率。 |
UART 很简单,仅提供其基本格式的几个选项,例如停止位的数量以及偶数或奇数奇偶校验。 |
USART 更复杂,可以生成与许多不同标准协议相对应的形式的数据,例如 IrDA、LIN、智能卡、RS-485 接口的驱动程序启用和 Modbus,仅举几例。 |
它不能像 USART 那样工作。 |
USART 可以像 UART 一样工作。 |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/144332.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...