yiyun1009 发表于 2021-6-27 13:06:43

Okmx6ul 自制底板音频驱动DMA不能中断响应

底板音频模块原理和开发板一样,同样的核心板在开发板播放音频正常,在我的底板就不行,调试发现DMA pending后没产生DMA中断,数据都到不了8960。
想问下底板的什么变动有可能导致音频驱动出现这种问题

whl 发表于 2021-6-28 10:32:00

你说的播放不正常,是什么现象啊,有没有什么打印信息

yiyun1009 发表于 2021-6-28 12:13:19

没有任何错误信息,现在就是sai总线没有产生dma请求导致dma缓冲一下就满了,然后应用程序就一直在wait

yiyun1009 发表于 2021-6-28 12:17:36

数据手册上说dma请求和bus clk 有关,sai的mclk好像是bus clk生成的,示波器看mclk引脚一直是高电平,这会导致sai不产生dma请求吗

whl 发表于 2021-6-28 15:06:10

yiyun1009 发表于 2021-6-28 12:17
数据手册上说dma请求和bus clk 有关,sai的mclk好像是bus clk生成的,示波器看mclk引脚一直是高电平,这会 ...

估计wm8960没有正常工作,正常情况下播放音频文件的时候mclk会有输出的,可以看一下wm8960的驱动有没有注册成功,还有i2c接的对不对,是通过i2c2来配置wm8960的

yiyun1009 发表于 2021-6-28 15:30:46

8960设置为slave模式,所有配置都正常,i2c通信没问题

yiyun1009 发表于 2021-6-28 15:33:37

整个流程中sai配置,i2c配置没有任何异常,但是sai就是没有dma请求,把sai中断打开也不产生中断,好郁闷

yiyun1009 发表于 2021-6-28 15:37:34

数据手册说只要sai fifo还有空位就一定会产生dma请求的啊,这应该和外设没关系的

whl 发表于 2021-6-28 16:01:57

yiyun1009 发表于 2021-6-28 15:37
数据手册说只要sai fifo还有空位就一定会产生dma请求的啊,这应该和外设没关系的

8960默认都是配置成主模式的,驱动目前不支持做从模式

yiyun1009 发表于 2021-6-28 16:30:13

soc 是主,8960是从

yiyun1009 发表于 2021-6-28 16:33:25

[   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]
查看完整版本: Okmx6ul 自制底板音频驱动DMA不能中断响应