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.

[参考译文] TLV320ADC6140:设置通道的增益

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1091580/tlv320adc6140-setting-gain-for-the-channels

部件号:TLV320ADC6140

您好,

我正在尝试为TLV320ADC6140上使用的三个通道中的每个通道设置增益,我遇到了一个问题。 首先是一些一般信息:TLV320ADC6140用于音频总线主控模式,具有SPI的微控制器用作从属控制器,并将数据馈入TLV320ADC6140记录。 这通常有效。 但是,我希望增加信道的模拟增益,因为信号太低。

如数据表所述:要设置PGA的增益,您需要写入CHX_CFG1寄存器(在我的案例中为CH1:0x3D,CH2:0x42和CH3:0x47)。 要写入的值直接对应于设定的增益,即值20d将产生20dB的增益。 这些值必须写入此寄存器最上端的6位,而其他两位必须保持为零。

所以,为了将增益设置为20dB,我在这个寄存器(二进制)中写了:101万,因为用1.01万 (20d)填充的上6位应该能提供20dB的增益。 通过重新读取寄存器,可以验证寄存器的看似正确的值。

这根本不起作用。 当我设置这些值时,所有三个信道都保持完全安静,就像真正的零一样。 然后,我尝试获得至少一些价值来发挥作用,并从最低价值向上努力:

1dB:0.01万工作。
2dB:0.1万工作
4dB:1万已工作
5dB:1.01万仅限于CH1和CH2录制音频,CH3保持静音。
8dB:10万不工作,所有信道静音

在设置频道增益时,是否还有其他需要考虑的事项? 设备用作音频主控设备是否有任何专业? 以前,我使用了数字音量控制,它确实有效,但它与模拟增益不同。

请告诉我为什么这可能不起作用。

此致,

Christoph

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

    明天答复。

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

    有新消息吗?

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

    我对拖延表示歉意。

    我看到您有3个输入通道。

    您可以在主模式下操作设备。

    您是否正在使用TDM模式?

    主模式的时钟是什么?

    请将您的竞争注册设置发送给我,以便我可以尝试查找问题吗?

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

    当然,这里是我的设置:(从C代码复制并删除了两者之间所有不必要的内容)

    TLV320ADC6140_SLEEP_CFG=0x81;    //ADC not in sleep mode, internal AREG supply
    TLV320ADC6140_ASI_CFG0=0xb0;     //ADC word length 32bits, Format left justified
    TLV320ADC6140_MST_CFG0=0x81;     //ADC as master, clock frequency 12.288 Mhz
    TLV320ADC6140_MST_CFG1=0x47;     //FS Rate 44.1/48kHz, FS_BCLK_RATIO 192 -> BCLK 9.216MHz
    TLV320ADC6140_DSP_CFG1=0xE0;     //DVOL same for all, 3 biquads/channel, no AGC
    TLV320ADC6140_IN_CH_EN0xE0;      //Input Channels 1-3 enabled
    TLV320ADC6140_ASI_OUT_CH_EN=0xE0;//Output Slots for Channel 1-3 enabled
    TLV320ADC6140_GPIO_CFG0=0xA2;    //GPIO1 as MCLK input, drive active low, weak high
    TLV320ADC6140_BIAS_CFG=0x60;     //MicBias fom VDD
    TLV320ADC6140_ASI_CH1=0x20;      //ASI CH1 as Right Slot 0
    TLV320ADC6140_ASI_CH2=0x21;      //ASI CH1 as Right Slot 1
    TLV320ADC6140_ASI_CH3=0x22;      //ASI CH1 as Right Slot 2
    TLV320ADC6140_CLK_SRC=0x10;      //CLK SRC selection
    TLV320ADC6140_CH1_CFG1=16;       //CH1 Gain 4dB
    TLV320ADC6140_CH2_CFG1=16;       //CH2 Gain 4dB
    TLV320ADC6140_CH3_CFG1=16;       //CH3 Gain 4dB

    请注意,增益寄存器值为十进制16,而不是十六进制16。 CLK输入由12.288MHz振荡器驱动。

    此致,

    Christoph

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

    e2e.ti.com/.../6140_5F00_2.h

    我用您所需的配置制作了一个I2C设置文件。 请尝试一下,看看这是否有帮助。

    此外,您不能在飞行中更改频道增益。 要更改通道增益,应关闭ADC,更改增益并打开ADC。 您可以尝试PWR_CFG寄存器位6来关闭ADC。

    我希望这能有所帮助。

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

    感谢您的回答。 PWR_CFG寄存器设置为0,然后在初始化例程期间进行任何调整。 寄存器的设置顺序是否重要? 因为除了顺序,我似乎不能真正发现您的设置与我的设置之间的差异(除了GPIO1的不同输出驱动器配置, 它不会被使用,因为它被配置为输入,并且您的配置设置GPO (px22)设置为“Drive active low and active high”(驱动活动低电平和活动高电平),但由于这也不是输出,因此也不会有任何区别)。

    其余部分似乎相同,但您的部分缺失(例如,在DSP_CFG1 (0x6C)中设置的Biquad配置和我的Biquad (抱歉,我之前未提及它们,因为我认为它们对我的问题可能不重要)。 也许您可以按照我的方式设置每个设置,并在您的端试用? 我的传开如下:

    const UCHAR biquad_tate_50Hz[20]=      {0x7f,0xf5,0x47,0xba,0x80,0x0b,0x6b,0xe2,0x7f,0xf5,0x47,0xba,0x7f,0xf4,0x94,0x1e,0x80,0x15,0x70,0x8a};
    const UCHAR biquad_tate_60Hz[20]=      {0x7f,0xf5,0x47,0xba,0x80,0x0b,0xba,0xe9,0x7f,0xf5,0x47,0xba,0x7f,0xf4,0x45,0x17,0x80,0x15,0x70,0x8a};
    const UCHAR biquad_low_pass_20kHz[20]=   {0x53,0x56,0xbe,0xa7,0x53,0x56,0xbe,0xa7,0xb5,0xb2,0xa5,0x05,0x61,0xcd,0x5a,0xfa,0xa0};

    其中,UCHAR从BQ1_N0_BYT1 (地址0x08,第0x02页)开始,然后按照它们存储在数组中的顺序连续写入,同时页面更改为需要的第3页。

    此致,

    Christoph

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

    设置寄存器的顺序不重要。  

    如何设置输入。 是差分信号。 请将原理图发送给我。

    首先,您可以尝试查看 内部具有0dB增益设置的全刻度模拟输入是否提供全刻度数字值。

    另外,CHX_CFG0位0应为0以禁用AGC和DRC。

    DSP_CFGx 位7应为0以禁用组控制

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

    输入INxP来自内置前置放大器的麦克风,INxM连接到相应的GND。 考虑到数据表,这是有效的单端输入,直流耦合(因为GND未通过电容器连接)。

    因此,我将CHX_CFG0的设置更改为0x30 (单端,直流耦合)。 我将设置改回无组控制(现在寄存器读数为0x60,所以我只设置了3个Biquads/channel)。

    将CHX_CFG1的设置更改为0x40后,我再次经历了静音。 当将增益设置为0dB时,信号会被正确记录,但我只能获得0.005 / 1的振幅。 使用十进制16 (+4dB)的工作设置,我得到的振幅约为0.02 /1。 高于该值的一切都不会继续工作。

    我必须尝试从信号发生器输入更强的信号, 但这将需要一些时间,我期望在增益为0的情况下工作(在尝试使用大声的音频源而不是将信号直接耦合到0.2 中之后,我的振幅级别大约为1的@。

    我是否缺少任何单端特定信息?

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

    麦克风输出的直流电平是多少?  

    是否可以尝试AC耦合麦克风信号。 这意味着将INxP连接到具有1uf电容器的麦克风输出。 INXM将通过使用 CHX_CFG0寄存器选择的IU电容器和交流耦合连接至GND。

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

    感谢您的回答。 复活节后回到办公室时我会尝试一下,如果工作正常,我会回写。 我觉得很奇怪,产出会完全保持沉默。 现在,我有一个解决方法,即以信号最大振幅为0.5Vrms的方式设置VREF。 通过这种方式,我至少可以在较少的模拟信号上获得成比例更高的信号电平和32位值,即更高的精度。

    此致,

    Christoph

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

    在直流耦合模式下,麦克风DC电平的最佳位置可能是Vref/2。 。 也许您可以测量麦克风直流电平并相应地设置参考电压