STM32/STM8技术william hill官网
直播中

王鑫

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

stm32串口怎么用DMA接收不定长数据?

STM32串口怎么用DMA接收不定长数据,求大神点播
1. 网上查到,空闲中断+DMA可以接收不定长数据,但是看了好多,只是知道空闲中断里面可以得到缓存器剩余数据量,从而可以求出已经接收的数据量。然后就没了,那么怎么实现不定长接收呢?
2. 缓存区并不能从头刷新,比如说,9个数据量的缓存,我传4个数,那么我下次传6个,这时候缓存器并不能从新从第一位开始刷新,而是接着存储,然后数据就乱了,所以并没有实现不定长接收。我想要不管传输多长字节都可以让缓存区从头开始缓存,这样并不知道怎么实现期待大神

3. 或者说我的思路是错的,DMA接收不定长数据应该用别的方式,有懂的大神帮忙说一下

回帖(1)

张敏

2018-8-21 13:47:51
DMA+空闲中断可以实现不定长数据接收。实现不定长接收原理是当进入空闲中断时(进入空闲中断即表示已经传输完成一帧数据),在空闲中断里关闭再重新开启DMA,这样DMA缓存即使没有满,也会重新开始,这样就实现不定长的接收了。在上面的空闲中断里读取每次接收到的数据并处理就可以了。有一点要注意:DMA的模式要设置为循环模式。
举报

更多回帖

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