STM429,I2S双缓冲,无法进入DMA中断。

2019-07-20 21:44发布

音乐播放器实验,把这个实验移植到ucosIII下,不过不是读出来的音乐文件,
而是用sin函数产生正弦波数据,采样频率44100,I2S模式,DMA双缓冲。
但是启动后,任务工作工正常,只是一直不进入DMA中断,能帮忙看看吗?


DMA配置


111.png

DMA中断服务函数,判断哪个缓冲在使用,填充未使用的缓冲
222.png

DMA初始化
333.png

在任务代码中启动dma传输
444.png


启动DMA
555.png


工程源码
MorseDemoF4.rar (3.3 MB, 下载次数: 456) 2016-6-7 18:52 上传 点击文件名下载附件
工程源码




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
GGaFish
2019-07-21 02:35
这个dma双缓冲的代码问题我调试了将近两个月了。 从学习wav文件格式,i2s标准,双缓冲机制,搞到现在,这个不进中断的问题卡住我1个多月了, 感觉像是低级错误,但是自己看也看不出啥毛病, 用printf("%d",DMA_GetCurrDataCounter(DMA1_Stream4));显示的dma始终是缓冲区大小,应该是dma没有启动, 猜测是dma没有配置正确。 我现在接的外部器件是pcm1770扩展模块,模块是否正常工作还不清楚,但是I2S数据是单向的,应该不会影响stm32自身的dma工作。

一周热门 更多>