串口空闲中断和DMA接收惯导的数据问题
用串口空闲中断和DMA接收惯导的数据,固定59个字节,但是DMA收到的会超过59个字节,导致下一次的数据前面的数据和上一次数据在一起,下一次数据就错位了怎么回事呢?比如正常情况一帧是帧头5A,5A,数据,和校验,但是我收到一帧的是5A,5A,数据,和校验,5A, 5A,数据惯导发送波特率为230400bps,更新率200Hz,是不是发送太快了导致空闲中断异常呢 Dongray 发表于 2024-1-25 15:48
惯导发送波特率为230400bps,更新率200Hz,是不是发送太快了导致空闲中断异常呢
中断里面都做了什么? 看楼主的描述,是空闲中断没有正常触发吧,才导致连续接收了两帧 固定长度的话,直接用DMA完成中断就好, 加上定时器/串口空闲中断防止接收到不完整的数据。 应该是数据连包了,试试将空闲中断换成超时中断? 庄永 发表于 2024-1-25 22:33
中断里面都做了什么?
中断停止DMA传输,计算接收长度,将标志位置1 cryfcr 发表于 2024-1-26 09:41
应该是数据连包了,试试将空闲中断换成超时中断?
DMA接收没有时间的要求,超时中断的时间应该从什么地方决定呢
eric2013 发表于 2024-1-26 08:56
看楼主的描述,是空闲中断没有正常触发吧,才导致连续接收了两帧
嗯,会不会是发送的波特率太高导致的呢 Dongray 发表于 2024-1-26 11:09
中断停止DMA传输,计算接收长度,将标志位置1
有没有可能是空闲中断被挂起没有被及时处理,导致数据连包了 庄永 发表于 2024-1-26 11:55
有没有可能是空闲中断被挂起没有被及时处理,导致数据连包了
我试试先把数据处理了在接收下一次数据
Dongray 发表于 2024-1-26 11:12
嗯,会不会是发送的波特率太高导致的呢
有可能,我另外一个设备波特率是115200就没有这个问题 这点数据量和更新频率不至于导致空闲中断接收失败,每帧240字节,200HZ,接收,波特率921600我都试过没问题。发送端是不是DMA发送的 wenjian1 发表于 2024-1-26 17:14
这点数据量和更新频率不至于导致空闲中断接收失败,每帧240字节,200HZ,接收,波特率921600我都试过没问题 ...
发送端是惯性导航设备,没有说是什么方式给我发送的 敢情你的代码是不需要折包的,包就是根据空闲来拆的?
这样做在很多实际应用都会出问题的。 哈,别太怀疑惯导设备发送数据的时间间隔,用空闲+DMA接收陀螺2000Hz数据,没有问题
页:
[1]