FIFO缓冲区在Windows中的COM端口的作用

时间:2014-01-16 14:10:17

标签: windows serial-port buffer

这里的任何人都可以在Windows中解释FiFo Buffer检查(来自设备管理器的高级COM端口设置)的作用吗?

如何检查/取消选中FIFO缓冲区是否会影响从COM端口读取数据?

非常感谢您提供有用的回复!

1 个答案:

答案 0 :(得分:7)

IBM-PC设计中使用的原始UART芯片是8250。当接收器忙于接收下一个字节时,它可以只存储一个接收字节。这对操作系统的串行端口驱动程序的响应性提出了很高的要求,以响应“数据接收”中断。它必须足够快以在接收器覆盖之前读取该字节。不够快会导致溢出错误和无法挽回的数据丢失。高中断率也是有害的。

16550 UART chip对该设计进行了改进。它有一个更大的缓冲区,FIFO,让操作系统有更多的时间来清空缓冲区,然后才能发生溢出。串行端口驱动程序可以对其进行编程以在特定填充级别生成中断,从而降低中断速率。

但芯片设计与软件有同样的问题,原始16550在FIFO实现中存在错误。已在16550A中修复,软件版本为1.1。

问题是,司机无法判断机器是否有16550的错误版本或是好的版本。像这样的简单芯片没有GetVersion()等价物。因此它提供了一个属性页面,允许用户关闭FIFO支持,从而绕过错误。

今天你有错误版本的几率为零。不再需要关闭FIFO。