首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串行端口rs232的最大潜在速度

串行端口rs232的最大潜在速度
EN

Stack Overflow用户
提问于 2012-11-02 19:07:38
回答 3查看 48.9K关注 0票数 14

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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作为最大值是驱动程序实现的详细信息,它们通常接受更高的值。

票数 15
EN

Stack Overflow用户

发布于 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计时,也不能期望它以该速率可靠地接收数据。这是开销。

票数 4
EN

Stack Overflow用户

发布于 2012-11-02 19:15:38

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13194017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档