【发布时间】:2018-01-25 10:45:16
【问题描述】:
我正在尝试捕获类似于 UART 通信的信号。
这个特定的信号由以下组成:
1 个起始位(低)
16 个数据位
1 个停止位(高)
通过测试,我发现信号约为 ~8-9μs/bit。这让我相信波特率大约是 115.2kbps。
我的第一个想法是尝试“手动”方法,并编写了一个小型 C 程序。虽然我无法在适当的时间对信号进行采样。
从这里开始,我决定寻找可以完成这项工作的库。我确实尝试过 boost 中的“termios”和“asio::serial_port”,但它们似乎无法接收 16 位字符。
我尝试配置 16 位接收器是不是太天真了? “16 位 UART”还有意义吗?
谢谢!
-nls
【问题讨论】:
-
大多数 UART 不支持 16 位数据 - 您可能需要在所使用的任何硬件上使用通用 I/O 线,并从头开始实现软件 UART。
-
也许使用简单的 uC 控制器开发板进行时间关键型转换。在这里,您应该能够在软件中实现您的 16 位 UART。更多信息请查看mikrocontroller.net/topic/85900
-
你可以通过 "bit-banging" 在 Arduino 上轻松地完成这类事情,参见arduino.cc/en/Reference/SoftwareSerial 和 arduiniana.org/libraries/newsoftserial 以及关于 SPI 的这个而不是 RS232,而是向您展示了这项技术。
-
我尝试使用带有 Atmega328 的 Arduino 板,但不确定端口操作是否足够快以达到 115.2kbps,并切换到 Raspberry Pi。我会更深入地阅读“bit-banging”。
标签: c++ c signal-processing uart