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.

[参考译文] TAD5212EVM-K:TAD5212 DAC OUT 以及通过 I2S 实现的 PDM MIC — 不工作

Guru**** 2874030 points

Other Parts Discussed in Thread: TAD5212, TAD5212EVM-K, TAD5212-Q1

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1589634/tad5212evm-k-tad5212-dac-out-plus-pdm-mic-via-i2s---not-working

部件号: TAD5212EVM-K
主题中讨论的其他器件: TAD5212TAD5212-Q1

终端用户指南 TAD5212 一方 TAD5212EVM-K 会将 DAC 输出(通过 PC 的 USB)和 PDM MIC(通过 USB 连接到 PC)正常工作。

可以将其配置为清除 DAC 输出 中的 PDM 但配置有所不同、主要是在设置上
I2S 格式(寄存器 0x1A):
用于 DAC 输出 1A= 70 -工作正常。
PDM MIC 进行认证 1A= 60 -工作正常。

但结合使用 DAC 输出和 PDM MIC 输入- 失败
-带寄存器 1A= 60 - DAC 输出通道 2(右侧)“错误“(噪声,失真,更安静)= PDM IN 正常
-带寄存器 DAC.70 - 1A=输出正确、但现在 PDM 输入充满了噪声、失真(听起来好像有点奇怪)

寄存器 0x20、0x21((PDM 时隙)和 0x52、0x57((PDM MIC 音量)上的行为也很奇怪:
-如果配置了 24 位 (reg. 1A=60)、则工作正常
-但对于 32 位 (reg. 1A=70),寄存器 1F 必须不同 (reg1F=30 与 1F=21 ),
 根据数据表并与 DAC 时隙设置进行比较、实际上 1F=21 是合理的、而不是 30)
-和 PDM 通道 1, 2 的音量设置行为奇怪 (reg. 57 控制两个通道, reg. 52 是
  不管我设置什么、我都可以将 reg 静音。 52 — 仍然是一个信号,我可以设置通过 reg. 57 两个通道的音量)

因此、进行组合 DAC OUT 加 PDM IN — 失败

将命令保存到我的 I2C 配置文件末尾。
此处为 I2S 信号捕获了两个波形。
奇怪的是:
-配置为 I2S 但它看起来仍然像 TDM(( FS 只是一个脉冲,不稳定在整个左声道,但可以,它似乎工作)  
  BTW:此 I2S 信号波形由 XMOS AC-MB 生成(不是 TAD5212、
  作为从器件运行)
-即使它似乎是由 XMOS AC-MB 正确处理 — 它仍然是一个 8 槽 I2S 信号
  (参阅 BCLK 为 12.288MHz、FS 为 48KHz、仍然是 8x32 位时隙)

TAD5212.png

图 1:I2S 波形(由 XMOS AC-MB 生成):8 时隙 I2S、FS 作为脉冲(与 TDM 类似、但用作 I2S 设置、仅当选择 I2S 时、XMOS 似乎不会将其作为 TDM 进行处理)

TAD5212_2.png

图 2:PDM IN 信号(通道 2,红色):它是一个 32 位 I2S 数据帧!

我的假设:

生成的 I2S 时序错误(对于中的 PDM、DOUT 至 USB)。 或者 DOUT 抖动很多、不是在正确的时间出现、有时会被一个时钟边沿偏移(左右通道值交错)。

PC 上的 USB 驱动程序使用 24 位、48kHz(设置为 2 个通道用于 USB/DAC 输出、8 个通道用于 USB/USB PDM 输入)。
I2S 到 DAC 正确是具有 24 个有效位的 32 位帧(正常,LSB 在 32 位数据帧中为零)。
但中的 PDM 也是 32 位的 — 但现在所有 32 位都有效并已使用!
如果该 DOUT 信号来得太晚、但由于存在抖动、LSB 可以作为另一个通道的 MSB。
这似乎是发生的情况((PDM 通道 DOUT 对于发送到 PC 的 USB 流不正确)。
这会产生高噪声、失真。

如果 PDM MIC 被设置为 24 位 — 这很明显:现在最低位也是零,甚至它们会滑 入下一个通道作为 MSB — 仍然可以(不为其他通道设置 MSB)。

为 DAC 输出配置 24 位(失败)可能是合理的、例如、现在帧只有 24 位、但是
XMOS I2S 到 USB 希望看到 32 位时隙。 (实际上不清楚如何为一个 32 位帧设置 24 位有效数据)

因此、主要原因是:
-配置 32 位插槽(寄存器 1A = 70)
-并得到 PDM 麦克风 DOUT 信号输出(通过 USB 连接到 PC)正确
 (PDM MIC 希望使用 24 位!)

这里是我的 I2C 配置、观看关于寄存器 0x1A、0x1E、0x1F(和 0x52、0x57)的注释。
PDM 通道(寄存器 0x52、0x57)在 32 位模式(寄存器 1A=70)下的音量设置行为很奇怪。

w a0 00 00  #page 0
w a0 01 01
w a0 00 00  #page 0
w a0 02 09
w a0 0a 41  #PDMCLK = GPIO1
w a0 0d 02  #GPI1 = input or other function
w a0 10 51  #DOUT ss ASI DOUT
w a0 13 cc  #PDM DATA config
#w a0 19 00  #default
w a0 1a 70	#0x60 for MIC USB in, 0x70 for USB out !!!!!
w a0 1e 20  #PDM MIC slot - STRANGE!
w a0 1f 21  #PDM MIC slot - STRANGE! - why 0x30? not 0x21, 0x30 works on 1a=60??
#if reg 1a-70 -> set 1f=21 !!!!!
w a0 20 00
w a0 21 00
w a0 28 20  #DAC out slot - default
w a0 29 21  #DAC out slot - default - noise with reg. 1a = 60 !!!!!
#left channel ok, right channel works only with reg 1a = 70
w a0 35 00
w a0 52 f0  #PDM MIC volume - default A1 - STRANGE - does not matter as long reg 0x57
w a0 57 f0  #PDM MIC volume - default A1 - STRANGE - mutes both! different volume!
#creates heavy noise and just 57=01... is same volume (if reg 1a=70)!
w a0 64 30
w a0 65 61
w a0 6b 30
w a0 6c 61
w a0 73 08
w a0 76 cc
w a0 00 03
w a0 38 09
w a0 39 28
w a0 3a 26
w a0 3b 20
w a0 3c 00
w a0 3d 00
w a0 3e 09
w a0 48 01
w a0 49 01
w a0 00 0a
w a0 79 fd
w a0 7a db
w a0 7b 01
w a0 7c 80
w a0 7d 02
w a0 7e 24
w a0 7f ff
w a0 00 0b
w a0 08 7f
w a0 09 fb
w a0 0a b6
w a0 0b 01
w a0 00 11
w a0 4a 00
w a0 00 19
w a0 6f 0f
w a0 00 1a
w a0 1e 00
w a0 3a 00
w a0 40 00
w a0 41 0a
w a0 42 5c
w a0 43 b6
w a0 44 e0
w a0 45 00
w a0 46 00
w a0 47 00
w a0 00 1b
w a0 66 00
w a0 67 08
w a0 6a 00
w a0 6e 80
w a0 7a 00
w a0 7b 05
w a0 00 1c
w a0 24 0c
w a0 25 cc
w a0 26 cc
w a0 27 cc
w a0 28 7f
w a0 29 ff
w a0 2a ff
w a0 2b ff
w a0 34 08
w a0 43 01
w a0 52 03
w a0 53 c0
w a0 00 00
w a0 78 C0 #enable PDM and DAC channels
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Torsten:

    我认为这里可能存在时钟同步错误。 首先、该器件最多仅支持 4 个 PDM 麦克风通道。 其次、I2S 只能支持 2 个通道。 要使用 I2S 正确配置、您需要在 DOUT 上输出 2 个 PDM 通道、在第二条数据线路 DOUT2 上输出 2 个 PDM 通道。 您必须将一个 GPIO(可能为 GPIO2)配置为 DOUT2。

    因此在本例中、DIN 上有 2 个 DAC 数据通道(左时隙 0 上的 CH1 和右时隙 0 上的 CH2)、DOUT 上的 2 个 PDM 通道(左时隙 0 上的 CH1 和右时隙 0 上的 CH2)、DOUT2 上的 2 个 PDM 通道(左时隙 0 上 CH3 和右时隙 0 上的 CH4)、BCLK 2*32*48kHz = 3.072MHz、它们都将与 0x70 同步。

    请告诉我您对此的看法。

    此致、

    Garret

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

    “嗯“。
    生成的 I2S 信号(如图所示)仍然是一个  8 插槽(x 32 位) 比值。 我只使用评估板上的两个 PDM MIC(两个插槽和两个 ADC/ADC PDM 通道)。
    根据我的理解(另请参阅 DAC 上发布的 USB 至评估 DIN 的设置):必须将其设置为: 左侧插槽 0 和左侧插槽 1
    对于 I2S 帧有意义(在 FS 信号涵盖 8 个时隙! ):所以,现在左右两侧的 I2S 数据字出现在“常规 I2S“上,
    触发 FS 后时隙 0 和时隙 1 丢失。

    我假设我也要以类似的方式(寄存器 1E=20、1F=21)设置 MIC 至 USB 主机(作为 TAD5212 中的 I2S DOUT、Tx 通道)、左时隙 0 和左时隙 1。
    以便使用前两个时隙(如 I2S)。

    我进行了测试:

    • 禁用 DOUT(寄存器 10=00)! BTW:注册 10= 50 作为“ Hi-Z 输出“不起作用! (它是驱动的!!!!)
    • 因此、AC-MB 上的 DOUT1 信号悬空(不由 TAD5212 驱动)
    • 将 AC-MB DOUT1 与 DIN1 连接(反馈 DIN 至 DOUT)

    和: 很不错!!!

    我反馈了与输入信号相同的 I2S 数据信号(从主机 PC 播放)(MIC 到主机 PC,如所示)。
    这是清晰的声音,它正确地返回到主机 PC。

    确认我的假设

    • 它是一个 DOUT 时序有问题!
    • TAD5212 向主机 PC 发送信号“太晚“:这些位会交错一个 32 位通道数据包
    • 或:DOUT 抖动的 MSB

    请记住:
    AC-MB 板(带有 XMOS 芯片)也专为 TDM 而设计、具有 8 个插槽(始终)。
    为“I2S_"配置“配置 TAD5212 看起来仍然像 TDM 信号:这是“8 个时隙的 I2S_“。 您也可以使用清楚地看到它 BCLK 作为 12.288MHz (具有 48KHz FS)、
    否则、由于 I2S 信号“正确“、它应该是 3.072MHz、并且 FS 信号在 32 位期间为高电平、对于左通道 PCM 数据字则在 32 位期间为高电平。
    但这并不是这样(由于 AC-MB 上具有 XMOS 固件)。
    FS 仍然是一个时钟周期脉冲(即使在 I2S 模式下、但对于 XMOS 可能也可以)。

    详细分析和我的结论

    它是什么样的 DOUT 时序有问题 (对于 ADC/USB 至 PDM):

    • DIN(从 USB PC 到 DAC)的建立和保持时间看起来很完美 — 没问题
    • 但是 DOUT(到 PC)的建立和保持时序看起来很奇怪、尤其是 MSB 位!
    • 如果 DOUT“抖动器“上的 MSB-难怪我会收到这么多噪声(但在噪声下仍然部分信号听起来正确)
      (随机的“跳转“MSB 会产生半摆幅振幅噪声 — 我听到的是)

    图 1:AC-MB 上的 DOUT 和 DIN 与相同信号 — 正常

    图 2:DOUT(在 MC-AB 上)用作 ADC/USB PDM、通过 USB 连接到主机

    图 3:DOUT 看起来位移且“太晚“?

    图 4:实际上、DOUT 的 MSB 似乎是“抖动“(这里的保持时间非常短)

    图 5:DOUT 的 MSB 似乎始终“在角落“

    图 6:DOUT 的保持时间仅为 8ns — 有时可能出现在 BLCK 的上升沿之前?

    DOUT 在设置和保持时间方面与 DIN 信号完全不同。
    如果 DOUT“抖动器“和 MSB 采样错误 — 严重失真(和噪声)

    请、您能否尝试并行为 DIN 和 DOUT 设置和配置 TAD5212?
    “你说什么?

    我不认为 DOUT 被移动了一位:在数据字的末尾、它看起来更好(更大的建立和保持时间)、主要是 MSB 看起来可疑。
    这似乎主要是一个关于“当 MSB 发送“的问题。

    我不认为我的寄存器配置仍然错误(什么会导致 DOUT 数据字移位?)。

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

    BTW:
    如果我为 DOUT 配置其他时隙、例如“左时隙 2“、我看到数据字现在被移动(移入时隙 2)。
    更改寄存器 1F= 22

    因此,它清楚地确认: I2S 信号仍然是 8 时隙(32 位)信号

    图 1:DOUT 寄存器 1F= 22 — 现在右侧通道位于左侧插槽 2 中

    当我配置 reg。 1F= 30 - AS 提到了 TAx5x12EVM-K 手册第 32 页 、“###### 从 DMIC 测试######记录 “、
    我产生的只是所有噪声(仍然立体声,不知道为什么,因为波形显示没有正确的通道处于活动状态)!
    它还使用寄存器。 1A= 70(32 位,明显)-但这个例子似乎是错误的。

    图 2:DOUT 寄存器 1F= 30 -根据手册 — 只是所有的噪音(立体声!,甚至没有正确的通道在 I2S 看到)。

    这是什么?
    通过 PDM 和 AC-MB 输出 ADC/USB 的正确配置是什么?

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

    尊敬的 Torsten:

    感谢您的详细说明。 我下周将在 EVM 上进行测试、然后在这里提供结果。

    此致、

    Garret

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

    它现在起作用了!
    但不幸的是 确认 TAD5212 芯片中存在错误

    错误是:

    • 并在您将 PASI 配置为时运行 I2S、32 位 (XMOS USB 需要)-此设置为“global"</s>“
      (它在 PASI 上设置 DOUT 和 DIN)
    • 但是 DOUT (PDM MIC 通道为 I2S 到 XMOS、USB 到主机 PC)
      延迟一个(或几乎一个)BCLK 周期!

    如何使其正常工作?:

    • 配置 TDM (影响 DIN 和 DOUT、现在 DIN(来自主机 PC 的 USB) 错误)错误、 寄存器 1A= 30 )
    • 但是 DIN 的 ADD (DAC 输出、来自主机 PC 的 USB) 一个额外的 BCLK 延迟 ( 寄存器 26= 01 )

    请在末尾找到我的工作 I2C 配置脚本
    从技术上讲、TAD5212 现在以 TDM 模式运行。 为了使其符合 I2S 标准(适用于 XMOS I2S)-数据 (DIN) 必须移位一个时钟周期。
    DOUT((PDM MIC 到 USB 主机)已被移动、在配置中没有任何要添加的内容(考虑了“错误“)。

    确认 DOUT 时序错误的波形(在 I2S 模式下)

    图 1:DOUT 信号(通过 USB 将 PDM MIC 移动到 PC) 一)一个 BCLK 周期(在 I2S 模式下) 添加 DOUT 的额外移位、变为“太晚“)

    图 2:带有 TDM 配置 DOUT 和 DIN 正常工作(需要调整 DIN 以使其符合 XMOS I2S 标准)

    I2C 配置脚本

    #working config for DAC out and PDM MIC in
    w a0 00 00  #page 0
    w a0 01 01
    w a0 00 00  #page 0
    w a0 02 09
    w a0 0a 41  #PDMCLK = GPIO1
    w a0 0d 02  #GPI1 = input or other function
    w a0 10 51  #DOUT as ASI DOUT  =51 (=00 is DOUT floating)
    w a0 13 cc  #PDM DATA config
    #!!!!! it must be TDM and clk offset tweaked - I2S FAILS !!!!!
    w a0 1a 30	#0x30 for MIC USB in, 0x70 for USB out !!!!!
    #optional (works in the same way!
    #w a0 1c 1f  #TDM reg. 1a=30 and offset - works also for PDM MIC
    w a0 26 01  #DAC out TDM with one clk shifted!
    w a0 1e 20  #PDM MIC slot
    w a0 1f 21  #PDM MIC slot - STRANGE! - why 0x30? not 0x21 - must be 21
    w a0 20 00
    w a0 21 00
    w a0 28 20  #DAC out slot - default
    w a0 29 21  #DAC out slot - default - DIN and DOUT with identical slot config!
    w a0 35 00
    w a0 52 f4  #PDM MIC volume - default A1
    w a0 57 f4  #PDM MIC volume - default A1
    w a0 64 30
    w a0 65 61
    w a0 6b 30
    w a0 6c 61
    w a0 73 08
    w a0 76 cc  #PDM and DAC channels
    w a0 00 03
    w a0 38 09
    w a0 39 28
    w a0 3a 26
    w a0 3b 20
    w a0 3c 00
    w a0 3d 00
    w a0 3e 09
    w a0 48 01
    w a0 49 01
    w a0 00 0a
    w a0 79 fd
    w a0 7a db
    w a0 7b 01
    w a0 7c 80
    w a0 7d 02
    w a0 7e 24
    w a0 7f ff
    w a0 00 0b
    w a0 08 7f
    w a0 09 fb
    w a0 0a b6
    w a0 0b 01
    w a0 00 11
    w a0 4a 00
    w a0 00 19
    w a0 6f 0f
    w a0 00 1a
    w a0 1e 00
    w a0 3a 00
    w a0 40 00
    w a0 41 0a
    w a0 42 5c
    w a0 43 b6
    w a0 44 e0
    w a0 45 00
    w a0 46 00
    w a0 47 00
    w a0 00 1b
    w a0 66 00
    w a0 67 08
    w a0 6a 00
    w a0 6e 80
    w a0 7a 00
    w a0 7b 05
    w a0 00 1c
    w a0 24 0c
    w a0 25 cc
    w a0 26 cc
    w a0 27 cc
    w a0 28 7f
    w a0 29 ff
    w a0 2a ff
    w a0 2b ff
    w a0 34 08
    w a0 43 01
    w a0 52 03
    w a0 53 c0
    w a0 00 00
    w a0 78 c0  #enable PDM and DAC channels

    参阅这些寄存器

    W a0 1a 30 #0x30 表示 MIC USB 输入、0x70 表示 USB 输出!!!! 它设置 TDM 模式(而不是 I2S)!

    W a0 26 01.  通过一个时钟移位的#DAC 输出 TDM!

    W a0 1e 20 # PDM 麦克风插槽
    宽 a0 1f   21 # PDM MIC 插槽 — 奇怪! -为什么是 0x30? 不是 0x21 — 必须是 21

    BTW:#### 从 DMIC 测试#####记录 指定 TAx5x12EVM-K 手册、第 32 页 - 是错的

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

    BTW:你可以“反转 bug “为:
    “如果配置 TDM — 并希望作为 TDM 采样/使用 — DOUT (PDM 至 I2S) 将不起作用
    (此数据线现在应延迟一个时钟周期,TDM 从不工作)。

    我的评估板焊接了芯片、标记为:

    • TAX5LV4
    • ti 468.
    • AGQ7

    订购的芯片显示:

    • TAD5212
    • ti 488.
    • APXF

    我的 EVAL 板是否装配了早期版本(例如 A0)、但订购的芯片是较新的版本(例如 B0)、并修复了错误?
    我找不到任何勘误文档(TAD5212 是否“无错误“?)。

    开玩笑
    如果您(TI 公司)确认为:“是的、I2S 配置与 DOUT 有问题“、
    请您能否向我发送一个焊接了 TAD5212-Q1 最新版本的评估板?
    谢谢你。

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

    尊敬的 Torsten:

    抱歉之前没有捕捉到这一点,但我现在看到问题很清楚 — 这是 XMOS 导致的、而不是我们的器件 TAD5212。 XMOS 无法识别具有左右通道的真正 I2S 协议 — 它只能如您所注意到的那样与 TDM 连接。

    因此、要通过 USB 发送音频、 您必须在 TDM 模式下配置 TAD5212 。 此外、XMOS 会在其 DOUT 上引入一位延迟、这就是必须设置 RX 偏移(寄存器 0x26 = 0x01)的原因、如您所见。

    这是 不是芯片中的错误  而是适应 XMOS 的局限性。

    为了使用为 I2S 模式配置器件、您必须通过 AC-MB 底部边缘的外部 ASI 引脚提供时钟。

    此致、

    Garret

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

    谢谢你。
    明白了。 XMOS AC-MB 是否会有固件更新?

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

    尊敬的 Torsten:

    我不知道、因为 XMOS 不是 TI 器件。

    此致、

    Garret