WCH沁恒单片机
直播中

王英

7年用户 1321经验值
私信 关注
[问答]

CH32F103C8使用串口DMA出现接收粘包或者接收不全现象如何处理?

在启用串口DMA接收的协议帧的时候发现接收粘包或者接收不全现象。发送端100ms发送帧头0D帧尾0A的30字节数据,接收端使用串口空闲中断DMA方式收数据:1、接收端可能会收到0A 0D 开头的30字节数据,也就是上一帧的帧尾粘连到当前帧变成了帧头;2、接收端会收到上一帧更多粘连的当前帧;3、收30字节时会出现两次串口空闲中断,也就是第一次16字节第二次14字节(出现较少),在空闲中断服务函数中加上20msdelay粘包现象会有改善。
不知道是不是CH32F103的DMA有bug,望释疑。
  

回帖(1)

张丽雯

2022-5-25 10:46:07
您好,附件为一个串口空闲中断DMA收发例程,其中,也是使用DMA并在空闲中断接收,按照你的配置,每100ms发送接收数据,并没有出现你所说问题,如下图。你可以对比一下例程看看程序哪个地方配置是否有所不同

举报

更多回帖

发帖
×
20
完善资料,
赚取积分