RS485设备通讯数据收不全问题

问题遇到的现象和发生背景

设备A和设备B用485通信,A发数据给B,B能正确接收A发的数据,但A收不全B发的数据,但我从设备A的mcu的RX引脚接到USB转串口模块用PC监控A收到的数据,可以看到A设备芯片的RX引脚能全部正确收到B设备发来的数据,但在Keil中设置断点,只收到设置B发来的数据的后面部分,A和PC通过485通信没问题 ,B和PC通过485通信也没问题。且A和B都是同一个型号芯片 ,串口驱动代码用的同一份代码,波特率是9600 ,芯片用的是stm21f32f103C

有哪位朋友,遇到过这样的现象,最大可能是哪出了问题呢?

忘记结贴了,这个问题点已找到了。问题在于B设备是查询方式来发送数据,因为B设备中断处理时间较长,导致B设备在发送一帧数据时,字节之间会出现间隔时间超过3ms,因为A设备是采用DMA+Idle中断来接收数据。导致A设备认为是几帧数据,我用调试器看到只收到一部分数据,误以为接收不全。其实用逻辑分析仪看一下A设备的RX引脚,问题就找到了。谢谢。这位朋友

你好,博主
485通信里我记得是区分主从的,使用modbus协议通信,主机给从机发的请求数据和从机回复给主机的响应数据,我记得长度是不一样的,你把接受长度设置长一点,看看发送的字长和接收的字长,并对照modbus协议来诸位检查一下发送和接收的内容是否满足协议格式。并且还需要确认下使用的是modbus协议里的ASCII形式还是RTU形式。

img

img

img

先开始每次发送一个字节,如果接收正常的话,在增加发送的字节。看看发送多少数据之后会出现接收数据不全的问题。