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.

[参考译文] TLV320AIC1106:如何动态更改 DAC 音量控制、以及如何从左向右切换通道、反之亦然?

Guru**** 2548580 points
Other Parts Discussed in Thread: TLV320AIC1106, TLV320AIC3106

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1039724/tlv320aic1106-how-to-change-dac-volume-control-on-the-fly-and-switch-channel-from-left-to-right-or-vice-versa

器件型号:TLV320AIC1106
主题中讨论的其他器件: TLV320AIC3106

尊敬的团队:

我们将 TLV320AIC31106编解码器用于我们的项目。 根据该项目、我们在左声道连接了两个扬声器、连接了一个扬声器、另一个扬声器。  

根据我们的项目、我们需要根据情况(手机应用程序手持终端和免提)将一个扬声器切换到另一个扬声器、我曾尝试在   表51中将 LFET 和正确的 DAC 通道静音。 第0页/寄存器43:动态左侧 DAC 数字音量控制寄存器。

读取它正在应用这些值的寄存器不会、它会更新但不会静音。 因此、请提供您的输入、以便在不干扰音频的情况下从一个通道切换到另一个通道。

请找到配置详细信息和图表。

tlv320_codec configparam_tlv []={

{AIC3106_REG0_PAGESELECT、0x00}、

{AIC3106_REG0_RESET、0x80}、

{AIC3106_REG0_CODEC SAMPLE_RATE、0xAA}、

{AIC3106_REG0_PLL_A、0x10}、

{AIC3106_REG0_PLL_B、0x00}、

{AIC3106_REG0_PLL_C、0x00}、

{AIC3106_REG0_PLL_D、0x00}、

{AIC3106_REG0_CODEC 数据路径、0x0A}、

{AIC3106_REG0_SERIAL_DATA_INTFC_A、0xF0}、

{AIC3106_REG0_SERIAL_DATA_INTFC_B、0x00}、

{AIC3106_REG0_SERIAL_DATA_INTFC_C、0x08}、

{AIC3106_REG0_overflow_FLAG、0x00}、

{AIC3106_REG0_DIG_FILTER_CNTL、0x00}、

{AIC3106_REG0_Headset_button_press_A、0x00}、

{AIC3106_REG0_Headset_button_press_B、0x00}、

{AIC3106_REG0_LEFT_ADC_PGA、0x00}、

{AIC3106_REG0_RIGHT _ADC_PGA、0x00}、

#if I2S_path_reqd

{AIC3106_REG0_MIC3LR_LEFT_ADC、0xF0}、

{AIC3106_REG0_MIC3LR_RIGHT _ADC、0xF0}、

{AIC3106_REG0_LINE1L_LEFT_ADC、0x7C}、
其他
{AIC3106_REG0_MIC3LR_LEFT_ADC、0x00}、

{AIC3106_REG0_MIC3LR_RIGHT _ADC、0x00}、

{AIC3106_REG0_LINE1L_LEFT_ADC、0x00}、
#endif

{AIC3106_REG0_LINE2L_LEFT_ADC、0x00}、

{AIC3106_REG0_LINE1R_LEFT_ADC、0x00}、

#if I2S_path_reqd
{AIC3106_REG0_LINE1R_RIGHT_ADC、0x7C}、

其他
{AIC3106_REG0_LINE1R_RIGHT_ADC、0x00}、
#endif

{AIC3106_REG0_LINE2R _ RIGHT_ADC、0x00}、

{AIC3106_REG0_LINE1L_RIGHT_ADC、0x00}、

{AIC3106_REG0_MICBIAS、0x40}、

{AIC3106_REG0_LEFT_AGC_CNTL_A、0x00}、

{AIC3106_REG0_LEFT_AGC_CNTL_B、0x00}、

{AIC3106_REG0_LEFT_AGC_CNTL_C、0x00}、

{AIC3106_REG0_RIGHT _AGC_CNTL_A、0x00}、

{AIC3106_REG0_RIGHT _AGC_CNTL_B、0x00}、

{AIC3106_REG0_RIGHT _AGC_CNTL_C、0x00}、

{AIC3106_REG0_LEFT_AGC_GAIN、0x00}、

{AIC3106_REG0_RIGHT _AGC_GAIN、0x00}、

{AIC3106_REG0_LEFT_AGC_Noise_GATE、0x00}、

{AIC3106_REG0_Rright_AGC_Noise_GATE、0x00}、

{AIC3106_REG0_ADC_FLAG、0x00}、

#if I2S_path_reqd

{AIC3106_REG0_DAC_POWER_OUTPUT DRVR、0xE0}、

{AIC3106_REG0_HI_POWER_OUTPUT DRVR、0x00}、
其他
{AIC3106_REG0_DAC_POWER_OUTPUT DRVR、0x00}、

{AIC3106_REG0_HI_POWER_OUTPUT DRVR、0x00}、
#endif

{AIC3106_REG0_RESERVE_39、0x00}、

{AIC3106_REG0_HI_POWER_OUTPUT _CNTL、0x00}、

{AIC3106_REG0_DAC_OUTPUT 切换、0x00}、

{AIC3106_REG0_OUTPUT POP_REduction、0x00}、

{AIC3106_REG0_LEFT_DAC_VOLUME、0x00}、

{AIC3106_REG0_RIGHT _DAC_VOLUME、0x00}、

{AIC3106_REG0_LINE2L_TO_HPLOUT、0x00}、

#if MIC_SPKR_LOOP_BACK
{AIC3106_REG0_PGA_L_TO_HPLOUT、0x80}、
其他

{AIC3106_REG0_PGA_L_TO_HPLOUT、0x00}、
#endif

#if I2S_path_reqd
{AIC3106_REG0_DAC_L1_TO_HPLOUT、0x80}、
其他
{AIC3106_REG0_DAC_L1_TO_HPLOUT、0x00}、
#endif
{AIC3106_REG0_LINE2R_TO_HPLOUT、0x00}、


#if MIC_SPKR_LOOP_BACK

{AIC3106_REG0_PGA_R_TO_HPLOUT、0x80}、
其他
{AIC3106_REG0_PGA_R_TO_HPLOUT、0x00}、
#endif
{AIC3106_REG0_DAC_R1_TO_HPLOUT、0x00}、

{AIC3106_REG0_HPLOT_OUTP_LEVEL、0x09}、

{AIC3106_REG0_LINE2L_TO_HPLCOM、0x00}、

{AIC3106_REG0_PGA_L_TO_HPLCOM、0x00}、

{AIC3106_REG0_DAC_L1_TO_HPLCOM、0x00}、

{AIC3106_REG0_LINE2R_TO_HPLCOM、0x00}、

{AIC3106_REG0_PGA_R_TO_HPLCOM、0x00}、

{AIC3106_REG0_DAC_R1_TO_HPLCOM、0x00}、

{AIC3106_REG0_HPLOCOM_OUTPUT 电平、0x00}、

{AIC3106_REG0_LINE2L_TO_HPROUT、0x00}、

{AIC3106_REG0_PGA_L_TO_HPROUT、0x00}、

{AIC3106_REG0_DAC_L1_TO_HPROUT、0x00}、

{AIC3106_REG0_LINE2R_TO_HPROUT、0x00}、

{AIC3106_REG0_PGA_R_TO_HPROUT、0x00}、
#if I2S_path_reqd

{AIC3106_REG0_DAC_R1_TO_HPROUT、0x80}、
其他
{AIC3106_REG0_DAC_R1_TO_HPROUT、0x80}、
#endif

{AIC3106_REG0_HPROUT_OUTPUT_LEVEL、0x09}、

{AIC3106_REG0_LINE2L_TO_HPRCOM、0x00}、

{AIC3106_REG0_PGA_L_TO_HPRCOM、0x00}、

{AIC3106_REG0_DAC_L1_TO_HPRCOM、0x00}、

{AIC3106_REG0_LINE2R_TO_HPRCOM、0x00}、

{AIC3106_REG0_PGA_R_TO_HPRCOM、0x00}、

{AIC3106_REG0_DAC_R1_TO_HPRCOM、0x00}、

{AIC3106_REG0_HPRCOM_OUTPUT 电平、0x00}、

{AIC3106_REG0_LINE2L_TO_MONO_LOP、0x00}、

{AIC3106_REG0_PGA_L_TO_MONO_LOP、0x00}、

{AIC3106_REG0_DAC_L1_TO_MONO_LOP、0x00}、

{AIC3106_REG0_LINE2R 至单声道 LOP、0x00}、

{AIC3106_REG0_PGA_R_TO_MONO_LOP、0x00}、

{AIC3106_REG0_DAC_R1_TO_MONO_LOP、0x00}、

{AIC3106_REG0_MONO_LOP_OUTPUT 电平、0x00}、

{AIC3106_REG0_LINE2L_TO_LEFT_LOP、0x00}、

{AIC3106_REG0_PGA_L_TO_LEFT_LOP、0x00}、

{AIC3106_REG0_DAC_L1_TO_LEFT_LOP、0x00}、

{AIC3106_REG0_LINE2R 至左侧 LOP、0x00}、

{AIC3106_REG0_PGA_R_TO_LEFT_LOP、0x00}、

{AIC3106_REG0_DAC_R1_TO_LEFT_LOP、0x00}、

{AIC3106_REG0_LEFT_LOP_OUTPUT 电平、0x00}、

{AIC3106_REG0_LINE2L_TO_RIGHT_LOP、0x00}、

{AIC3106_REG0_PGA_L_TO_RIGHT _LOP、0x00}、

{AIC3106_REG0_DAC_L1_TO_RIGHT _LOP、0x00}、

{AIC3106_REG0_LINE2R_TO_RIGHT_LOP、0x00}、


{AIC3106_REG0_PGA_R_TO_RIGHT _LOP、0x00}、

{AIC3106_REG0_DAC_R1_TO_RIGHT _LOP、0x00}、

{AIC3106_REG0_Rright_LOP_OUTPUT 电平、0x00}、

{AIC3106_REG0_MODULE_POWER_STATUS、0x00}、

{AIC3106_REG0_OUTPUT 短路、0x00}、

{AIC3106_REG0_Sticky _IRQ_FLAGS、0x00}、

{AIC3106_REG0_REALTIME _IRQ_FLAGS、0x00}、

{AIC3106_REG0_GPIO1_CONTROL、0x00}、

{AIC3106_REG0_GPIO2_CONTROL、0x00}、

{AIC3106_REG0_AddnL_GPIO_CONTRAL_A、0x00}、

{AIC3106_REG0_AddnL_GPIO_CONTRAL_B、0x01}、

{AIC3106_REG0_CLOCK_GEN_CONTROL、0x02}、

{AIC3106_REG0_LEFT_AGC_new_Attack、0x00}、

{AIC3106_REG0_LEFT_AGC_NEW _DECAY、0x00}、

{AIC3106_REG0_right_AGC_new_attack、0x00}、

{AIC3106_REG0_Rright_AGC_new_DECAY、0x00}、

{AIC3106_REG0_new_adc_digited_path、0x00}、

{AIC3106_REG0_passive_analog_bypass、0x00}、

{AIC3106_REG0_DAC_QUIEST_CURRENT、0x00}

};

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

    您好!

    这 是 TLV320AIC1106还是 TLV320AIC3106? 标题为 AIC1106、但图示为 AIC3106。

    对于 AIC3106、是否仅从 MIC3R/LINE3R 发送输入并启用左侧 ADC 路径至 HPL 输出、右侧 ADC 路径至 HPR 输出?

    您是否可以使用上面的图表并突出显示您想要动态更改的路径、以使其清晰?

    基本上、如果路径如我在前面所述是直接的、 您应该能够根据 每个输出级直接控制音量、例如、针对 DAC 音量和输出级音量的 PAGE 0寄存器43、并且输出级具有自己的增益/控制、如 PAGE 0寄存器51中的 HPL、您可以将其静音 好的。

    您可以首先使用 PAGE 0寄存器51位 D3开始静音、例如 HPL、然后从该位置继续。

    此致。

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

    尊敬的团队:

    我将输入用作 MIC3R 并提供此 DSP。 DSP 将数据发送到 MCU、同一 DSP 将使用路径 HPLOUT 和使用 DAC 的 HPROUT 向编解码器提供数据。

    因此、请告诉我如何将 HPOUT 或 HPROUT 静音或切换。 我曾尝试使用 Page0寄存器43进行 DAC 静音切换。 但 它不会以任何代价静音。

    请注意、我需要根据项目将 DACL/R 静音。 如果尝试更改 寄存器51 、则为什么飞编解码器音频输出不会同时出现在 HPLOUT 和 HPROUT 中。

    我曾尝试过相同的寄存器43和51。 如果可以在不影响音频的情况下将一个 DAC 切换到另一个 DAC、请共享示例代码。

    请就此提供您的解决方案。

    此致

    Nagendra

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

    您好!

    查看我用于检查此功能的附加文件。

    我刚才使用了从 AP-PSIA 到 HP 输出的 DAC 路径、因为数字音频接口无论如何都将来自您的 MCU。

    如您所见、我只需将 HPR /HPL 设置为静音、振幅就会在 AP 模拟分析器中消失。

    寄存器设置也显示在文件中。

    下面是显示路径及其相应寄存器的高级图、我认为这可以帮助您配置所需路径。

    e2e.ti.com/.../5468.TLV320AIC3106_5F00_Functional_5F00_block_5F00_Diagram_5F00_With_5F00_Registers.pdf

    此致。

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

    尊敬的团队:

    我的问题仍未解决、仍在尝试将 HPLOUT 和 HPROUT 静音。

    请注意、我需要一次将 HPLOUT 静音并禁用 MIC、但我无法这样做。 我曾观察 到、当我在静音至 HPLOUT 之前尝试先禁用 MIC 或任何内容时、HPLOUT 和 HPROUT 正常工作。  

    如果我先将 HPLOUT 静音、但只将其静音、请告诉我是否有任何特定的程序可用于动态更改变量。

    在任何情况下、一旦启用、MIC 都不会进入禁用状态。 因此、如果您有任何示例代码、请提供。

    请找到我编写的代码:

    /** MIC 启用*/
    #define MIC_ENABLE 0x40


    #define MIC_DISABLE 0x00


    /*取消 HP 路径静音*/
    #define 取消静音_HP 0x49

    /*将 HP 路径静音*/
    #define MUTE_ON_HP 0x41

    /**静音选择*/
    #define MUTE 0x01

    /**取消静音选择*/
    #define 取消静音0x00

    void hplout_mute (void)

    /*编解码器写入变量的声明*/
    uint16_t REG_param_vol[2]={0};

    /*左侧的声明编解码器读取变量*/
    uint8_t LDAC_reg;


    /*分配左侧 DAC 数字音量控制寄存器地址。*/
    REG_param_vol [0]= configparam_tlv[AIC3106_REG0_HPLOT_OUTP_LEVEL].add;

    /**发送编解码器左卷设置寄存器地址进行读取
    *寄存器值。
    *
    I2C_READ_REG (CODEC 地址、Registered_param_vol、LDAC_reg、1);

    /*为编解码器的寄存器写入或读取提供一些延迟。 *
    delay();

    /*根据静音基础清除音量*/
    LDAC_reg =(LDAC_reg)&(~MUTE_ON_HP);

    /*分配左侧 DAC 数字音量控制寄存器地址。*/
    REG_param_vol [0]= configparam_tlv[AIC3106_REG0_HPLOT_OUTP_LEVEL].add;

    /*为静音条件分配左侧 DAC 通道。*/
    configparam_tlv[AIC3106_REG0_HPLOT_OUTP_LEVEL].data = LDAC_REG|MUTE_ON_HP;

    /*分配左侧 DAC 数字音量控制寄存器地址。*/
    REG_param_vol [0]= configparam_tlv[AIC3106_REG0_HPLOT_OUTP_LEVEL].add;

    /*为编解码器分配寄存器数据值。 *
    reg_param_vol [1]= configparam_tlv[AIC3106_REG0_HPLOT_OUTP_LEVEL].data;

    /*使用 I2C 向 codectlv320.*/发送寄存器地址和数据
    I2C_WRITE_reg (CODEC 地址、Registered_param_vol、2);

    /*为编解码器的寄存器写入或读取提供一些延迟。 *
    delay();

    void hprout_n静 音(void)

    /*编解码器写入变量的声明*/
    uint16_t REG_param_vol_right[2];

    /*右侧的声明编解码器读取变量*/
    uint8_t RDAC _reg;

    uint8_t mint_reg;

    /*分配左侧 DAC 数字音量控制寄存器地址。*/
    REG_param_vol_right [0]= CONFIGparam_tlv[AIC3106_REG0_HPROUT_OUTPUT_LEVEL].add;

    /**发送编解码器左卷设置寄存器地址进行读取
    *寄存器值。
    *
    I2C_READ_reg (CODEC 地址、Registered_param_vol_right、&RDAC_reg、1);

    /*为编解码器的寄存器写入或读取提供一些延迟。 *
    delay();

    /*根据静音基础清除音量*/
    RDAC _reg =(RDAC _reg)和(~MUTE_ON_HP);

    /*分配左侧 DAC 数字音量控制寄存器地址。*/
    REG_param_vol_right [0]= CONFIGparam_tlv[AIC3106_REG0_HPROUT_OUTPUT_LEVEL].add;

    /*为静音条件分配左侧 DAC 通道。*/
    configparam_tlv[AIC3106_REG0_HPROUT_OUTPUT_LEVEL].data = RDAC_reg;

    /*分配左侧 DAC 数字音量控制寄存器地址。*/
    REG_param_vol_right [0]= CONFIGparam_tlv[AIC3106_REG0_HPROUT_OUTPUT_LEVEL].add;

    /*为编解码器分配寄存器数据值。 *
    REG_param_vol_right [1]= configparam_tlv[AIC3106_REG0_HPROUT_OUTPUT_LEVEL].data;

    /*使用 I2C 向 codectlv320.*/发送寄存器地址和数据
    I2C_WRITE_REG (CODEC 地址、Registered_param_vol_right、2);

    /*为编解码器的寄存器写入或读取提供一些延迟。 *
    delay();

    void mIC_selection (void)

    /*编解码器写入变量的声明*/
    uint16_t REG_param_mic [2]={0};

    针对 MIC*/的/*声明编解码器读取变量
    uint8_t mint_reg;

    /*分配左侧 DAC 数字音量控制寄存器地址。*/
    REG_param_mic [0]= configparam_tlv[AIC3106_REG0_MICBIAS].add;

    /**发送编解码器左卷设置寄存器地址进行读取
    *寄存器值。
    *
    I2C_READ_reg (CODEC 地址、Registered_param_mic、&mire_reg、1);

    /*为编解码器的寄存器写入或读取提供一些延迟。 *
    delay();

    /*根据静音基础清除音量*/
    MIC_reg =(MIC_REg)&(~MIC_disable );

    /*为静音条件分配左侧 DAC 通道。*/
    configparam_tlv[AIC3106_REG0_MICBIAS].data = mic_reg |MIC_disable;

    /*分配左侧 DAC 数字音量控制寄存器地址。*/
    REG_param_mic [0]= configparam_tlv[AIC3106_REG0_MICBIAS].add;


    /*为编解码器分配寄存器数据值。 *
    REG_param_mic [1]= (configparam_tlv[AIC3106_REG0_MICBIAS].data);

    /*使用 I2C 向 codectlv320.*/发送寄存器地址和数据
    I2C_WRITE_REG (CODEC 地址、Registered_param_mic、2);

    /*为编解码器的寄存器写入或读取提供一些延迟。 *
    delay();

    请告诉我需要做的任何更改。

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

    您好!

    没有特定的序列可将 HP 输出静音/取消静音。

    此处附加了用于启用到 HPL/R 输出的 MIC3L/R 的设置。 在我的测试中、我将数字输入数据从 MIC3发送回数字输出、然后我只需对相应的块进行静音/取消静音。

    e2e.ti.com/.../test-on-EVM.pdf

    e2e.ti.com/.../Setting-to-enable-MIC3-to-HPL_5F00_R_5F00_OUT.txt

    此致、

    Peter

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

    尊敬的团队:

    寄存器地址似乎不同、请使用随附的寄存器地址手册、并使用一些示例代码让我知道确切的设置。

    e2e.ti.com/.../tlv320aic3106.pdf

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

    您好!

    如上面注释中所述、这些值为十六进制、否则数据表中的寄存器地址为十进制。 它们是相同的寄存器地址。

    系统中的某些功能会阻止静音/取消静音。

    此致、

    Peter