打印
[应用相关]

STMF407xx I2S DMA循环buffer播放DMA中断不一致问题

[复制链接]
477|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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调试一下,跟踪一下程序试试

使用特权

评论回复
5
可爱的白兔先生| | 2022-7-20 16:39 | 只看该作者
. 为啥会出现多包情况呢?按理来说不是丢包情况么

使用特权

评论回复
6
情和欲| | 2022-7-20 17:02 | 只看该作者
. 是不是DMA这块没调试好啊?

使用特权

评论回复
7
喜爱弄人| | 2022-7-20 17:24 | 只看该作者
. 没用过这个芯片,不过我觉得应该将中断周期调成一致才行

使用特权

评论回复
8
占得人间第一春| | 2022-7-20 17:47 | 只看该作者
DMA好像不需要这种间隔吧,收到就发出呗

使用特权

评论回复
9
岁月反驳| | 2022-7-20 18:08 | 只看该作者
DMA是不是有大小的,一次发送多少,自己规划一下就好

使用特权

评论回复
10
风吻过你的不羁| | 2022-7-20 18:30 | 只看该作者
I2S是不是有速率要求?速率大点是不是能好些

使用特权

评论回复
11
热爱童话世界| | 2022-7-20 18:53 | 只看该作者
感觉还是dma这块代码没调试好,但是我没啥好建议,毕竟没调试过这种项目,要是能上网上找个参考demo就好了。


使用特权

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

本版积分规则

430

主题

1584

帖子

3

粉丝