有哪些标准的 UART 速率?

电器工程 UART
2022-01-04 03:35:05

我知道 9600、19200、38400、57600、115200 和 1.8432 Mbaud,但没有其他的。为什么要使用这些值,是每次都只是翻倍还是发生了更复杂的事情(例如,38400 翻了两番不是 115200 波特?)

我问这个问题的原因是我正在设计一些可能必须与各种不同的波特率交互的东西。它将在 9600 初始化,然后切换到特定的波特率。但我不能支持任意速率,因为我使用的 dsPIC33F 不支持任意速率,因为它仅限于 16 位 BRG 递减计数器。在这方面,它与许多其他处理器类似。

4个回答

它始于很久以前的电传打字机——我认为是 75 波特。从那以后它几乎翻了一番,有几个分数 (x1.5) 倍数,例如 28,800,其中电话线调制解调器技术的限制不允许它翻倍。

标准晶体值来自这些早期的波特率,它们的可用性决定了未来的速率。例如,

7.3728MHz16=460,800baud7.3728MHz64=115,200baud.

大多数 UARTS 使用波特率的时钟,更现代的部件(例如 NXP LPC)具有小数分频器,以通过使用非二进制倍数获得更宽的范围。2n×16

其他常见标准是 31,250 (MIDI) 和 250K (DMX),两者都可能被选为 1MHz 等“循环”时钟的良好倍数。

RealTerm 是一个免费的 Windows 终端程序,在其 Baud 菜单中列出了这些 UART 速率:

110、150、300、1200、2400、4800、9600、19200、38400、57600、115200、230400、460800、921600

然而,这些实际上是每秒位数 (bps),而不是波特 - 见下文。

ASR-33 等 8 级电传打字机使用 110 波特。我不知道在哪里使用了 150 波特,但它是 75 波特的两倍,通常用于 5 级 TTY(连同 60 波特)。

300 bps 是 1960 年代第一个广泛使用的电话调制解调器的标准。每秒30个字符的终端同时出现。

在使用简单频移键控 (FSK) 的 300 bps/300 波特以上,bps 和波特(每秒的符号或音调)的数字不同。例如,1200 bps 调制解调器实际上以 600 波特运行,而 4800 bps 调制解调器以 1600 波特运行。请参阅本文中带宽下的表格不同之处在于,除了每秒使用一定数量的音调脉冲外,还采用了相移键控等方法,从相同的波特率中提取额外的带宽,从而得到越来越高的bps。(所以 56K 调制解调器实际上只能以 8000 波特率运行。)

如您所见,UART 速率列表基本上从 75 开始并不断翻倍(跳过 600),直到达到 38400,再乘以 1.5 得到 57600。56K bps 是模拟电话线的限制。更高的速率 115200 向上(再次从 57600 开始翻倍)用于硬接线连接。

正如 Mikeselectricstuff 所提到的,当调制解调器的速度当时无法翻倍但很少再使用时,14400 和 28800 bps 被引入为 1.5 x 9600 和 1.5 x 19200。

很长一段时间以来,使用 115,200 的因数进行通信是很常见的——要么是 38,400 的二次幂,要么是 57,600 或 115,200。大多数 PC 硬件都支持这些速率。一些 PC 硬件可以支持 230,400 或 460,800。请注意,许多嵌入式控制器喜欢的数据速率是它们自己时钟速度的约数,并且一些 USB 转串行芯片可以支持 3,000,000bps 的任何整数约数,因此 1,000,000bps 或 1,500,000bps 之类的速度可能会变得更常见设备通过 USB 芯片连接到 PC。

顺便说一句,另一个值得一提的速率:31,250bps 是用于标准 MIDI 的速率。

最初的 IBM PC 有一个 8250 UART。这需要一个 1.8432 MHZ 时钟并将其除以某个整数以生成其内部时钟,并且该时钟以 16 个周期运行到该位。

在除数寄存器中设置 1 得到 115,200,2 得到 57,600,3 得到 38,400,6 得到 19,200,等等。

最好的办法是使用 DSPIC 以 1.8432 MHz 的倍数运行的时钟。