嵌入式爱好者

查看: 29774|回复: 10

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

[复制链接]

1

主题

8

帖子

13

积分

扫一扫,手机访问本帖
发表于 2021-6-27 13:06:43 | 显示全部楼层 |阅读模式
底板音频模块原理和开发板一样,同样的核心板在开发板播放音频正常,在我的底板就不行,调试发现DMA pending后没产生DMA中断,数据都到不了8960。
想问下底板的什么变动有可能导致音频驱动出现这种问题
回复

使用道具 举报

0

主题

41

帖子

221

积分

i.MX6Q通行证i.MX6UL通行证RK3588通行证FCU11xx通行证

发表于 2021-6-28 10:32:00 | 显示全部楼层
你说的播放不正常,是什么现象啊,有没有什么打印信息
点评回复 支持 反对

使用道具 举报

1

主题

8

帖子

13

积分

 楼主| 发表于 2021-6-28 12:13:19 来自手机 | 显示全部楼层
没有任何错误信息,现在就是sai总线没有产生dma请求导致dma缓冲一下就满了,然后应用程序就一直在wait
点评回复 支持 反对

使用道具 举报

1

主题

8

帖子

13

积分

 楼主| 发表于 2021-6-28 12:17:36 来自手机 | 显示全部楼层
数据手册上说dma请求和bus clk 有关,sai的mclk好像是bus clk生成的,示波器看mclk引脚一直是高电平,这会导致sai不产生dma请求吗

点评

whl
估计wm8960没有正常工作,正常情况下播放音频文件的时候mclk会有输出的,可以看一下wm8960的驱动有没有注册成功,还有i2c接的对不对,是通过i2c2来配置wm8960的  详情 回复 发表于 2021-6-28 15:06
点评回复 支持 反对

使用道具 举报

0

主题

41

帖子

221

积分

i.MX6Q通行证i.MX6UL通行证RK3588通行证FCU11xx通行证

发表于 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的
点评回复 支持 反对

使用道具 举报

1

主题

8

帖子

13

积分

 楼主| 发表于 2021-6-28 15:30:46 来自手机 | 显示全部楼层
8960设置为slave模式,所有配置都正常,i2c通信没问题
点评回复 支持 反对

使用道具 举报

1

主题

8

帖子

13

积分

 楼主| 发表于 2021-6-28 15:33:37 来自手机 | 显示全部楼层
整个流程中sai配置,i2c配置没有任何异常,但是sai就是没有dma请求,把sai中断打开也不产生中断,好郁闷
点评回复 支持 反对

使用道具 举报

1

主题

8

帖子

13

积分

 楼主| 发表于 2021-6-28 15:37:34 来自手机 | 显示全部楼层
数据手册说只要sai fifo还有空位就一定会产生dma请求的啊,这应该和外设没关系的

点评

whl
8960默认都是配置成主模式的,驱动目前不支持做从模式  详情 回复 发表于 2021-6-28 16:01
点评回复 支持 反对

使用道具 举报

0

主题

41

帖子

221

积分

i.MX6Q通行证i.MX6UL通行证RK3588通行证FCU11xx通行证

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

8960默认都是配置成主模式的,驱动目前不支持做从模式
点评回复 支持 反对

使用道具 举报

1

主题

8

帖子

13

积分

 楼主| 发表于 2021-6-28 16:30:13 | 显示全部楼层
soc 是主,8960是从
点评回复 支持 反对

使用道具 举报

1

主题

8

帖子

13

积分

 楼主| 发表于 2021-6-28 16:33:25 | 显示全部楼层
[   32.269233] [531] 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[1:0]                   10                Audio Data Word Length                                       Audio Inte**ce  
                                                                          00 = 16 bits                                                  Control  

                                                                          01 = 20 bits  

                                                                           10 = 24 bits  

                                                                           11 = 32 bits (see Note)
点评回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-4-27 03:12

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表