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.

[参考译文] TAS2505-Q1:TAS2505开路负载诊断噼啪声问题

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1507432/tas2505-q1-tas2505-open-load-diagnostic-crackling-sound-issue

器件型号:TAS2505-Q1
主题中讨论的其他器件:TAS2505

工具/软件:

在我们针对汽车行业的硬件设计中、我们使用 TAS2505音频 IC。 在运行期间以及短路/开路机制中、不存在问题。

但是、在微控制器完成 TAS2505初始化后、我会听到扬声器发出噼啪声。 此外、每次执行开路检查时、由于 TAS2505被关闭和再次打开、我都会听到相同的声音。 这是否与增益设置相关? 我需要每秒执行一次连续轮询、并且每次都会听到这种声音。 我不想每次都将增益设置为0dB、然后再恢复到6dB。 通过 I2C 重新初始化可能需要时间并导致延迟、因为需要实时处理声音。

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

    您好:Serhat、

    您是否在 IC 初始化前提供了时钟?

    如果在没有时钟的情况下打开/关闭 SPK 驱动器、可能会导致异常噪音。

    谢谢

    Kevin

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

    您好 Kevin、

    在初始化 TAS2505之前、是否需要通过 I2C 激活时钟? 我们在这里讨论的是哪个时钟—MCLK、WCLK 或 BCLK?

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

    是的、这取决于要将哪个时钟用作时钟源、如果没有 MCLK、请在初始化之前激活 BCLK、否则也会同时激活 MCLK 和 BCLK

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

    在我们的系统中、我们有两个不同的内核。 Cortex-R7的启动更早、并通过 I2C 执行 TAS2505初始化。 稍后、在音频播放期间、Cortex-A57 (稍后启动)会播放声音。 音频数据由 CA57通过 I2C 驱动。 在这种情况下、我们应该怎么做? 在正常运行期间、时钟始终存在以进行开路负载检测。 但是、我仍然听到咔嗒声/嘀嗒声。 这是什么原因?

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

    您好:Serhat、

    首先、这是一个系统操作问题、我无法针对您的系统级别提供具体建议

    然后、我认为如果时钟始终呈现、那么 咔嗒声/嘀嗒声是在静音/取消静音时生成的 POP 脉冲信号(由于 TAS2505没有自动启动斜升/斜降)、当扬声器对该信号更敏感时、便能听到此信号。

    我的建议是添加软斜升和软斜降、您可以查看以下内容

    避免砰砰声的理想方法是添加一个软斜升/斜降。

    取消静音:

       将 DAC 音量设置为最小值 (Page0/Register65) ->取消静音->>3ms ->将 DAC 音量设置为正常

    静音

       将 DAC 音量设置为最小值 (Page0/Register65) ->>3ms ->静音

    此致

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

    您好 Kevin、

    目前、在 IC 初始化阶段、页0寄存器65设置为默认值0.0dB。 我应该在此处设置什么值? 对于静音选项、该值应该是0吗? 此外、我将分享 PAGE0和页1寄存器值:

    {PAGE0, SOFTWARE_RESET_REG,            0x01},   // Soft reset
    
    {PAGE0, PAGE_SELECT,                   0x01},   // Select Page 1
    
    {PAGE1, LDO_CTL_REG,                   0x00},   //   : AVDD LDO = 1.8V
                                                    //       : PLL and HP Level Shifters powered up
                                                    //       : No short circuit detected
                                                    //       : LDO_SEL pin is low
    
    {PAGE1, PAGE_SELECT,                   0x00},   // Back to Page 0
    
    {PAGE0, PLL_CODEC_MUX_REG,            0x01},   //       : Low PLL clock range
                                                    //   : BCLK is input to PLL
                                                    //   : PLL clock is CODEC_CLKIN
    
    {PAGE0, PLL_P_R_REG,                  0x91},    //       : PLL powered up
                                                    // [D6-D4]     : P = 1
                                                    // [D3-D0]     : R = 1
    
    {PAGE0, PLL_J_REG,                    0x07},    // J = 7
    
    {PAGE0, PLL_D_MSB_REG,                0x18},    // D[13:8] = 0x18
    {PAGE0, PLL_D_LSB_REG,                0x3D},    // D[7:0]  = 0x3D  => D = 6205
    
    {PAGE0, PLL_NDAC_REG,                 0x81},    //       : NDAC powered up
                                                    // [D6-D0]     : NDAC = 5
    
    {PAGE0, PLL_MDAC_REG,                 0x81},    //       : MDAC powered up
                                                    // [D6-D0]     : MDAC = 3
    
    {PAGE0, DAC_OSR_MSB_REG,              0x00},    // DOSR[9:8]
    {PAGE0, DAC_OSR_LSB_REG,              0x40},    // DOSR[7:0] = 0x40 => DOSR = 64
    
    {PAGE0, AUDIO_IF1_REG,                0x00},    //   : DSP Mode
                                                    //   : 16-bit word length
                                                    //       : BCLK is input
                                                    //       : WCLK is input
    
    {PAGE0, AUDIO_IF2_REG,                0x00},    // Data offset = 0 BCLKs
    
    {PAGE0, DAC_INSTRUCTION_SET_REG,      0x02},    // Signal Processing Block: PRB_P2
    
    {PAGE0, DAC_CH_SETUP1_REG,            0x90},    //       : DAC powered up
                                                    //   : Left channel input
                                                    //   : 1 step per WCLK
    
    {PAGE0, DAC_CH_VOL_CTL_REG,           0x00},    // Digital Volume = +0dB
    
    {PAGE0, DAC_CH_SETUP2_REG,            0x04},    //   : Auto mute disabled
                                                    //        : DAC muted
    
    #if (DIAG_CIRCUIT_TYPE == DIAG_CIRCUIT_2)
    {PAGE0, GPIO_DOUT_CTRL_REG,           0x0C},    // GPIO is general purpose output
    #elif (DIAG_CIRCUIT_TYPE == DIAG_CIRCUIT_1)
    {PAGE0, GPIO_DOUT_CTRL_REG,           0x08},    // GPIO is general purpose input
    #endif
    
    {PAGE0, PAGE_SELECT,                  0x01},    // Switch to Page 1
    
    {PAGE1, REF_POR_LDO_BGAP_CTL_REG,     0x10},    //       : Master Reference enabled
                                                    //       : POR not powered down
                                                    //       : Bandgap powered down
    
    {PAGE1, COMM_MODE_CTL_REG,            0x00},    //       : Common Mode = 0.9V
                                                    //       : HP full drive ability
    
    {PAGE1, HP_ROUTING_REG,               0x04},    //       : Mixer P to HP attenuator
    
    {PAGE1, HP_VOL_CTL_REG,               0x00},    // HP Volume = 0.0dB
    
    {PAGE1, AINL_VOL_CTL,                 0x00},    // AINL Volume = 0.0dB
    
    {PAGE1, OUTDRV_AINLR_CTL_REG,         0x20},    //       : HPL powered up
                                                    //   : AINL/R disabled
    
    {PAGE1, HP_DRIV_GAIN_REG,             0x00},    // HP driver gain = 0dB, unmuted
    
    {PAGE1, SPKR_VOL_CTL1_REG,            0x00},    // SPK Volume = -72.3dB
    
    // TODO: Start with mute, enable when playing
    {PAGE1, SPKR_AMP_CTL2_REG,  DAMP_GAIN_12dB},    // SPK Volume = 6dB
    
    {PAGE1, SPKR_AMP_CTL1_REG,            0x02},    // SPK output driver powered down
    



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

    您好:Serhat、

    根据参考指南进行检查、最小音量(-63.5db)为0x81、0dB 为0x00

    此致

    Kevin

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

    您好 Kevin、

    这种方法不起作用。 我仍在听到每个打开负载请求时的砰砰声。 它还没有被消除。

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

    您好:Serhat、

    您是如何执行的? 您能告诉我 i2c 序列吗? (非初始化)

    您可以将 DAC_CH_Setup1_REG 设置为0x91 (软步进为每2个 DAC 字时钟1步)

    对于以下序列、可以缓慢增加延迟时间、例如5ms、8ms…… 直到消除砰砰声。

    取消静音:

       将 DAC 音量设置为最小值 (Page0/Register65) -> DAC 取消静音(Page0/Register64)->>3ms ->将 DAC 音量设置为正常

    静音

       将 DAC 音量设置为最小值 (Page0/Register65) ->>3ms -> DAC 静音 (Page0/Register64)  

    谢谢&谨致问候

    Kevin

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

    您好 Kevin、

    我将 I2C 序列与"Open Load Control":

    1.Page0/寄存器41h -写入81h =>-63.5dB

    延迟3ms

    //------------------------ 开路负载检测 开始-------------------------------- //

    3.页1/寄存器2Eh -写入7Fh => 静音

    4.  页1/寄存器2Dh -写入 复位 D1位=> SPK 输出驱动器已断电
    4.1页1/寄存器30h -写入复位 D4-D6位=> SPK 驱动器静音

    5.页0/寄存器34h -写入 设置 D0位=> GPIO 引脚在通用输出模式下被驱动为"1"

    6. 50ms 延迟

    7.页0/寄存器34h -读取 D1位=> GPIO 输入引脚状态、与 GPIO 一起用作通用输入

    8.开路负载检测工作.. (没关系)

    //------------------------ 开路负载检测结束---------------------------- //

    9. 页1/寄存器2Dh 写入设置 D1位=>扬声器电源打开       
    9.1页1/寄存器30h 写入 20h => 010:SPK 驱动器音量= 12dB

    10.页0/寄存器41h -写入0h => 0.0dB


    将扬声器电源从关闭切换至打开时、我会听到砰砰声。

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

    我想您设置了错误的寄存器、应该在 SPK 断电之前或 SPK 上电之后执行 DAC 静音、我做了如下修改:

    1.Page0/寄存器41h -写入81h =>-63.5dB

    延迟5ms

    //------------------------ 开路负载检测 开始-------------------------------- //

    3.Page1/寄存器40h -写入04h => DAC 静音

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

    您好 Kevin、

    最新状态如下。 我在流程中没有看到任何问题。

     //===Page0/Register 65 DAC Volume to be smallest====//
    
    tas2505_reg_write(PAGE0, DAC_CH_VOL_CTL_REG, 0x81,0); //Digital Volume Control = -63.5dB min Vol.
    
    for(uint16 i=0; i<15000; ++i) //5ms delay
    {
    __asm(" NOP");
    }
    
    //============DAC Mute (Page0/Register64)===========//
    
    tas2505_dac_mute(); //Page 0 40h Bit-1 Set
    
    tas2505_spkr_volume_set(0); //Page1 2Eh Mute 111 1111b
    
    if (tas2505_set_damp_gain(DAMP_MUTE) == FALSE) //Page1 2Dh Speaker Power Off
    { // 6dB kazanç aktif, SPK Driver output ise pasif edilir
     return REGISTER_ACCESS_ERROR;
    }
    
    tas2505_reg_write(PAGE0, GPIO_DOUT_CTRL_REG, 0x08,0); // GPIO pin input------- 50 ms Delay-------
    
    
    gpio_status = tas2505_gpio_read();
    
    if(gpio_status == 1)
    
    { return OPEN_LOAD;
    }
    
    //DAC Volume to be smallest
    tas2505_reg_write(PAGE0, DAC_CH_VOL_CTL_REG, 0x81,0); //Digital Volume Control = -63.5dB min Vol
    
    if (tas2505_set_damp_gain(DAMP_GAIN_12dB) == FALSE)
    {
     return REGISTER_ACCESS_ERROR;
    }
    
    tas2505_dac_unmute(); //Page0 40h
    
    for(uint16 i=0; i<15000; ++i) //5ms delay
    {
     __asm(" NOP");
    }
    
    tas2505_spkr_volume_set(100); //Page1 2Eh 0.0dB



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

    太棒了!

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

    您好 Kevin、

    我说根据这个流程没有问题、但砰砰声仍然以相同的方式持续存在。 我在代码方面实现了您提到的内容。 基于此、我想说没有问题。 目前、此配置仍会发出砰砰声。

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

    您好:Serhat、

    我认为顺序没有完全符合我的要求、要点是在扬声器打开时更改顺序、我将其更改为:

    1.Page0/寄存器41h -写入81h =>-63.5dB

    延迟5ms

    3.Page1/寄存器40h -写入04h => DAC 静音

    4页1/寄存器30h -写入复位 D4-D6位=> SPK 驱动器静音
    4.1  页1/寄存器2Dh -写入 复位 D1位=> SPK 输出驱动器已断电


    //------------------------ 开路负载检测开始-------------------------------- //
    5.页0/寄存器34h -写入设置 D0位=> GPIO 引脚在通用输出模式下被驱动为"1"

    6. 50ms 延迟

    7.页0/寄存器34h -读取 D1位=> GPIO 输入引脚状态、与 GPIO 一起用作通用输入

    8.开路负载检测工作.. (没关系)

    //------------------------ 开路负载检测结束---------------------------- //



    9. 页1/寄存器2Dh 写入设置 D1位=>扬声器电源打开       
    9.1页1/寄存器30h 写入20h => 010:SPK 驱动器音量= 12dB

    10.Page1/寄存器40h -写入00h => DAC 取消静音

    11。延迟5ms
    12、页0/寄存器41h -写入0h => 0.0dB

    如果软斜升仍然不起作用、  那么很难在 SW 中消除、那么我们应该在硬件或扬声器中考虑。

    谢谢

    Kevin