打印

求助AT32F415 串口DMA接收问题?

[复制链接]
675|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tzd_311|  楼主 | 2023-3-27 09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助AT32F415串口DMA接收问题:我软件是采用串口空闲中断和串口DMA接收相配合,接收串口不定长数据,串口DMA接收中断采用的是传输完成中断,具体使用时发现如下情况:内存中开辟两个接收缓存区,每个缓存区大小256个字节,当每次接收数据小于256个字节时,利用串口接收空闲中断来切换接收缓存区并配置接收缓存区的DMA接收配置,重新开启DMA接收功能,这样接收完全没有问题,如果一次接收超过256个字节时,也没有问题,数据会放在两个接收缓存区中,这证明串口接收空闲中断和串口DMA传输完成中断都配置的都没问题。但如果接收的数据长度刚好是256个字节,问题就出现了:DMA传输完成中断会正常响应,但在DMA中断响应中切换接收缓存区,重新配置DMA参数后(和串口空闲中断中切换接收缓存区,配置DMA传输方式完全相同),此后,串口再也无法接收数据了。不知道是我的软件有问题,还是芯片本身的一个bug,希望高手能解答一下。有几个关键点再强调一下:
1、串口每次接收的数据小于接收缓存或者大于接收缓存256个字节时,接收完全都是正常的。
2、串口DMA中断采用的是传输完成中断,传输次数设置的是256个字节,当接收满256个字节时,DMA中断确实也能进入,DMA中设有断点,能够确定这一点。
3、DMA中断程序中,对接收缓存的切换、DMA传输参数的重新配置方法,和串口空闲中断中的处理方式完全一样。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

粉丝