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.

[参考译文] TLV320AIC34:TLV320AI34 的复位/刷新输出

Guru**** 2952510 points

Other Parts Discussed in Thread: TLV320AIC34

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1644668/tlv320aic34-reset-flush-output-of-tlv320ai34

器件型号: TLV320AIC34

您好:

我遇到 TLV320AI34 问题、即首次启用并配置器件后、吞吐量 I2S ->音频输出延迟时间非常一致。 但是、如果我停止音频并稍后恢复、则吞吐量延迟与编解码器复位和配置后的第一次不同。 我希望能够在不执行复位和再次写入所有寄存器的情况下刷新或复位器件的输出。 到目前为止、我发现获得一致行为的唯一方法是执行完全硬复位+重新配置、这并不理想。 是否缺少某种“刷新“说明? 我在数据表中没有找到此类信息。

 

谢谢。

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

    您好、

    您能否分享此延迟的示波器屏幕截图或以某种方式进行测量? 无论上电时间如何、群延迟都应保持不变。 当您“停止音频“并重新启动时、是否有任何寄存器发生变化? 这是否意味着关闭时钟或只是在 DIN 引脚上不发送数据? 您还能共享寄存器转储吗?

    此致、
    Mir

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

    尊敬的 Mir:

    下面是一些示波器截图。 我正在使用 STM32 HAL 开始和结束 I2S/SAI 传输、以打开和关闭编解码器输出以发送音频数据。 我认为这是一个典型的使用案例、但尚未研究其 SAI 实施的细节。 我认为它既会关闭时钟、也会停止在串行引脚上发送数据、但如果这是潜在原因、我可以进行调查。

    对于每个图像、会执行一些数据的串行传输、关闭后再次运行。 黄色迹线是在串行数据流开始后发生的下降沿。 灰色持续跟踪是在每个示例中编解码器完全复位和配置后的第一次传输。 Indigo 跟踪是编解码器发出的用于第二次传输的信号。 所有情况下发送的数据都是相同的。 忽略输出信号的实际内容、结果符合预期。


    1.编解码器在第二次数据传输前未复位。 请注意、相对于黄色触发信号、第二次传输会使第一个传输提前大约 1 毫秒。 它也不能完全匹配开头的第一个迹线(灰色迹线中垂直光标之间的区域)、这导致我询问是否刷新、因为发送的数据对于这两个迹线都是相同的。


    2.在第二次传输之前,编解码器被重置,其寄存器被重新配置。 请注意、这两条迹线现在相对于黄色触发信号同相。


    3.上述两次捕获之间的一个区别是编解码器输出的初始值。 此布线与第一条布线相同、只是在第一次传输之后、我发送一个零帧来尝试将输出复位到初始状态。 它可以工作、但对延迟 问题没有影响。



    寄存器转储(我正在将编解码器块 B 用于该输出。 I2S 速度是 48kHz 采样速率。) 没有寄存器会更改这些设置。

    Codec B Register : Value(Hex)
       0 : 0x00   1 : 0x00   2 : 0x00   3 : 0x10   4 : 0x04   5 : 0x00   6 : 0x00
       7 : 0x0a   8 : 0x00   9 : 0x00  10 : 0x00  11 : 0x31  12 : 0x00  13 : 0x00
      14 : 0x00  15 : 0x80  16 : 0x80  17 : 0xff  18 : 0xff  19 : 0x78  20 : 0x78
      21 : 0x78  22 : 0x78  23 : 0x78  24 : 0x78  25 : 0x06  26 : 0x00  27 : 0xfe
      28 : 0x00  29 : 0x00  30 : 0xfe  31 : 0x00  32 : 0x00  33 : 0x08  34 : 0x00
      35 : 0x00  36 : 0x00  37 : 0xc0  38 : 0x06  39 : 0x00  40 : 0x00  41 : 0x00
      42 : 0x00  43 : 0x00  44 : 0x00  45 : 0x00  46 : 0x00  47 : 0x00  48 : 0x00
      49 : 0x00  50 : 0x00  51 : 0x04  52 : 0x00  53 : 0x00  54 : 0x00  55 : 0x00
      56 : 0x00  57 : 0x00  58 : 0x04  59 : 0x00  60 : 0x00  61 : 0x00  62 : 0x00
      63 : 0x00  64 : 0x00  65 : 0x04  66 : 0x00  67 : 0x00  68 : 0x00  69 : 0x00
      70 : 0x00  71 : 0x00  72 : 0x04  73 : 0x00  74 : 0x00  75 : 0x00  76 : 0x00
      77 : 0x00  78 : 0x00  79 : 0x00  80 : 0x00  81 : 0x00  82 : 0x88  83 : 0x00
      84 : 0x00  85 : 0x00  86 : 0x0b  87 : 0x00  88 : 0x00  89 : 0x00  90 : 0x00
      91 : 0x00  92 : 0x88  93 : 0x0b  94 : 0xd8  95 : 0x00  96 : 0x00  97 : 0x00
      98 : 0x00  99 : 0x00 100 : 0x00 101 : 0xc0 102 : 0x02 103 : 0x00 104 : 0x00
     105 : 0x00 106 : 0x00 107 : 0x00 108 : 0x00 109 : 0x00 110 : 0x00 111 : 0x00
     112 : 0x00 113 : 0x00 114 : 0x00 115 : 0x00 116 : 0x00 117 : 0x00 118 : 0x00
     119 : 0x00 120 : 0x00 121 : 0x00 122 : 0x00 123 : 0x00 124 : 0x00 125 : 0x00
     126 : 0x00 127 : 0x00

    如果您有任何建议、请告诉我。

    谢谢、

    Luke

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

    您好 Luke、

    您是否仅使用 ADC、或者也可以在 DAC 上测量该值? 在“传输“开始时变为低电平的信号来自哪里? 您能否在测量 DOUT 数据的同时测量 BCLK 和 WCLK、以便验证出现此问题时时时钟没有发生任何情况?

    此延迟以及黄色迹线变为低电平与信号开始之间的时间比群延迟和任何其他 I2S 特定时序的数量级长、因此我认为这可能是由您的 MCU 流程而不是编解码器造成的、但我们缩小范围。

    此致、
    Mir

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

    尊敬的 Mir:

    我仅使用 ADC。 下面是一些其他的示波器捕获和信息。

    变为低电平的信号是我将用作示波器触发器的 GPIO。 它是可靠的,结果是一致的。

    跟踪 1:硬复位并配置编解码器后发送的第一个数据。

    -黄色:GPIO 用于触发器

    -品红色:正的左侧输出

    青色:WCLK

    -蓝色: BCLK



    跟踪 2: 后续发送、中间没有编解码器复位。 请注意、光标的位置未从 Capture 1 更改、但品红色迹线的位置发送得更早。


    时钟会在预期的时间启动和停止、但看到输出之前的延迟不同。

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

    这里的捕获数据相同、只是青色布线是 DIN 而不是 WCLK。 再次请注意、延迟与第一次发送不同、而不是第二次发送。


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

    您好、

    我可以看到、在迹线 2 上的复位信号之后输出略有下降、与迹线 1 相比、似乎也为时过早。 可能当您发送 GPIO 时会出现压降? 发送 GPIO 时、您发送什么软件命令?

    -米尔

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

    步骤之前在品红色迹线上看到的值是之前发送的数据的最终值。 TLV320AIC34 似乎会输出最后一个一直发送的值、即使在 DIN 停止后也是如此。 我 在 DIN 上发送的第一个样本是零、这就是为什么您会在输出变回零时看到阶跃的原因。

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

    当复位信号变为有效状态时、您发送的是什么 I2C? 或者复位信号位于哪个引脚上? 此外、如果这是 ADC、您要测量哪个引脚来查看模拟输出? 这是模拟旁路还是通过 DAC 将 DOUT 信号转换回模拟信号? 我想知道是否可以重新创建此项、但仍不确定您在此处的设置。

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

    我在开始时配置一次 TLV320AIC、不会在其他地方执行任何寄存器写入。 测试程序如下所示:

    1. 使用 nRESET_B 线路进行硬复位
    2. 将编解码器 B 的寄存器 全部写入我之前文章中指定的值。
    3. 将 GPIO 变为低电平、作为示波器的触发信号。
    4. 开始发送数据(即开始向 DIN 发送串行数据,打开时钟)  
      1. 示波器捕获 DAC 输出、RIGHT_LOP_B
    5. 将 GPIO 变为高电平。
    6. 停止发送数据(即停止向 DIN 发送串行数据,关闭时钟)
    7. 等待任意时间
    8. 重复步骤 3-6、在步骤 4 中发送相同的数据。
    9. 比较示波器捕获结果。 请注意、与触发器相比、第二次捕获可显著引导第一个捕获。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Luke、

    今天是美国假期、因此回复会延迟。

    此致、

    Garret

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

    您好、

    感谢您的解释。 我们可以尝试在此处提供帮助的几件事:

    1) 调整寄存器 9、尝试启用 DAC 和 ADC 的重新同步、如果这没有任何帮助、请尝试 256 时钟模式、看看这样是否有所帮助

    2) 尝试关闭寄存器 38 中的短路保护

    如果这些不起作用、我可以继续建议一些尝试的事情、但让我们看看它是如何处理的。

    此外、您能否验证此问题仅在时钟重新启动时才发生、而如果时钟存在、整个音频传输之间的整个中断、则不会出现延迟问题?

    此致、
    Mir

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

    感谢您的建议。 寄存器 9 同步选项确实会改变行为、但这种方式的一致性较差。 第一种情况仍然不同、随后的转账按不同数额延迟。 遗憾的是、无论是否有同步选项、短路保护都不会产生任何影响。

    我可以查看保持时钟运行的情况。 在此期间、欢迎提出任何进一步的建议。

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

    您好 Luke、

    寄存器 9 中的 256 时钟模式会发生什么情况?  

    当时钟保持运行时、您是否能够检查它是否固定?

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

    尊敬的 Mir:  

    很抱歉耽误你的时间。 256 时钟模式在任何情况下都没有区别、行为的变化仅对应于 Re 同步模式。 我无法找到一种方法来保持时钟在硬件平台上运行。

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

    您好 Luke、  

    您是否也在关闭时钟时尝试过在中间对器件进行下电上电? 或者、芯片可能有 ADC/DAC 寄存器断电。 我明天就可以检查。

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

    尊敬的 MYR:

    我当前的解决方案是使用寄存器 1 对器件进行软复位、然后对所有寄存器进行重新编程。 我希望每次需要重新编程时都能有比重新编程更简单的效果、但如果这是唯一可行的、那么我想我必须坚持下去。

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

    您好 Luke、

    我还记得一件事 — 您可以尝试关闭软步进吗? 我知道这取决于时钟信号、那么当您关闭时可能会弄脏? 这将位于页 0 寄存器 19 和寄存器 22 中。

    此致、
    Mir