在现代PC上,rs232串行端口的潜在最大速度是多少?我知道规范上说它是115200 bps。但我相信它可以更快。什么因素会影响rs232端口的速度?我相信这是石英谐振器,但我不确定。
发布于 2012-11-02 21:45:10
这可以追溯到最初的IBM PC。设计它的工程师需要一种廉价的方法来产生稳定的频率。并转向当时广泛使用的晶体,用于美国任何一台彩电中。一种晶体,用来驱动NTSC电视标准中color burst frequency的振荡器电路。即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作为最大值是驱动程序实现的详细信息,它们通常接受更高的值。
发布于 2012-11-02 19:10:44
最大速度受UART硬件规格的限制。
我相信modern implementations中的“经典”PC ( 16550)至少可以处理1.5兆位/秒。如果您使用基于USB的串行适配器,则不会涉及16550,而是由适配器中使用的特定芯片来设置限制。
我经常使用运行速度为460,800bps的RS232连接,并使用基于USB卡的适配器。
为了回应关于时钟的评论(有一个警告:我是一个软件人员):异步串行通信不会将时钟(这就是异步部分)与数据一起传输。相反,发射器和接收器应该事先就使用哪种比特率达成一致。
数据线上的起始位用信号通知每个“字符”的开始(通常是一个字节,但用开始/停止/奇偶校验位构成它)。然后接收器开始对数据线进行采样,以确定它是0还是1。这种采样通常比实际比特率快至少16倍,以确保它是稳定的。因此,对于像我上面提到的以460,800 MHz进行通信的通用异步收发器,接收器将以大约7.4 bps的速率对接收信号进行采样。这意味着,即使您以原始频率f为实际UART计时,也不能期望它以该速率可靠地接收数据。这是开销。
发布于 2012-11-02 19:15:38
是的,可以在更高的速度下运行,但主要的限制是环境,在嘈杂的环境中,会有更多的损坏数据限制速度。另一个限制是设备之间的电缆长度,您可能需要添加中继器或其他设备来增强信号。
https://stackoverflow.com/questions/13194017
复制相似问题