[更新] 几年前这个问题已经正确关闭了。然而,现在,这个问题可以在https://hardwarerecs.stackexchange.com/- 我只是想让其他人知道这个非常有用的网站。
我需要连接到使用 9 个数据位的系统总线上的串行端口。
有没有现成的卡可以处理这个问题?显然,它需要配备驱动软件,以便为character
串行总线上发送的每个数据返回 9 位(实际上是 16 位,其中 7 位未使用)。
答案1
有些 USART 可以每字符发送和接收 9 位数据(带或不带奇偶校验)。但我只见过它们作为微控制器或片上系统 (SoC) 的一部分的集成设备。我在 Atmel ARM 和 AVR SoC 上见过支持 9 位的 USART。典型的 8250 或 16550 型 UART(被认为是与 PC 兼容的设备)不支持 9 位字符,并且每个字符限制为 8 位。
但是,有各种解决方法可以使用 8 个数据位加上奇偶校验位来模拟 9 位字符。
一种传输方案是,在每次传输字节之前,根据第 9 个数据位和低 8 位的奇偶校验,重新配置 UART 奇偶校验(奇或偶)。接收 9 位字符有点棘手,因为每个字符的第 9 位必须从接收到的 8 位的奇偶校验加上是否存在奇偶错误为该字节。该方案应在设备驱动程序级别完成,并且可能会显著降低数据吞吐量。
附录
我正在寻找适用于 Windows 的原生 9 位卡 + 驱动程序。
那么从技术上讲这是一个购物问题,SU 不允许这样做。
然而我确实找到了你想要的东西(而且并不便宜):
Sealevel 7205e:低调 PCI Express RS-232、RS-422、RS-485 串行接口
7205e 小型 PCI Express 串行接口提供两个可配置的串行端口RS-232、RS-422 或 RS-485。每个串行端口均采用 16C950 UART 和 128 字节 Tx/Rx FIFO,可将数据速率提高到 921.6K bps,从而在数据密集型应用中实现可靠的高速通信。这款高性能 UART 包括 9 位帧支持并且与旧版 16550 应用程序完全软件兼容。此外,14.7456 振荡器和 UART 的灵活时钟预分频器支持最广泛的标准和非标准波特率。