我在将串行设备连接到要为其编写代码的嵌入式设备时遇到问题。

我正在写的设备有两个串行端口,一个是笔记本电脑的输入端口,另一个是外部设备的输出端口。

当我将两个终端都连接到笔记本电脑并查看数据时,我得到的正是我期望的数据。

当我将笔记本电脑直接连接到外部设备时,我得到的正是预期的结果和响应。

当我将便携式计算机和外部设备连接到正在使用的嵌入式设备时,便携式计算机向其发送数据,接收数据,然后将其传递给外部设备。这按预期工作。

但是,外部设备不会发送回响应。

如果我从嵌入式设备向外部设备发送数据,则我发送的每条新消息都会允许其发送原始答复。

我知道第一条消息正确通过了,因为外部设备呼啸而过,而且我知道它何时通过在tx / rx通信上运行和逻辑分析器并查看流量来发送响应。

我认为嵌入式设备正在容纳rx线路并阻止其传输,但是我看不出代码中的可能性。同样,在这种情况下,当我将两根线都插入笔记本电脑时,它将不起作用。

我还认为DTR并未设置得很高,但是选中了它,它似乎设置得很高。

有谁知道阻止设备响应的原因?

注意:当我说串行端口时,我指的是嵌入式设备时的UART。所有设备都使用运行RS232的DB9连接器。

编辑:便携式计算机上的操作系统是Windows10。嵌入式设备是Atmega324p。

编辑2:做更多的测试。似乎有时它起作用,有时不起作用。

我添加了一张图像,显示了几乎完美的响应信号。
c - C UART一直不工作-LMLPHP

蓝色部分是信号中不应存在的间隙。

最佳答案

最终找到了解决方案。

通过嵌入式设备将RTS线保持在1.2v,而将PC保持在5.2v。

将RTS线拉至5v可解决此问题。

10-06 04:53