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:通过I2S从TLV读取小数值时,接收到2-3倍相同的采样值

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/628500/tlv320adc3101-receiving-2-3-times-the-same-sample-value-when-reading-decimated-values-from-tlv-via-i2s

部件号:TLV320ADC3101

大家好,
我想使用TLV320ADC3101来抽取2个数字PDM麦克风(L/R),其小数因子为128。 当我想通过I2S获得采样率为16kHz和每麦克风16位的值时,微控制器提供BCLK (512kHz)和WCLK (16kHz)。 IC的PLL配置为提供麦克风CLK (2.048Mhz)。

我可以接收到所需采样率的值,但问题是我总是得到相同值的2或3倍,这会导致声音不好。 首先我认为在微控制器上接收数据有问题,但在经过微控制器的配置后,我用示波器查看了传入的数据,我发现TLV确实发送了2或3倍的相同值 用于左右麦克风。

我已经尝试过以下操作:
•发送24位而不是16位以获得更高的分辨率->还会导致2或3个重复值。
•为每个帧提供更多时间->将BCLK增加到1.024MHz (包括新的PLL设置),但使用相同的WCLK (16kHz)。 帧长度32位,其中我发送16个数据位,其余16位则不发送任何内容(左和右)->再次发送2-3个重复值
•…

您是否知道可能会出现什么问题? TLV何时正常发送相同的数据(计时问题,没有新值可用,... ?)

谢谢!
Mike

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

    您好,Mike,

    这不是此设备的常见行为,是否已尝试验证是否仅在使用数字麦克风时才出现此问题? 我建议您尝试将设备的模拟输入用作ADC源,并查看重复的样例问题是否与模拟输入重复出现。  

    我认为该问题可能与时钟设置有关,您可以共享您用于此设备的时钟配置吗?  

    此致,

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

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

    您好,Diego,

    感谢您的快速回复。

    遗憾的是,我无法使用模拟麦克风进行测试,因为TLV (与数字麦克风连接)安装在PCB上,布局符合我的要求。 对于我的用户案例,我只想使用TLV从2个麦克风中抽选PDM数据,然后通过I2S将其发送到微处理器,在那里处理数据。

    我的时钟设置如下:

    • BCLK=1024kHz (-> PLLCLK_In)
    • WCLK=16kHz
    • 用于每个麦克风信道
      • worth-length=16位  
      • frame-relay =32位  

    • PLL:
      • P=1
      • R=2
      • D=0000
      • J=40
      • NADC_DIV=40
      • ADC_DIV=1
    • 产生的麦克风CLK=2048kHz (->CLKOUT)(我也测量了这个)
    • 处理块1
    • ADC接口文字长度=16位
    • AOSR=128

    此处的其他内容是如何配置TLV寄存器:

    注册
    0 0x00
    1. 0x01
    4. 0x07
    6. 0x28
    7. 0x00
    8. 0x00
    5. 0x92
    延迟10ms
    18. 0xA8
    19. 0x81
    27. 0x00
    51. 0x28
    52. 0x04
    53. 0x02
    61. 0x01
    80 0x02
    81. 0xCE
    82. 0x00
    83. 0x68
    84. 0x68

    寄存器的设置顺序可能有问题?

    此致,

    Mike

     

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

    您好,Mike,

    感谢您的反馈。 如果您无法使用模拟输入进行测试,则可能很难找到设备的根本原因。 我查看了您的寄存器配置和设置,一切看起来都很好,但我想请您尝试禁用寄存器53中DOUT的总线管理器功能。

    遗憾的是,我没有一个数字麦克风可以在EVM中试用您的代码。 请确认I²S时钟是否符合预期?

    此致,

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

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

    您好,Diego,

    感谢您的回复。
    n‘t,我没有模拟麦克风,因为我只想使用数字麦克风。 我的意思是,我可以尝试将一些电线焊接到IC上,并将函数/波发生器连接到IC上,但n‘t TLV的尺寸,这是最简单的方法。
    但到目前为止,我使用AudioPrecicion来捕获TLV (PDM数据)和TLV (I2S 16位数据流)之前的数据。 在TLV之前,捕获的声音在TLV和抽取过程之后清晰,声音与我通过微控制器接收数据时的声音相同->始终是相同采样值的2-3倍。 (我n‘t了这项音频建议测试,以确保我在微控制器上没有错误)

    我已经禁用了DOUT Bus Keeper,很遗憾,这没有解决我的问题。

    我测量了所有时钟的频率(参见第一张随附的图像):

    BCLK=1024khz (绿色)
    WCLK=16kHz  (红色)
    麦克风Clk=2048kHz
    未使用MCLK。

    左侧和右侧通道的I2S数据流值是相同值的2倍 (蓝色)。

    附加的第二幅图像显示了PDM数据信号(蓝色)和麦克风CLK (绿色),光标显示了两者之间的延迟(最多约100ns)。


    非常感谢您的帮助!
    谢谢!
    Mike

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

    您好,Mike:

    我已经查看了您的配置设置,发现了一个问题,它可以解释为什么您没有获得正确的记录数据。 您是否可以按如下所述修改以下寄存器的配置:

    延迟10ms

    18 0x94

    19 0x82

    基本上将“NADC”分配器编程为“20”而不是“40”,将mAdc分配器编程为“2”而不是“1”。 之所以需要此更改,是因为对于内部DSP处理,您已选择PRB_R1,它至少有188个周期用于处理,如数据表第31页所述。 通过您的配置,DSP只获得128个周期,而通过上述更新,DSP现在将获得256个周期,即超过188个周期。  

    请告知我们上述设备配置更改的测试结果。  我希望通过这些更改,您将获得正确的数字麦克风录音输出。

    此致,

    Uttam

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

    您好,Uttam:

    我尝试了您建议的解决方案,这解决了我的问题。 :)

    非常感谢您给我这一提示! 现在我终于可以继续开发我的项目了。

    此致,

    Mike