STM32串口DMA接收一帧数据分段问题

需求:波特率19200,接收不定长的数据,有其他单片机按字节发送,但是一帧数据有1.7ms间隔。有上位机通过VS的串口接口发送,一帧数据有200ms间隔,最后两个byte都是crc校验。同一时间只会存在一种发送方式。

原方案:缓冲区长度128byte,接收数据8~33byte不等,1ms检查一次接收长度是否变化,若长度无变化则停止一帧的接收。

问题:接收其他单片机数据没问题,但是接收上位机数据会出现分段的情况,不完整的数据导致后面crc校验不通过。

解决:接收完数据后立即进行crc校验,不通过则累计长度,下次数据续接本次数据末尾,直至拼接数据crc校验通过或者总时间超过200ms。

可以看到转移数据后,缓冲区内存立马被DMA修改了
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值