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.

[参考译文] TLV320AIC3105:I2S 与 TDM 模式偏移?

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1307474/tlv320aic3105-i2s-vs-tdm-mode-offset

器件型号:TLV320AIC3105

您好!  

我能够让 TLV320AIC3105在 I2S 模式下与 teensy 音频库完美地运行。  

bool AudioControlTLV320AIC3105::aic3105_initCLK (select_wire wires, device dev){
 
  //Table 12. Page 0/Register 7: Codec Datapath Setup Register
  writeRegister(wires, dev, Page_00, 0x07, 0b10001010);// w 30 07 8A P0_R7	 0b10001010
  //Table 13. Page 0/Register 8: Audio Serial Data Interface Control Register A
  // D5 R/W 0 Serial Output Data Driver (DOUT) 3-State Control
    // 0: Do not place DOUT in high-impedance state when valid data is not being sent.
    // 1: Place DOUT in high-impedance state when valid data is not being sent.
  writeRegister(wires, dev, Page_00, 0x09, 0b00100000);
  // Table 14. Page 0/Register 9: Audio Serial Data Interface Control Register B
  writeRegister(wires, dev, Page_00, 0x09, 0b00000000);
  //Table 100. Page 0/Register 102: Clock Generation Control Register
  //writeRegister(wires, dev, Page_00, 0x66, 0b00000010);// w 30 66 A0 P0_R102 0b10100000	
  return true;
}

在 TDM 模式中、偏移为"1"。 因此、DAC 在每个插槽具有 16位模式时都能完美响应:器件1移位1 |器件2移位33 |器件3移位65 |器件4移位97。

但 ADC 似乎没有遵循相同的失调电压?  

bool AudioControlTLV320AIC3105::aic3105_enableTDM(select_wire wires, device dev) {
  
  //Table 14. Page 0/Register 9: Audio Serial Data Interface Control Register B
  //Set to DSP mode
  //Specify 32 bit word length.
  writeRegister(wires, dev, Page_00, 9, 0b01000111); 

  //Table 15. Page 0/Register 10: Audio Serial Data Interface Control Register C
  //Set the Offset 1 bit clock - 255 bit clocks.
  // 16 Bit Mode: device 1 shift 1 | device 2 shift 33 | device 3 shift 65 | device 4 shift 97
  writeRegister(wires, dev, Page_00, 10, 33); 
  
    return true;
}

在 I2S 模式下运行时、ADC 输出的音频非常清晰明了。 但是、当我切换到 TDM 模式时、声音很大、而且很尖锐。 我可以听到它所扮演的关键,但它显然不在正确的位置... 但是、ADC 和 DAC 时隙似乎在同一个寄存器(页0/寄存器10)上?  

是否应该考虑某种因素以尝试使 ADC 在 TDM 模式下工作?

杰伊

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

    您好、Jay、

    我不熟悉 tensy 库、但"杂乱而响亮"的声音听起来好像有一些错位会导致削波。 请尝试将 ADC 偏移改回0。 否则、您需要再次检查数字音频接收器预期的偏移是否与 ADC 中的偏移相匹配。

    此致、
    J·麦克弗森  

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

    感谢您的答复。  

    您能否确认唯一的偏移设置位于 //表15。 页0/寄存器10:音频串行数据接口控制寄存器 C? 更改此设置会对 ADC 和 DAC 都产生影响、对吗? DAC 在 TDM 模式下工作正常、关闭的是 ADC。  

    我计划今天运行的一个测试是绕过其中一个缓冲区。 在 DAC、BCLK、MCLK、LRCLK 上、I 在 发送端具有74LVC1G125GV (不在接收时)。 在 ADC SDOUT 上、我在 输出端有一个74LVC1G125GV、然后在接收端有另一个。 之所以可以实现这一点、是因为数据线是可逆的(在其他配置上)、并且采用这种方式比使用旁路进行接收更容易。  我想知道这个双缓冲器是否会在 TDM 中使用的高速时引起足够的轻微延迟来引起问题。 在 I2S 模式下运行良好、因此我想在深入研究之前会问这个问题。  

    编辑:我刚刚绕过了 SDOUT 并直接进入了 MCU、但问题并没有改变。  

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

    您好、Jay、

    抱歉、您说得对、偏移是通用的。 TDM 模式通常不包含偏移、因此我会再次检查接收器是否需要偏移。 此外、BCLK 对齐会在 I2S 和 TDM 模式之间变化、您需要再次检查接收器是否需要正确的锁存边沿。

    此致、
    J·麦克弗森

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

    TDM 和 DSP 之间的区别是什么? 相关: https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1246732/tas6584-q1-dsp-mode-vs-tdm-mode?tisearch=e2e-sitesearch&keymatch=tdm%2520vs%2520dsp#

    TLV320AIC3105是否支持 TDM 左对齐? DSP 似乎正在发送右对齐? 或者 DSP 模式与 TDM 模式完全不同?

    BCLK 对齐在 I2S 和 TDM 模式之间变化、您需要再次检查接收器是否需要正确的锁存边沿。

    [/报价]

    是的、我的 MCU 似乎需要左对齐。 它可能是用于 DAC 的、这是一运气、因为3105可能可以接收 我发送它的信号、这是交替进行的。 但我的 MCU 希望数据 位在 BCLK 的上升沿启动(带有1位偏移)。  

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

    3105的 ADC 输出延迟了1位吗? 3105似乎在偏移为2的情况下发送 ADC、而 DAC 的接收偏移为1。 MCU 期望两者的偏移值均为1。  

    黄色= LRCLK
    紫色= DAC 数据(在主板外、连接至3105)
    绿色= BCLK
    蓝色= ADC 数据

    您将在下面看到、蓝色 ADC 信号稍微恰好是 DAC 信号。  足以导致 MCU 认为它关了一点。  

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

    您好、Jay、

    TDM 是 I2S 的通用格式、没有标准化格式。 DSP 和 TDM 通常可以互换、但应注意确保格式符合预期。  根据数据表、DSP 模式不包含数据缓冲、这意味着通道2的数据紧随通道1的数据。 这与 TDM 模式非常相似。 AIC3105中的左对齐模式是仅立体声模式、基本上与 I2S 等效、只是移除了偏移。

    我不会期望 ADC 中有额外的偏移。 很难说仅查看一个样本时是否存在偏移。 MSB 似乎始终为低电平吗? 即使如此、向右移动也会使信号更柔和、而不是更响亮。 控制器也会产生 DAC 信号、不是吗? 如果向 DAC 信号添加失调电压以使其匹配、会出现什么情况?

    此外、我对位时钟的三角程度感到担忧。 能否仔细检查一下它是否满足时序要求?

    我知道这有很多问题、但像这样的时机性问题通常有很多方法可以解决。

    此致、
    J·麦克弗森

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

    Jeff、您好!  

    问题没有问题。 它是有帮助的。 谢谢。

    此外、我对位时钟的三角程度感到担忧。 能否仔细检查一下它是否满足时序要求?

    [/报价]

     接地没有正确连接。 现在不是三角形。  

    此外,控制器也正在生成 DAC 信号是不是? 如果向 DAC 信号添加偏移以使其匹配,会发生什么情况?

    是的、DAC 由设备生成。 我不知道我怎么可以偏移信号的任何...  

    在这张图片上,我将从这个视频发送一个1kHz 正弦波到我的 PC>USB>Mainboard>3105和一个电话>3105>主板。  我觉得 ADC 在发送 DAC 时恰好发送。 我知道这只是一个样品,但这似乎是一般情况下,不管我拍了多少张照片。 我有一个1 kHz 正弦播放从 USB>teensy>3105和也从电话>3105>teensy 使用此视频: https://www.youtube.com/watch?v=3FBijeNg_Gs

    请注意、ADC 在 DAC 的右侧...

    我也想知道我的 PLL 和时钟。 这是我目前拥有的库。 我启用了 PLL、但没有变化。 我是否需要比现在更多的时间来配置时钟? 我的其余代码只是配置混频器和卷。  

    bool AudioControlTLV320AIC3105::aic3105_enableTDM(select_wire wires, device dev) {
    
    // Table 7. Page 0/Register 2: Codec Sample Rate Select Register
    // In the TLV320AIC3105, for page 0, register 2, the ADC fS must be set equal to the DAC
    // fS. This is done by setting the value of bits D7–D4 equal to that of bits D3–D0.
    // Sample Rate Select
    // 0000: DAC fS = fS(ref)/1
    // 0001: DAC fS = fS(ref)/1.5
    // 0010: DAC fS = fS(ref)/2
    // 0011: DAC fS = fS(ref)/2.5
    // 0100: DAC fS = fS(ref)/3
    // 0101: DAC fS = fS(ref)/3.5
    // 0110: DAC fS = fS(ref)/4
    // 0111: DAC fS = fS(ref)/4.5
    // 1000: DAC fS = fS(ref)/5
    // 1001: DAC fS = fS(ref)/5.5
    // 1010: DAC fS = fS(ref)/6
    // 1011–1111 : Reserved, do not write these sequences.
    //  writeRegister(wires, dev, Page_00, 2, 0b00000000);
    
    //Table 8. Page 0/Register 3: PLL Programming Register A
    // D7 1: PLL is enabled
     writeRegister(wires, dev, Page_00, 3, 0b10000000);
    
    
      //Table 12. Page 0/Register 7: Codec Datapath Setup Register
      writeRegister(wires, dev, Page_00, 0x07, 0b10001010);// w 30 07 8A P0_R7	 0b10001010
      //Table 13. Page 0/Register 8: Audio Serial Data Interface Control Register A
      // D5 R/W 0 Serial Output Data Driver (DOUT) 3-State Control
        // 0: Do not place DOUT in high-impedance state when valid data is not being sent.
        // 1: Place DOUT in high-impedance state when valid data is not being sent.
      writeRegister(wires, dev, Page_00, 0x09, 0b00100000);
    
      //Table 14. Page 0/Register 9: Audio Serial Data Interface Control Register B
      //Set to DSP mode
      //Specify 32 bit word length.
      writeRegister(wires, dev, Page_00, 9, 0b01000000); 
    
      //Table 15. Page 0/Register 10: Audio Serial Data Interface Control Register C
      //Set the Offset 1 bit clock - 255 bit clocks.
      // 16 Bit Mode: device 1 shift 1 | device 2 shift 33 | device 3 shift 65 | device 4 shift 97
      writeRegister(wires, dev, Page_00, 10, 1); 
    
    
      return true;
    }

    谢谢。  

    杰伊

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

    I2S 模式适用于 DAC 和 ADC。 听起来不错。 但是、数据行看起来仍在时钟后面、这难道不是很有趣吗? 它应该在上升沿、对吧?

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

    您好、Jay、

    在 I2S 模式下、器件会自动进行1位移位、这就是它在第二张图片中看起来会延迟的原因。 在第二幅图中、时钟看起来得到了更大的改进:数据清楚地锁存在下降沿(数据在上升沿变为有效)。 在之前的图片中、它看起来不是1位偏移、而是 DAC 数据和 ADC 数据被锁存在不同的边沿。

    我非常怀疑这是 PLL 问题。 如果 I2S 模式听上去不错、我没有理由认为时钟需要在 I2S 和 TDM 模式之间切换。 我仍然怀疑编解码器尝试通过 ADC 输出的内容与 Teensy 输出到编解码器 DAC 的内容之间存在不匹配情况。

    此致、
    J·麦克弗森  

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

    我想数据是正确对齐的。 Teensy (紫色)和 ADC (蓝色)。  我不知道这是什么证明,但它是有趣的,尽管如此。  

    e2e.ti.com/.../20231228_5F00_151759.mp4

    我仍然怀疑编解码器尝试通过 ADC 输出的内容与 teensy 输出到编解码器 DAC 的内容不匹配。

    我会继续深入研究。

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

    teensy 论坛上的另一个用户说我的探头需要是10x 'd 和重新拍摄。 所以我做了。 清楚地表明在 TDM 模式下延迟发送 ADC。 我的黄色探头的10x 开关坏了、所以我一次只处理一条线路。  

    TDM 示例、ADC 线。  

    TDM 示例、DAC 线

    I2S 示例、ADC 线

    I2S 示例、DAC 线路。  

    ADC 被延迟发送。 我只是不知道为什么。 我不相信是问题所在。 时钟中必须包含某些内容。 3105只是很晚才发出 ADC 位...

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

    您好、Jay、

    回顾数据表、I2S 和 TDM 模式之间的时序是独立列出的、尽管它们几乎是相同的。 因此、我认为这可能只是器件的一个特性、并且它似乎在规格范围内(BCLK 边沿和 SDOUT 之间的延迟<20ns)。

    即使很晚、数据在下半个周期(下降沿)之前是稳定的、因此我认为只要接收器和器件之间的边沿对齐正确、它就应该能够工作。

    此致、
    J·麦克弗森

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

    Jeff、  

    是的、我认为您是对的。 但是,另一个用户在另一个论坛上指出。 "字时钟脉冲与数据表相差半个时钟-想知道这是否相关。" 这让我感到奇怪。 您应该注意到、我的字时钟在位时钟的下降沿上升、而不是上升沿。  只是一个想法。  

    当我来到办公桌前时、我将要运行另外几个测试、我也会报告给我。 谢谢你。  

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

    您好、Jay、

    他们说得很好,我同意。 边沿对齐可能导致意外的位移、从而导致您听到的失真。 也可能无法解释您在 ADC 输出上看到的额外延迟。

    我们期待收到您的回复、
    J·麦克弗森