捕获信号

时间:2018-01-25 10:45:17

标签: c++ c signal-processing uart

我正在尝试像UART通信一样捕获信号。

此特定信号由以下内容组成:

1个起始位(低位)

16个数据位

1个停止位(高位)

通过测试,我发现信号约为~8-9μs/ bit。这让我相信波特率约为115.2kbps。

我的主意是尝试“手动”方法,并写了一个小C程序。虽然我无法在适当的时间对信号进行采样。

从这里开始,我决定寻找可以完成这项工作的图书馆。我确实从boost尝试了“termios”和“asio :: serial_port”,但那些似乎无法接收16位字符。

我是否天真试图配置16位接收器? “16位UART”是否有意义?

谢谢!

-nls

1 个答案:

答案 0 :(得分:4)

对于支持16位数据位配置的UART的概念没有任何根本性的错误,但我不知道有哪些。 8或9通常是限制。

如果您正在与仅支持该配置的设备进行通信(那种设备是什么类型的?),那么您唯一真正的选择就是位冲击,最好由专门用于此目的的MCU完成。无论您使用哪种库,您都不会在多任务操作系统上获得微秒级的用户空间计时。

编辑:请注意,可能或多或少地使用专用内核空间驱动程序进行位冲击。但这会使系统几乎无法使用。 UART存在的全部原因是因为CPU每隔几微秒轮询一行就有更好的事情。