Okmx6ul 自制底板音频驱动DMA不能中断响应
底板音频模块原理和开发板一样,同样的核心板在开发板播放音频正常,在我的底板就不行,调试发现DMA pending后没产生DMA中断,数据都到不了8960。想问下底板的什么变动有可能导致音频驱动出现这种问题 你说的播放不正常,是什么现象啊,有没有什么打印信息 没有任何错误信息,现在就是sai总线没有产生dma请求导致dma缓冲一下就满了,然后应用程序就一直在wait 数据手册上说dma请求和bus clk 有关,sai的mclk好像是bus clk生成的,示波器看mclk引脚一直是高电平,这会导致sai不产生dma请求吗 yiyun1009 发表于 2021-6-28 12:17
数据手册上说dma请求和bus clk 有关,sai的mclk好像是bus clk生成的,示波器看mclk引脚一直是高电平,这会 ...
估计wm8960没有正常工作,正常情况下播放音频文件的时候mclk会有输出的,可以看一下wm8960的驱动有没有注册成功,还有i2c接的对不对,是通过i2c2来配置wm8960的 8960设置为slave模式,所有配置都正常,i2c通信没问题 整个流程中sai配置,i2c配置没有任何异常,但是sai就是没有dma请求,把sai中断打开也不产生中断,好郁闷 数据手册说只要sai fifo还有空位就一定会产生dma请求的啊,这应该和外设没关系的 yiyun1009 发表于 2021-6-28 15:37
数据手册说只要sai fifo还有空位就一定会产生dma请求的啊,这应该和外设没关系的
8960默认都是配置成主模式的,驱动目前不支持做从模式 soc 是主,8960是从 [ 32.269233] snd_soc_write:2296: wm8960 1-001a: write 7 = 42
这是我的输出
R7 (07h) 8 ALRSWAP 0 Left/Right ADC Channel Swap Audio Inte**ce
Audio 1 = Swap left and right ADC data in audio Control
Inte**ce inte**ce
0 = Output left and right data as normal
7 BCLKINV 0 BCLK invert bit (for master and slave modes) Audio Inte**ce
0 = BCLK not inverted Control
1 = BCLK inverted
6 MS 0 Master / Slave Mode Control Audio Inte**ce
0 = Enable slave mode Control
1 = Enable master mode
5 DLRSWAP 0 Left/Right DAC Channel Swap Audio Inte**ce
0 = Output left and right data as normal Control
1 = Swap left and right DAC data in audio
inte**ce
2
4 LRP 0 Right, left and I S modes – LRCLK polarity Audio Inte**ce
0 = normal LRCLK polarity Control
1 = invert LRCLK polarity
DSP Mode – mode A/B select
0 = MSB is available on 2nd BCLK rising edge
after LRC rising edge (mode A)
1 = MSB is available on 1st BCLK rising edge
after LRC rising edge (mode B)
3:2 WL 10 Audio Data Word Length Audio Inte**ce
00 = 16 bits Control
01 = 20 bits
10 = 24 bits
11 = 32 bits (see Note)
页:
[1]