C UART不能一直工作

时间:2017-11-15 00:34:53

标签: c serial-port embedded uart

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

我正在写的设备有两个串口,一台来自我的笔记本电脑,一台外接设备。

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

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

当我将笔记本电脑和外部设备连接到我正在处理的嵌入式设备时,笔记本电脑会向其发送数据,它会接收数据,然后将其传递给外部设备。这可以按预期工作。

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

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

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

我认为嵌入式设备正在保持rx线并阻止其传输,但我不知道代码中的可能性。此外,如果是这种情况,当我将两条线插入笔记本电脑时,它不应该工作。

我还认为DTR没有设置为高,但是检查了它并且它看起来设置得很高。

是否有人知道阻止设备响应的原因?

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

编辑:笔记本电脑上的操作系统是Windows 10.嵌入式设备是Atmega324p。

编辑2 :做了一些测试。它似乎有时会起作用,有时也不会。

我添加了一张图像,显示了几乎完美的响应信号。 Logic Analyser 1

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

1 个答案:

答案 0 :(得分:0)

找到解决方案。

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

将RTS线拉到5v解决了这个问题。