[应用相关] STMF407xx I2S DMA循环buffer播放DMA中断不一致问题

[复制链接]
 楼主| onlycook 发表于 2022-5-13 09:00 | 显示全部楼层 |阅读模式
在项目中使用STM32F407XX芯片,通过I2S外接音频codec芯片WM8978。语音数据采用8000采样率数据格式16bit,双声道。STM32 I2S单向写入音频PCM数据,采用循环DMA双buffer写入,分包左右声道64字节(stero)一包一次写入,启动后包间产生时间间隔2ms(总数据量8000x16x2/8=32000字节),产生的DMA中断大部分是2ms间隔98%,但是偶发性有50us的中断产生,也有偶发性大于2.5ms间隔产生,10s统计总的播放数据量包多50包,大约1s有4~5包是出现时间不正常。理论应是500包但实际消耗504+包,导致采集样品和播放样本就匹配,出现吱吱噪音。请问循环DMA buffer是否应该就是播放采样率即业务需求的2ms间隔,中断是应该周期/频率是一致?如何排查?
地下縱情搖擺 发表于 2022-7-20 15:28 | 显示全部楼层
这个建议你还是咨询一下STFAE,能好一些

銀河 发表于 2022-7-20 15:53 | 显示全部楼层
正常这个中断间隔你得实际调试才行

晚晚皆安 发表于 2022-7-20 16:16 | 显示全部楼层
排查其实就用jlink调试一下,跟踪一下程序试试

可爱的白兔先生 发表于 2022-7-20 16:39 | 显示全部楼层
. 为啥会出现多包情况呢?按理来说不是丢包情况么

情和欲 发表于 2022-7-20 17:02 | 显示全部楼层
. 是不是DMA这块没调试好啊?

喜爱弄人 发表于 2022-7-20 17:24 | 显示全部楼层
. 没用过这个芯片,不过我觉得应该将中断周期调成一致才行

占得人间第一春 发表于 2022-7-20 17:47 | 显示全部楼层
DMA好像不需要这种间隔吧,收到就发出呗

岁月反驳 发表于 2022-7-20 18:08 | 显示全部楼层
DMA是不是有大小的,一次发送多少,自己规划一下就好

风吻过你的不羁 发表于 2022-7-20 18:30 | 显示全部楼层
I2S是不是有速率要求?速率大点是不是能好些

热爱童话世界 发表于 2022-7-20 18:53 | 显示全部楼层
感觉还是dma这块代码没调试好,但是我没啥好建议,毕竟没调试过这种项目,要是能上网上找个参考demo就好了。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

478

主题

1982

帖子

4

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

478

主题

1982

帖子

4

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