14

现代 PC 上 rs232 串行端口的潜在最大速度是多少?我知道规范说它是 115200 bps。但我相信它可以更快。什么会影响 rs232 端口的速度?我相信它是石英谐振器,但我不确定。

4

3 回答 3

15

这可以追溯到最初的 IBM PC。设计它的工程师需要一种廉价的方法来产生稳定的频率。并转向当时广泛使用的晶体,用于美国的任何彩电。一种晶体,用于以 NTSC 电视标准的色同步频率运行振荡器电路。即 315/88 = 3.579545 兆赫兹。从那里,它首先通过一个可编程的分频器,你可以改变它来设置波特率。然后 UART 本身将其除以 16 以生成数据线的子采样时钟。

因此,您可以获得的最高波特率是将分频器设置为最小值 2。这会产生 3579545 / 2 / 16 = 111861 波特。理想波特率的 2.3% 误差。但足够接近,时钟速率不必精确。异步信号点,UART 中的 A,起始位总是重新同步接收器。

真正的RS-232 硬件以 115200 波特可靠运行是一项重大挑战。电气标准对噪声非常敏感,没有尝试消除感应噪声,也没有尝试创建阻抗匹配的传输线。9600 波特的最大推荐电缆长度仅为 50 英尺。在 115200 处,实际上只有非常短的电缆才能使用。要走得更远,您需要一种不同的方法,例如 RS-422 的差分信号。

这都是古老的历史,不再完全适用于现代硬件。基于 UART 芯片(如 16550)的真正串行硬件已迅速消失并被 USB 仿真器所取代。其中有一个自定义驱动程序来模拟串行端口。他们确实接受波特率选择,但只是忽略了 USB 总线本身,它仅适用于您插入设备的加密狗的最后半英寸。无论驱动程序是否接受 115200 作为最大值是驱动程序实现细节,它们通常接受更高的值。

于 2012-11-02T13:45:10.293 回答
4

最大速度受 UART 硬件规格限制。

我相信现代实现中的“经典”PC UART(16550)至少可以处理 1.5 Mbps。如果您使用基于 USB 的串行适配器,则不涉及 16550,并且限制由适配器中使用的特定芯片设置,当然。

我经常使用运行速度为 460,800 bps 的 RS232 链接和基于 USB 的适配器。

回应关于时钟的评论(需要注意的是:我是一名软件专家):异步串行通信不会将时钟(即那里的异步部分)与数据一起传输。相反,发射器和接收器应该事先就使用的比特率达成一致。

数据线上的起始位表示每个“字符”的开始(通常是一个字节,但带有开始/停止/奇偶校验位)。然后接收器开始对数据线进行采样以确定它是 0 还是 1。这种采样通常比实际比特率快至少16 倍,以确保其稳定。因此,对于我上面提到的以 460,800 bps 进行通信的 UART,接收器将以 7.4 MHz 左右的频率对 RX 信号进行采样。这意味着即使您使用原始频率f为实际 UART 计时,您也不能指望它以该速率可靠地接收数据。有开销。

于 2012-11-02T11:10:44.487 回答
2

是的,它可以以更高的速度运行,但主要的限制是环境,在嘈杂的环境中会有更多的损坏数据限制速度。另一个限制是设备之间的电缆长度,您可能需要添加中继器或其他设备来增强信号。

于 2012-11-02T11:15:37.917 回答