C UART一直不工作
C UART not working all the time
我在将串行设备连接到我正在为其编写代码的嵌入式设备时遇到问题。
我正在编写的设备有两个串行端口,一个从我的笔记本电脑传入,一个传出到外部设备。
当我将两个终端连接到我的笔记本电脑并查看数据时,我得到了我期望的数据。
当我将笔记本电脑直接连接到外部设备时,我得到的正是我所期望的,并得到了响应。
当我将笔记本电脑和外部设备连接到我正在使用的嵌入式设备时,笔记本电脑向它发送数据,接收数据,然后将数据传递到外部设备。这按预期工作。
但是,外部设备没有发回响应。
如果我从嵌入式设备向外部设备发送数据,我发送的每条新消息都允许它发送原始回复。
我知道第一条消息正确通过,因为外部设备呼呼地响起,我知道它什么时候通过 运行 和逻辑分析器在 tx/rx 通信上发送响应并查看交通.
我认为嵌入式设备正在占用 rx 线并阻止其传输,但我在代码中看不到这怎么可能。另外,如果是这种情况,当我将两条线都插入我的笔记本电脑时,它不应该工作。
我还认为 DTR 没有设置得很高,但检查了一下,它似乎设置得很高。
有谁知道阻止设备响应的原因吗?
注意:当我说串行端口时,我在提到嵌入式设备时指的是 UART。所有设备都使用 DB9 连接器 运行 RS232。
编辑:笔记本电脑上的操作系统是Windows10。嵌入式设备是Atmega324p。
编辑 2:做了更多测试。好像有时有效有时无效。
我添加了一张图像,显示了几乎完美的响应信号。
蓝色部分是信号中不应存在的间隙。
最终找到了解决方案。
RTS 线通过嵌入式设备保持在 1.2v,而 Pc 保持在 5.2v。
将 RTS 线拉高至 5v 解决了这个问题。
我在将串行设备连接到我正在为其编写代码的嵌入式设备时遇到问题。
我正在编写的设备有两个串行端口,一个从我的笔记本电脑传入,一个传出到外部设备。
当我将两个终端连接到我的笔记本电脑并查看数据时,我得到了我期望的数据。
当我将笔记本电脑直接连接到外部设备时,我得到的正是我所期望的,并得到了响应。
当我将笔记本电脑和外部设备连接到我正在使用的嵌入式设备时,笔记本电脑向它发送数据,接收数据,然后将数据传递到外部设备。这按预期工作。
但是,外部设备没有发回响应。
如果我从嵌入式设备向外部设备发送数据,我发送的每条新消息都允许它发送原始回复。
我知道第一条消息正确通过,因为外部设备呼呼地响起,我知道它什么时候通过 运行 和逻辑分析器在 tx/rx 通信上发送响应并查看交通.
我认为嵌入式设备正在占用 rx 线并阻止其传输,但我在代码中看不到这怎么可能。另外,如果是这种情况,当我将两条线都插入我的笔记本电脑时,它不应该工作。
我还认为 DTR 没有设置得很高,但检查了一下,它似乎设置得很高。
有谁知道阻止设备响应的原因吗?
注意:当我说串行端口时,我在提到嵌入式设备时指的是 UART。所有设备都使用 DB9 连接器 运行 RS232。
编辑:笔记本电脑上的操作系统是Windows10。嵌入式设备是Atmega324p。
编辑 2:做了更多测试。好像有时有效有时无效。
我添加了一张图像,显示了几乎完美的响应信号。
蓝色部分是信号中不应存在的间隙。
最终找到了解决方案。
RTS 线通过嵌入式设备保持在 1.2v,而 Pc 保持在 5.2v。
将 RTS 线拉高至 5v 解决了这个问题。