我在将串行设备连接到要为其编写代码的嵌入式设备时遇到问题。
我正在写的设备有两个串行端口,一个是笔记本电脑的输入端口,另一个是外部设备的输出端口。
当我将两个终端都连接到笔记本电脑并查看数据时,我得到的正是我期望的数据。
当我将笔记本电脑直接连接到外部设备时,我得到的正是预期的结果和响应。
当我将便携式计算机和外部设备连接到正在使用的嵌入式设备时,便携式计算机向其发送数据,接收数据,然后将其传递给外部设备。这按预期工作。
但是,外部设备不会发送回响应。
如果我从嵌入式设备向外部设备发送数据,则我发送的每条新消息都会允许其发送原始答复。
我知道第一条消息正确通过了,因为外部设备呼啸而过,而且我知道它何时通过在tx / rx通信上运行和逻辑分析器并查看流量来发送响应。
我认为嵌入式设备正在容纳rx线路并阻止其传输,但是我看不出代码中的可能性。同样,在这种情况下,当我将两根线都插入笔记本电脑时,它将不起作用。
我还认为DTR并未设置得很高,但是选中了它,它似乎设置得很高。
有谁知道阻止设备响应的原因?
注意:当我说串行端口时,我指的是嵌入式设备时的UART。所有设备都使用运行RS232的DB9连接器。
编辑:便携式计算机上的操作系统是Windows10。嵌入式设备是Atmega324p。
编辑2:做更多的测试。似乎有时它起作用,有时不起作用。
我添加了一张图像,显示了几乎完美的响应信号。
蓝色部分是信号中不应存在的间隙。
最佳答案
最终找到了解决方案。
通过嵌入式设备将RTS线保持在1.2v,而将PC保持在5.2v。
将RTS线拉至5v可解决此问题。