内置com端口驱动程序的Windows是否支持非标准波特率? (实际上Windows是否有内置的com1& 2驱动程序?)
我问的原因是我无法与使用异常波特率5787的设备建立可靠的连接。 PC短暂谈话,然后似乎松开对话,然后再次得到它。一旦发送了长消息,它就会在另一端丢失,不久之后对话就会恢复。这听起来像经典的波特率不匹配。虽然距离足够近以至于有些数据可以通过,但还不够接近。
如果我使用便宜的PCI串行板,它可以正常工作。它只是使用我发现的串行连接的计算机无法正常工作。
答案 0 :(得分:6)
PC中的波特率由UART和晶体控制。晶振频率决定了串口产生的波特率。波特率通常由16分频计数器产生。标准PC的晶振频率通常为1.8432 MHz。除以16得到115200,这通常是com端口可以做的最大值。
UART内部是DLAB寄存器。这进一步划分了时钟。所以基本上,要获得5787波特,你所说的是将115200除以5787,这给你19.906687 ...... 它接近20你用20加载DLAB寄存器.115200 / 20给你5760.因此你可能从PC com端口获得5760波特率。这可能足以引起您所看到的问题。
答案 1 :(得分:1)
不,从5760到5787的差异远不足以解释任何问题。 UART从起始位的前沿识别字节的开始,然后在每个位的中间对数据进行采样。这意味着它们能够容忍波特率的误差,直到预测的中间值为边缘。这是一个完整字节的半位错误,因为每个字节都有一个停止位,因此每个字节有一个重新同步事件。十位半位(8位数据,一次启动,一次停止)为5%。 5760至5787的差异仅为安全区域内的0.5英里。