当前位置: 代码迷 >> 单片机 >> 485通讯循环发5个不同帧,间隔1秒一帧一帧发,单步调试时各个帧收发正常,退出单步调试后就只收发其中一个帧
  详细解决方案

485通讯循环发5个不同帧,间隔1秒一帧一帧发,单步调试时各个帧收发正常,退出单步调试后就只收发其中一个帧

热度:385   发布时间:2016-04-28 14:41:11.0
485通信循环发5个不同帧,间隔1秒一帧一帧发,单步调试时各个帧收发正常,退出单步调试后就只收发其中一个帧
一芯片与我的stm32进行485通信,使用usart1,那块芯片作为主机,从第一帧到第五帧再到第一帧不断循环发送给我的stm32芯片,每个数据帧间隔1秒,在用jlink调试时我的stm32芯片上单步调试可以看到这5个帧都依次接收完成,然后我这边对每个数据帧进行响应,用串口调试工具在电脑上可以看到这几个帧收发都是好,但是一旦退出单步调试直接运行,串口上面就只看到第4个帧一直在收发,其他几个帧都没看见有发送的。现在找不到是哪里出现问题了,是作为主机的芯片有问题,还是我这边作为从机的芯片出现问题?
------解决思路----------------------
才那么点字节,你波特率是多少?
------解决思路----------------------
用串口调试助手或逻辑分析仪监听通信很容易就能看出是哪边的问题了
------解决思路----------------------
半双工你怎么控制的?
------解决思路----------------------
用示波器看一下,看看主机那边是否正常在发。如果是,就查你这边的问题。
------解决思路----------------------
不明觉历。
485通讯时,除非你切换到接收模式了,否则怎么可能不停的收发中断。。。
------解决思路----------------------
半双工模式吧。
------解决思路----------------------
要切换收发使能的
------解决思路----------------------
根据你描述的情况,大致推断是因为主机没有收到正确的响应,所以不断的重试第四帧。这样的结果可能是因为两种情况。
第一种,你的从机没能正确接受第四帧,需要返回一个错误代码给主机,让主机进行错误处理,这还是会出现主机不断尝试发送第四帧的情况。但是主机知道是哪种错误之后,更容易处理,消除堵塞。
第二种,从机的应答信息是错误的,检查一下从机有没有针对第四帧的应答,内容是否正确。

简要的概述下你主从机的工作逻辑,应答关系,更容易看出问题出在哪里。
  相关解决方案