UART 对于数字设备之间的串行通信至关重要。具有特定起始位、数据位和停止位的异步操作根据芯片及其技术发展,UART 有不同的类型。ESP32 和 MT3620 等现代开发板允许高级 UART 配置
多年来,串行通信技术取得了长足的发展,但在数字电子领域,历史最悠久、至今仍至关重要的标准之一仍然是 UART。该组件的英文全称是 通用异步收发器,是允许两个设备之间进行数据传输和接收而无需共享时钟信号的关键。
在本文中,我们将深入探讨 UART 的概念、它的内部工作原理、它允许的配置、有哪些类型,以及如何在现代系统(例如 ESP32 或适用于 Azure Sphere 的微控制器)中使用。您还将了解它在硬件演进中的历史作用,以及如何检测已安装的 UART 的确切类型。
什么是 UART?UART 是一个 专用于异步数据传输的硬件组件它负责将并行数据(例如来自微控制器或 PC 总线的数据)转换为串行数据流,并通过通信线路发送,反之亦然。要了解更多关于 UART 端口工作原理的信息,您可以查阅 TCP 协议是什么?.
该协议以其简单性和广泛采用而闻名。与 I2C 或 SPI 等其他协议不同, UART不需要额外的时钟信号 同步信息的发送,从而简化了其在许多平台上的实现。
UART协议的基本操作UART 的操作基于 预定义的帧结构 这使得设备能够识别每条传输消息的不同元素。每帧包括:
起始位: 表示传输的开始。它被检测为从高(空闲)电压电平到低电压电平的转换。数据位: 通常为 5 到 9 位,但最常见的是 7 位或 8 位。通常从最低有效位 (LSB) 开始传输。奇偶校验位(可选): 它充当错误检测机制。停止位: 标记帧结束的一或两位。这通过通道返回高电平来表示。传输线默认保持高电平。如果在没有起始位的情况下保持低电平,则表示线路出现故障或损坏。
字符传输示例为了更好地理解信息是如何编码的,我们以字符 'S' 以 7 位 ASCII 码表示。其二进制值为 1010011UART 首先反转顺序(先发送最低有效位),将其保留为 1100101。在此序列的开头添加一个起始位 (0),并在结尾添加一个或两个停止位 (1)。
UART类型和历史演变自个人电脑诞生以来,人们开发了众多 UART 芯片,并且每一款都比上一款更先进。其中最值得注意的包括:
NS 8250: 首次出现在原始 IBM PC 上,但 BIOS 中的错误已得到纠正。NS 8250A/B: 后续版本与旧 BIOS 的兼容性有所不同。NS 16450: 它在 AT PC 上很流行,允许高达 9600 bps 的更高速度。NS 16550: 它包含 16 字节 FIFO 缓冲区,非常适合高速运行。NS 16550A: 它改进了前代产品的问题并支持高达 115200 bps 的速度。16650月16750日: 通过扩展缓冲区,他们甚至可以支持 56 Kbps 或更高。现在许多主板将 UART 直接集成到芯片组中,同时仍保持与 16550 系列等经典芯片的兼容性。要深入了解与 UART 通信相关的操作系统的历史,请参阅 Windows 95 的历史.
UART 中的可能配置除了位结构之外,UART还允许您配置多个影响传输的参数:
波特率: 常见值如9600、19200、38400、115200等,最高可达2Mbps。数据位数: 5 至 8 位之间。礼品部分: 1或2。帕里达: 无、偶数或奇数。流感控制: RTS/CTS(硬件)、XON/XOFF(软件)或无。外部信号和其他接口电平UART 本身通常不处理来自外部的信号电平。为此, 转换芯片 使信号适应 RS-232、RS-422 或 RS-485 等标准。甚至无线媒体, 蓝牙或红外线或光缆或射频。
在 ESP32 上使用 UARTESP32 微控制器在物联网项目中非常受欢迎,其变体包括 三个 UART 端口(UART0、UART1 和 UART2),具体取决于型号。与 Arduino 不同,这些端口可以自由地重新分配给其他引脚,这得益于它们的 内部多路复用器。有关编程和配置的更多详细信息,请参阅 如何在 Raspberry Pi 5 上安装和运行 CasaOS.
例如,UART1 默认配置在闪存使用的引脚上,因此 如果我们想使用它,就必须改变引脚UART2 也发生了类似的事情,它没有预先分配的引脚,必须手动配置。
在 Arduino 环境中,ESP32 使用类 Serial, Serial1 y Serial2 处理 UART 端口,但实际上用类手动定义它们更方便 HardwareSerial完整的示例请见 SimulIDE Python实用教程.
HardwareSerial MySerial(1);
const int MySerialRX = 16;
const int MySerialTX = 17;
void setup() {
MySerial.begin(115200, SERIAL_8N1, MySerialRX, MySerialTX);
}
Azure Sphere 和 MT3620 上的 UART在生态系统中 Azure Sphere,还包括用于串行通信的 UART。MT3620 设备是最常见的平台之一,允许连接到从应用程序清单配置的 UART。有关其功能的更多技术细节,请参阅 什么是 Symbian?.
在此背景下,UART 的一些显著特点包括:
支持波特率从 1200 到 2.000.000可定制的数据位、奇偶校验位和停止位设置硬件接收缓冲区最大可达32字节使用 POSIX 函数进行读/写UART 端口测试和诊断为了确保 UART 端口正常工作, 环回测试连接器 模拟从外部设备接收数据。此方法依赖于引脚桥接,将 TX 输出镜像到 RX 输入。为了验证兼容性,请参阅 什么是 XAMPP?.
例如,对于 DB9 连接器:
引脚 2 (RX) → 引脚 3 (TX)引脚 4 (DTR) → 引脚 6 (DSR) 和引脚 1 (CD)引脚 7 (RTS) → 引脚 8 (CTS)此外,像这样的程序 MS-DOS 中的 msd.exe 或 Windows 诊断工具允许您识别安装的 UART 类型、其速度和其他基本参数。
UART 仍然是一项广泛应用且用途广泛的技术,无论在开发还是生产环境中,都能实现可靠而简单的通信。正确的帧配置、选择合适的引脚以及了解每种 UART 型号的局限性,对于确保通信系统稳健高效至关重要。
什么是 Subsonic Stream?学习如何创建自己的媒体服务器。
万用表精通工业和家用软件、开发和应用的专家。我们乐于充分利用市面上所有软件、程序、应用、工具和操作系统的潜力。