CH32F103C8使用串口DMA问题

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

不知道是不是CH32F103的DMA有bug,望释疑。

您好,附件为一个串口空闲中断DMA收发例程,其中,也是使用DMA并在空闲中断接收,按照你的配置,每100ms发送接收数据,并没有出现你所说问题,如下图。你可以对比一下例程看看程序哪个地方配置是否有所不同,若有问题,可将问题发我邮箱(lzs@wch.cn)联系。

icon_rar.gifCH32F 串口空闲中断-DMA.zip

Snipaste_2021-12-02_11-16-32.jpg


只有登录才能回复,可以选择微信账号登录