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.

[参考译文] TLV320ADC3101:与TLV320ADC3101的I2S通信存在问题

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/604912/tlv320adc3101-problems-with-i2s-communication-with-tlv320adc3101

部件号:TLV320ADC3101

大家好,

我正在尝试通过TLV320ADC3101读取两个数字PDM麦克风中的数据,并通过I2S将大量PCM数据发送到微控制器。 很遗憾,我在I2S Bus上没有收到任何信号

我的配置如下:

  • BCLK = 512kHz,我想读2*16位(L/R)=32bit -> WCLK=16kHz
  • 我正在将BCLK用作TLV320的CLK。 因此,我将PLL与P=1,R=4,J=40,D=0000一起使用(以满足CLK计算示例数据表中的所有要求),然后除以40 (使用NADC =40和mAdc=1),以获得DMCLK输出的2.048 MHz。 (目前为止有效)
  • 从数字多指标类集调查中读取的数据应被128位(AOSR=128,处理块= PRB_R1)所取整,以获得16kHz的采样率。
  • 我使用了ADC音频接口控制1寄存器(Reg27)的默认配置(I2S,16位,BCLK=输入,WCLK=输入,3表示DOUT=禁用),DOUT控制寄存器(REG53)也是默认配置(总线管理器=禁用,DOUT=编解码器接口的主要DOUT输出)
  • 空间碎片协委会ADC寄存器(REG21)也默认为128

问题:

  1. 我是否缺少通过DOUT启用I2S输出的内容,或者在计算WCLK时是否存在谬误?
  2. 使用处理块时,miniDSP引擎的小数位比率(REG22)是否为任何值? (我只是有点困惑,因为据我所知,我用AOSR=128设置了小数位率。)

附件是我当前I2S通信的图像(蓝色=WCLK,绿色=BCLK,红色=DOUT/I2SData)

我真的很感谢你们的帮助:-)

 

 

 

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

    您好,Mike,

    欢迎来到E2E,感谢您对我们的产品感兴趣!

    为了将数字麦克风输入(PDM)用于TLV320ADC3101,您需要将数字麦克风配置为每个ADC信道的源。 这是通过将'1'写入寄存器81的位D2和D3来实现的。  您可以尝试一下吗? 此外,数字麦克风是否将数据流化到'ADC3101?  

    关于小数比,使用其中一个处理块时,不需要更改寄存器21和22,因此建议将它们保留为默认值。 这些寄存器仅在使用可编程miniDSP时有效。  

    此致,

     -Diego Mel é ndez López ñ a
      音频应用工程师

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

    您好,Diego,

    感谢您的快速回复!

    我已经将寄存器81设置为0xCE,麦克风正在传输数据,正如您在附件中看到的那样(蓝=clk,2.048MHz,绿色=PDM数据,2个麦克风),但我仍然没有收到I2S数据。

    我认为使用的BCLK (512kHz)和WCLK (16kHz) BCLK/WCLK=32 (=要发送的位数;16bit*2)可能有问题,因为在数据表示例中使用了BCLK/WCLK=64 (再次发送16bit*2)。  这可能是问题吗?

    关于小数,好的,我只将AOSR寄存器设置为128,并将其它寄存器(21和22)保留为其默认值。  

    也许我的TLV320 I2C配置有助于:

    • (PAGE0,0x00);          //选择Register Page 0 (注册页面0)
    • (0x01,0x01);        //软件重置

    • (REG04_CLK_GEN_multiplex,0x07); //将BCLK设置为PLL输入
    • (REG05_PLL_P_and_R_VAL,0x14);   //启用PLL,设置P=1 R=4
    • (REG06_PLL_J_VAL,0x28);             //J=40
    • (REG07_PLL_D_VAL_MSB,0x00);       //D=0
    • (REG08_PLL_D_VAL_LSB,0x00);       //D=0
    • (REG05_PLL_P_and_R_VAL,0x94);   //启动PLL
    • 延迟(10);//ms
    • (REG18_NADC_DIV,0xA8);      //N=40
    • (REG19_mAdc_DIV,0x81);   //M=1
    • //(REG20_AOSR,0x80);           //AOSR=128 ->默认值

    • //(REG27_AUDIO_INTERFACE1,0x00);      //->默认值
    • (REG51_DMCLK,0x28);                    //将DMCLK设置为DigiMic的CLK输出
    • (REG52_DMTIN,0x04);                    //将DMTIN设置为DigiMic的数据输入
    • //(REG53_DOUT,0x12);                    //->默认值
    • (REG61_PROCESSINGBLOCK,0x01);      //设置PRB_R1
    • (REG80_DIGIMIC_POLICS_SEL,0x02);  //在下降时捕获左声道(L),在上升沿捕获右声道(R)
    • (REG81_DIGIMIC,0xCE);  //打开ADC信道(L&R);将数据输入设置为DMTIN (L&R);启用DigiMics (L&R);禁用音量控制软步进
    • (REG82_ADC_CHANGE_MUTE,0x88);    //取消静音

    非常感谢我们的帮助!

    此致,

    Mike

     。  

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

    您好,Mike,

    感谢您提供详细反馈。 您提供的配置代码非常有用,设备似乎配置正确,时钟应正常。 但是,由于寄存器82被配置为使两个ADC信道静音,因此您似乎没有取消将ADC静音。 您是否可以通过写入0x00以注册82来尝试取消静音频道?

    在给定时钟条件下,我在EVM中使用您的代码(取消静音后)验证了器件的配置和行为是否正确。  

    此致,

     -Diego Mel é ndez López ñ a
      音频应用工程师

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

    你好,Diego

    非常感谢! 在您的帮助下,我成功地使TLV320运行正常。 我知道这只是一个写错的登记册,但我自己可以找到它。 J

    我还有一个问题。 正如我从数据表中了解的那样,如果只使用数字麦克风,则可以关闭TLV320的ADC。 这是否意味着不需要AVDD与3.3V的连接,还是意味着我仍然需要AVDD,而ADC只是通过寄存器配置断电?  

    此致,

    Mike

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

    您好,Mike,

    数据表的提及是指通过寄存器设置关闭ADC的电源。 设备的内部模拟块需要AVDD,因此应始终通电。  

    此致,

     -Diego Mel é ndez López ñ a
      音频应用工程师