打印
[AT32F403/403A]

继续请教F403A I2S DMA设置问题

[复制链接]
713|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
admvip|  楼主 | 2021-3-29 21:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
上次根据版主的提示,参考例程,写了I2S DMA全双工的代码,配置为SPI2为主接收,I2S2_EXT为从发送,使能MCLK主时钟输出。
程序初始化后,MCLK主时钟已经有输出了,设置的弹性DMA通道,SPI2为DMA1通道1,I2S2_EXT为DMA1通道2,同时使能了通道1的传输完成中断。
程序运行后,可以进入通道1的传输完成中断函数,但是问题是不能清除中断标志,导致一直进入中断,造成假死机(其实就是不停地进出中断)。
Debug查看DMA的中断状态寄存器和中断标志清除寄存器,发现清除标志的代码运行了,但是两个寄存器的内容没有变化,导致中断标志清除无效。
还请版主给分析一下,看看问题出在哪里?


I2S的配置代码









Debug调试结果和通道1中断函数


工程代码
F403A_CWDecode.rar (5.21 MB)

使用特权

评论回复
沙发
admvip|  楼主 | 2021-3-29 22:24 | 只看该作者
音频采样率设置为11.025kHz,理论上采集一次左右声道数据的间隔时间是90us左右,可是Debug测量两次进入通道1传输完成中断的间隔时间为0.45us,基本上就是出来就马上进去了。不知是哪里的原因?

使用特权

评论回复
板凳
admvip|  楼主 | 2021-3-30 13:53 | 只看该作者
找到问题了,如图所示,DMA收发搞反了。


收发调个个,DMA传输正常了。

使用特权

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

本版积分规则

6

主题

87

帖子

1

粉丝