什么时候应该使用 USART 而不是 UART?

电器工程 UART
2022-01-31 10:53:34

我想在我的 PIC18F4550 和我的 PC 之间进行通信,但是我是否应该使用 UART 或 USART 进行长距离通信时遇到了困难。什么时候使用一种比另一种更有利?

4个回答

出于您的目的,UART 和 USART 是一回事。UART 代表通用异步接收器/发送器USART 中的附加 S 代表同步这只是 Microchip 为模块提供的一点附加功能,使其在某些情况下更有用。该额外功能不适用于您的情况。

PC COM 端口只需要一个 UART 就可以与之通信。USART 可能以不同的方式使用这一事实与您无关,只是您可能有一些必须以正确方式设置的额外配置位。

简短答案:使用您的芯片拥有的任何一个

要全面检查这个问题,有必要对首字母缩略词进行解码:

通用同步接收发送器是您传统的“串行端口”。从某种意义上说,它是异步的,即只涉及一个信号——不传输时钟,而是接收器必须恢复时钟,通常是通过过采样。

相比之下,通用同步 A同步接收发送器一种更通用的设备,具有UART风格的异步模式,但也可以选择配置为在同步模式下运行,其中时钟与数据一起发送。根据功能,这可能包括与众所周知的同步串行格式的互操作,例如 SPI 或 I2S。

少数 MCU 可能同时提供这两种类型的外设。对于基本的异步串行需求,您可以选择其中任何一个。但是,您的选择可能会受到给定外围设备可以运行的引脚、系统中的其他需求等的影响。工厂 ROM 引导加载程序可能仅在某些外围设备上运行,而不在其他外围设备上运行。在缓冲区支持、字长、奇偶校验支持、关联控制信号等方面也可能存在差异。并且两者之间的软件接口可能完全不同。

对于您的微控制器,它们基本上是相同的。

USART 代表通用异步和同步接收器/发送器。UART 代表通用异步接收器/发送器。

异步数据传输将大部分时间用于此通信协议。同步数据传输很少使用,因为您有更好的同步通信协议,例如 SPI 和 I2C。

您的微控制器 (MCU) 中有一个通用同步/异步接收器/发送器 (USART)。该功能单元支持同步通信方式和异步通信方式。

在同步模式下,发送器 Tx 通过 CLOCK 线和 DATA 线连接到接收器 Rx。每个 CLOCK 周期,Tx 发送另一个 DATA 位,Rx 从 DATA 获取另一个位。传输时序由 CLOCK 控制,因此 Tx 和 Rx 都知道。因此,Tx 和 Rx 都可以使用比异步模式更高的比特率。

但是,需要两条线/连接器引脚而不是一个,并且时钟和数据之间的过度偏移或抖动会导致接收到损坏的数据。承载时钟和数据的线路驱动器和线路接收器内的时序必须紧密匹配,以减少这种偏差。接口和双线因素在更长的距离、长电缆和/或多个连接跳点上变得更加突出。

在异步模式下,发送器 Tx 通过数据线连接到接收器 Rx。每个定时位周期一次,Tx 在 DATA 上发送另一个位,Rx 从 DATA 中获取另一个位。传输时序由 Tx 和 Rx 中的频率分离振荡器控制,每个振荡器彼此都不知道,并且会略有不同。因此,最大可靠比特率低于同步模式。

在每个新字节的开始,Rx 使用起始 STOP-START 位转换来重新同步到输入位序列时序。这使得来自线路驱动器/接收器、电缆和连接器的延迟与位周期时序无关,尽管与位质量无关。每个通信信号只需要一根电线而不是两根,从而降低了电缆、连接器和线路驱动器/接收器的成本。

因此,这取决于您可以接受的成本、旅行的距离以及 Tx 和 Rx 的能力。您的 PC 可能仅在标准 COM 端口上支持异步模式,需要特殊端口(PCIe 或 USB,可能是 USB)用于同步模式。