admvip 发表于 2021-3-29 21:05

继续请教F403A I2S DMA设置问题

上次根据版主的提示,参考例程,写了I2S DMA全双工的代码,配置为SPI2为主接收,I2S2_EXT为从发送,使能MCLK主时钟输出。
程序初始化后,MCLK主时钟已经有输出了,设置的弹性DMA通道,SPI2为DMA1通道1,I2S2_EXT为DMA1通道2,同时使能了通道1的传输完成中断。
程序运行后,可以进入通道1的传输完成中断函数,但是问题是不能清除中断标志,导致一直进入中断,造成假死机(其实就是不停地进出中断)。
Debug查看DMA的中断状态寄存器和中断标志清除寄存器,发现清除标志的代码运行了,但是两个寄存器的内容没有变化,导致中断标志清除无效。
还请版主给分析一下,看看问题出在哪里?


I2S的配置代码









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


工程代码


admvip 发表于 2021-3-29 22:24

音频采样率设置为11.025kHz,理论上采集一次左右声道数据的间隔时间是90us左右,可是Debug测量两次进入通道1传输完成中断的间隔时间为0.45us,基本上就是出来就马上进去了。不知是哪里的原因?

admvip 发表于 2021-3-30 13:53

找到问题了,如图所示,DMA收发搞反了。


收发调个个,DMA传输正常了。
页: [1]
查看完整版本: 继续请教F403A I2S DMA设置问题