[AT32F403/403A] 继续请教F403A I2S DMA设置问题

[复制链接]
932|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的配置代码
2.png

3.png

4.png

5.png


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

工程代码
F403A_CWDecode.rar (5.21 MB, 下载次数: 16)

 楼主| admvip 发表于 2021-3-29 22:24 | 显示全部楼层
音频采样率设置为11.025kHz,理论上采集一次左右声道数据的间隔时间是90us左右,可是Debug测量两次进入通道1传输完成中断的间隔时间为0.45us,基本上就是出来就马上进去了。不知是哪里的原因?
 楼主| admvip 发表于 2021-3-30 13:53 | 显示全部楼层
找到问题了,如图所示,DMA收发搞反了。
1.png

收发调个个,DMA传输正常了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

89

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部