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.

[参考译文] TLV320AIC3104:设置无时钟的 PGA 增益。 录制不起作用'不起作用

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1370432/tlv320aic3104-setting-pga-gain-without-clock-recording-doesn-t-work

器件型号:TLV320AIC3104

工具与软件:

尊敬的论坛用户:

我想使用 TLV320AIC3104 IC 进行音乐播放和录音。
我通过 I2S 将 Feasincom 蓝牙模块连接到编解码器。 编解码器的时钟源是来自蓝牙模块的 BCLK。 我使用内部 PLL 为 ADC 和 DAC 获取正确的时钟。
音频数据配置为48kHz 32位立体声。

玩似乎工作的很好,玩正弦波的工作。

I 已将正弦波(手机的线路电平输出)连接至 MIC2L/LINE2L 输入。

问题1:蓝牙模块仅在进行录制或播放时生成时钟。 配置 PGA 似乎需要时钟。 我可以在没有时钟的情况下配置 DAC、输出驱动器、I2S 参数、但如果没有时钟、PGA 增益不会改变。 我希望在启动器件之后、在进行任何蓝牙连接之前进行配置。 我做了什么错了,或者这是正常的行为? 我在数据表中找不到此信息。 (我检查了 PGA 运行情况、并将 PGA 输出路由到线路输出)
问题2:在录制过程中、我听到咯吱声和模糊不清的声音、而不是清晰的正弦波。 我在激活蓝牙连接期间配置寄存器、以确保 TLV320具有时钟。 我也尝试将相同的信号路由到左右 ADC、但没有帮助。


以下是用于检查 PGA 的配置:
0:0
2:0
3:0b10000001
4:32 << 2
7:0b00001010
9:0b00110000
10:1
11:1
86:0b00001001
93:0b10011001
101:0
102:0b10100010
81:0b10000000
17:0b00001111
15:0b01000001


以下是检查录制的配置:
0:0
2:0
3:0b10000001
4:32 << 2
7:0b00001010
9:0b00110000
10:1
11:1
101:0
102:0b10100010
17:0b00001111
19:0b11111111
15:0b01000001


正弦波现在连接到"MIC"标签以进行测试。

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

    尊敬的 Balint:

    首先、您是否启用了 PGA 软步进? 默认情况下启用该功能。 此功能锁定 ADC/DAC 输出采样的增益变化、这意味着增益变化需要时钟才能生效:

    "PGA 增益的变化由内部软步进算法实现、根据寄存器的编程情况、每一个或两个 ADC 输出样本仅改变一个0.5dB 阶跃的实际音量水平(见第0页的寄存器19和22)。 这种软步进可确保音量控制平稳变化、而不会出现任何声音伪影。"

    对于爬虫问题、我不会在测试期间将您的手机用作发电机。 我会使用您在实验中可能发现的函数发生器、以确保信号源非常干净。 您是如何聆听声音的?

    此致、
    J·麦克弗森

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

    您好!

    感谢您的回复。

    我曾尝试通过写入 R19-D1D0和 R22-D1D0到11来禁用左右软步进、但没有帮助。

    问题2已解决:音频串行数据字偏移控制值不正确。

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

    尊敬的 Balint:

    您能解释一下蓝牙模块提供了哪些时钟吗?

    谢谢。
    J·麦克弗森

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

    蓝牙模块提供了 BCLK。
    编解码器的 MCLK 输入未连接。

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

    尊敬的 Balint:

    我在 EVM 上进行了这项尝试、现在看到 PGA 更改了增益、即使删除了所有 I2S 时钟(包括 BCLK)也是如此。

    您能否与我分享您的完整器件配置步骤、以便我尝试重现问题?

    谢谢。
    J·麦克弗森

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

    尊敬的 Jeff:

    请查看该链接: https://e2e.ti.com/support/audio-group/audio/f/audio-forum/185817/tlv320aic3104---adc-pga-gain-in-analogue-bypass-mode

    由于没有 MCLK、用户无法设置 PGA 增益。

    以下是我的器件配置:

    #define PAGE_SELECT 0
    #define software_reset 1
    #define CODEC_SAMPLE_RATE_SELECT 2
    #define PLL_programming_A 3
    #define PLL_programming_B 4
    #define CODEC_DATA_PATH_SETUP 7
    #define AUDIO_SERIAL_DATA_INTERFACT_CONTROL_B 9
    #define AUDIO_SERIAL_DATA_INTERFACT_CONTROL_C 10
    #define AUDIO_CODEC_OVERFLOAD_FLAG 11
    #define LEFT_ADC_PGA_GAIN_CONTROL 15
    #define right_ADC_PGA_gain_control 16
    #define MIC2LR_TO_LEFT_ADC_CONTROL 17
    #define MIC2LINE2_TO_RIGHT_ADC_CONTROL 18
    #define MIC1LPLINE1LP_TO_LEFT_ADC_CONTROL 19
    #define MIC1RPLINE1RP_TO_RIGHT_ADC_CONTROL 22
    #define MICBIAS_CONTROL 25
    #define LEFT_AGC_CONTROL_A 26
    #define LEFT_AGC_CONTROL_B 27
    #define LEFT_AGC_CONTROL_C 28
    #define right_AGC_CONTROL_A 29
    #define right_AGC_CONTROL_B 30
    #define right_AGC_CONTROL_C 31
    #define LEFT_AGC_NOISE_GATE_DEBUNSE 34
    #define right_AGC_noise_gate_debunce 35
    #define DAC_POWER_and_output_driver_control 37
    #define DAC_OUTPUT_SWITCHING_CONTROL 41
    #define output_driver_POP_reduction 42
    #define LEFT_DAC_DIGITAL_VOLUME_CONTROL 43
    #define right_DAC_digital_volume_control 44
    #define DAC1_L1_TO_LEFT_LOPM_VOLUME_CONTROL 82
    #define LEFT_LOPM_OUTPUT_LEVEL_CONTROL 86
    #define DAC_R1_TO_RIGHT_LOPM_VOLUME_CONTROL 92
    #define right_LOPM_output_level_control 93
    #define clock 101
    #define clock_generation_control 102
    #define passive_analog_signal_bypass 108


    writeByteCodec (page_select、0);
    writeByteCodec (CODEC_SAMPLE_RATE_SELECT、0);// ADC 和 DAC 的采样速率为48kHz
    writeByteCodec (PLL_programming_A、0b10000001);//PLLEN=1|PLLQ=0000|PLLP=001
    writeByteCodec (PLL_programming_B、32<<2);//PLLJ=32
    writeByteCodec (codec_data_path_Setup、0b00001010);
    writeByteCodec (AUDIO_SERIAL_DATA_INTERFACT_CONTROL_B、0b00110000);//MODE=I2S|字长度=32位
    writeByteCodec (audio_serial_data_interface_control_C、0);//data offset=0时钟
    writeByteCodec (audio_codec_overflow_flag、1);//PLL R = 1
    writeByteCodec (left_LOPM_output_level_control、0b00001001);//左侧 LOP 增益0dB|取消静音|完全通电
    writeByteCodec (clock、0);//codec_CLKIN 使用 PLLDIV_OUT
    writeByteCodec (clock_generation_control、0b10100010);//CLKDIV_IN 使用 MCLK|PLLCLK_IN 使用 BCLK|保留
    writeByteCodec (81、0b10000000);//PGA_L 路由到 LEFT_LOP/M
    writeByteCodec (MIC2LR_TO_LEFT_ADC_CONTROL、0b00001111);//MIC2L 连接至 PGA
    writeByteCodec (MIC1LPLINE1LP_TO_LEFT_ADC_CONTROL、0b11111111);//左 PGA 软步进禁用
    writeByteCodec (left_ADC_PGA_gain_control、0b00110001);左侧 PGA 启用且增益设置

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

    尊敬的 Balint:

    我在 EVM 上设置您的代码并重新创建了问题。 我发现、如果在启动时未应用时钟、增益会像您描述的那样卡在0dB。 一旦应用时钟、增益就会更新到正确值。 此外、一旦取消时钟、PGA 将继续更新。

    因此、器件中存在一个限制、即 PGA 增益将一直锁定、直到应用时钟为止、这可能是因为器件开启后会默认启用软步进。 如果在启动时没有时钟、软步进逻辑可能会被锁定、直到应用时钟、从而阻止增益变化。 通常、这不是问题、因为 ADC 将无法工作、但对于旁路路径、它将成为一个限制。 然而、一旦给定 I2S 时钟、增益就会更新、即使再次移除时钟、也会继续正确更新(禁用软步进)。

    此致、
    J·麦克弗森

x 出现错误。请重试或与管理员联系。