rom*_*man 14 electronics serial-port
现代PC上rs232串口的潜在最大速度是多少?我知道规范说它是115200 bps.但我相信它会更快.是什么影响了rs232端口的速度?我相信它是石英谐振器,但我不确定.
Han*_*ant 14
这可以追溯到最初的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的差分信号.
这是所有古老的历史,并不再完全适用于现代硬件.基于像16550这样的UART芯片的真正串行硬件已经迅速消失,取而代之的是USB仿真器.哪个有自定义驱动程序来模拟串行端口.它们接受波特率选择,但只是忽略了USB总线本身,它只适用于插入设备的加密狗中的最后半英寸.无论驱动程序是否接受115200作为最大值是驱动程序实现细节,它们通常接受更高的值.
最大速度受 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 提供时钟,您也不能指望它能够以该速率可靠地接收数据。有开销。
| 归档时间: |
|
| 查看次数: |
41484 次 |
| 最近记录: |