This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/TAS6424L-Q1:Linux播放问题

Guru**** 2460850 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/757665/linux-tas6424l-q1-issues-with-linux-playback

部件号:TAS6424L-Q1
主题中讨论的其他部件:TAS6424

工具/软件:Linux

大家好,

使用6424 Amp播放时出现问题,因此出现了问题

我们在主板设计中使用6424来输出I2S/8ch TDM

接线对我来说正常,我可以看到示波器上的FSYNC和SCLK输入以及输入音频数据

但是播放时,耳机插孔中只能听到噼啪声

I2C转储播放时如下所示:(CH1上连接了耳机)

i2cdump -f -y 5 0x6a
未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 a b c d e f   0123456789abcdef
00:00 32 62 46 00 CF CF CF CF CF CF CF CF CF CF 00 11 11 82 22 00 ff   .2bF????????"。
10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
20:00 00 01 14 00 40 21 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   @………………………………………………………………
30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
50:00 00 aa 00 00 00 00 00 00 00 00 00 00 00 00 12 32 f2 00   ...? ?2?。
60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    

其他一切都很好

aplay:3078] ea9-音频声音:TAS6424 AMP-0 2ch,4.8万Hz,12.8万bytes
[ 50.14.3878万  ] [4:         aplay:3078] tas6424 5-006a:tas6424_set_dia_fmt() fmt=0x4004
[ 50.15.847万  ] [5:         aplay:3078] tas6424 5-006a:tas6424_set_die_tdm_slot() tx_mask=3 rx_mask=0
[ 50.16.7667万  ] [5:         aplay:3078] tas6424 5-006a:tas6424_hw_params() rate=4.8万 width=16
[ 50.17.6254万  ] [5:         aplay:3078] tas6424 5-006a:hw_params中的sap_ctrl (在速率设置为64后)
  50.19.9674万) [3: kworker/u16:1:  58] tas6424 5-006a:tas6424_set_bias级别()级别=1
[ 50.20.7633万  ] [3: kworker/U16:1:  58] tas6424 5-006a:AMP启动
立体声
[  tas6424_set_bias    level() level=2。[ 50.45.1247万 ][3:kworker/U16:1:58] tas6424 5-006a:tas6424_set_bias level() level=2
[ 50.45.1379万  ] [5:         aplay:3078] tas6424 5-006a:tas6424_dac _event() event=0x2
[ 50.47.1264万  tas6424] [3: kworker/u16:9:1711] tas6424 5-006a:tas6424_set_bias级别()级别=3
[ 50.47.1388万  ] [6:         aplay:3078] tas6424 5-006a:tas6424_mute () mute = 0
^信号中断中止...
[ 60.17.8213万  ] [5:         aplay:3078] tas6424 5-006a:tas6424_mute () mute = 1

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Nagaraja-san,
    我们正在调查此问题,稍后将会回复您。
    此致,
    郑少文
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 ,Nagaraja,

    寄存器0x0C值为0x82,寄存器 0x0D值为0x22,它显示通道1存在对地短路故障,通道2/3/4存在断路负载故障。  您能告诉我负载的连接方式吗?

    我的问题是: 耳机的阻抗如何? 如果是普通扬声器,则可接受低于40欧姆的阻抗。  如果用于高阻抗负载,您需要将寄存器0x00位0~3设置为1,这会将输出模式设置为线路输出模式。

    迪伦

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Dylan,

    感谢您的回复

    我已将手机的耳机连接到CH1,其他3个频道都没有  

    您认为我需要连接其他扬声器吗?

    谢谢

    Manjunath

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nagaraja,

    了解您的设置,然后要使其正常工作,您有两个选项:

    1.将寄存器0x00设置为0x0F,这将把所有输出通道设置为线路输出模式。

    2.只需将寄存器0x09设置为0x01,即可禁用负载诊断功能。

    迪伦

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Dylan,

    我做了你提到的更改-将0xF写入mode_CTRL寄存器@0x00

    但我也会听到同样的周期性破裂声。 我将在下面显示i2cdump的输出。 是否可能存在与主板相关的问题?

    i2cdump -f -y 0x5 0x6a


    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 a b c d e f   0123456789abcdef
    00:0f 32 62 46 00 CF CF CF CF CF CF CF CF CF CF CF 00 11 11 82 22 00 ff   ?2bF????????"。
    10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    20:00 00 01 14 00 40 21 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   @………………………………………………………………
    30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    50:00 00 aa 00 00 00 00 00 00 00 00 00 00 00 00 12 32 f2 00   ...? ?2?。
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它显示选项1也未通过诊断。我们不会测试您的耳机的阻抗。
    然后,请使用选项2,忽略负载诊断。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    噼啪声消失,但只有无声-即使音量在81 %
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我看到寄存器0x0C仍为82 ,因此此通道中存在对地短路故障。您是否可以使用4欧姆或8欧姆典型扬声器来尝试?  工作后,我们将返回耳机查看是否存在任何问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在I2S模式下,当我与您一起跑步并使用普通耳机时,我会看到以下转储

    。    0 1 2 3 4 5 6 7 8 9 a b c d e f   0123456789abcdef
    00:0f 32 62 44 00 CF CF CF CF CF CF CF CF CF CF 01 11 11 00 00 00 55   ?2bd.????????????? ... U
    10:00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   00?..........
    20:00 00 01 14 00 40 21 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   @………………………………………………………………
    30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    50:00 00 aa 00 00 00 00 00 00 00 00 00 00 00 00 12 32 f2 00   ...? ?2?。
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    

    它看起来是否正常? 听不到耳机的声音

    此外,我还有一个问题- MCLK是否为TAS6424的功能所必需? 它是否可以仅使用SCLK和FSYNC运行?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以看到寄存器0x11为10,这意味着存在时钟故障。您是否确认IIS输入正确? 包括MCLK,LRCLK,SCLK和数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    MCLK是否应该是FS的精确倍数?
    另外,"MCLK时钟不能同步到SCLK"的含义是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的迪伦

    请查看我的时钟设置并告诉我是否正常

    FSYNC:4.8万 Hz

    SCLK:154.566万 (这是我请求1.536 MHz后设置的实际值)

    MCLK:1854.7926万 Hz

    使用此设置时,我不会收到时钟错误,但会收到以下状态。 时钟错误已消失,但

    信道状态报告寄存器(地址= 0x0F)始终报告0xAA -直流负载诊断

    MCLK是否必须精确为12.8256万或512 FS?

     0 1 2 3 4 5 6 7 8 9 a b c d e f   0123456789abcdef
    00:0f 32 62 44 00 CF CF CF CF CF CF CF CF CF 01 11 11 00 00 aa   ?????????? ...?
    10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    20:00 00 01 14 00 40 21 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   @………………………………………………………………
    30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    50:00 00 aa 00 00 00 00 00 00 00 00 00 00 00 00 12 32 f2 00   ...? ?2?。
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nagaraja,

    时钟故障是否已消除?  我不确定您是否可以向我发送电子邮件dylan-yao@ti.com,通过电子邮件讨论来帮助您解决此问题会更有效。

    迪伦

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nagaraja,
    我只是看到了这一点,请忽略我的上一篇帖子。 您的问题的答案是:是的,MCLK必须精确为12.8256万或512 FS。 如果您使用TDM模式,则SCLK需要为128或256 FS。  

    迪伦

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Dylan

    这是Kyungwon,他是Manjunath Nagaraja的同事。

    如果你不介意,你能告诉我什么时候模式控制寄存器(0x00)中的7位(复位)可以从1 (复位操作)更改为0 (正常操作)?

    实际上,我修改了您的编解码器探测器以检查模式控制位

     /*重置设备以建立定义明确的启动状态*/
    RET = regmap_update_bits(tas6424->regmap, TAS6424_mode_CTRL, TAS6424_reset, TAS6424_reset);
    如果(ret){
      dev_info (dev,"无法重置设备:%d\n",ret);
      返回台;
    }

    rett = regmap_read_poll超时(tas6424->regmap, TAS6424_mode_CTRL, val, !(val & TAS6424_reset), 0, TAS6424_reset_timeout /*4万*/);
    如果(转台)

      dev_info (dev,"无法重置编解码器:%d RegAddr[0x%x]:0x%x\n",ret,(unsigned int) TAS6424_MODE_CTRL,val);
      //返回台;
    }

    遗憾的是,它总是打印出0x80。

    [ 20.0.9542万  ] [5:     swapper /0:   1] tas6424 5-006a:5-006a supply pvdd not found,using dummy regulator

    [  RegAddr] [5:     swapper /0:   1] tas6424 5-006a:无法重置编解码器:-110 20.4.9684万 [0x0]:0x80

    [  tas6.4245万-006a         :tas6424寄存器[0x0]值:0x80。[ 20.4.9688万 ][5:swapper /0:1] tas6424 5-006a:tas6424寄存器[0x0]

    无论你提到何种CLKS,我认为应该改为正常操作。 我对吗?

    如果我错过了什么,您能告诉我吗?

    我很感谢。

    庆元

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,庆元,

    TAS6424的重置位将在写入1后自动重置为0 (此位1保持IIC CLK时间),因此您将不会从此位读取1。

    您可以确认驱动程序是否正常吗? 或者,您能否捕获IIC CLK和数据线波形,以便我们知道它是否真正写入/读取TAS6424?

    您是否在使用Nagaraja的驱动程序? 作为Nagaraja的前一个职位,他成功地读/写了TAS6424。


    迪伦

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    亲爱的迪伦

    感谢您的回复。
    实际上,Manjunath和我都在使用相同的代码。
    无论如何,正如您所提到的,我找到了源代码中的寄存器转储错误的原因。
    这是因为内核源中的注册高速缓存。
    在我修改了包含在易失性寄存器中的TAS6424_MODE_CTRL之后,它被修复了。

    此外,幸运的是,现在我可以使用TAS6424收听wav文件。
    感谢您的支持。

    此致,
    庆元
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    庆元

    完美,玩得开心。

    迪伦