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:启用 DAC 后、aic34 i2c 线路会丢失

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/937222/tlv320aic34-aic34-i2c-line-gets-lost-after-dac-enabling

器件型号:TLV320AIC34

我们目前正在进行基于 aic34音频编解码器和 C6748的定制电路板设计。 我们正在尝试实施音频回送,即接收音频线路输入->ADC->McASP->EDMA->McASP->DAC->lineOut。

问题是、当我们基于 aic3106演示软件配置编解码器时、在为 DAC 寄存器加电后、我们无法再从 aic34编解码器上的寄存器读取、i2c 线将丢失。

详细信息:

Aic3106编解码器遵循 AIC31Reset --> AIC31DataConfig->AIC31SampleRateConfig->AIC31ADCInit->AIC31DACInit 的顺序。 我们使用相同的顺序、因为 aic34在概念上是具有不同 i2c 的2xaic3106

地址。 在对 aic34的编解码器 A 进行编程时,为了检查这些值是否被正确写入,我们从编解码器读回这些寄存器以进行完整性检查。 问题就是这样

我们可以成功读回 AIC31Reset、AIC31DataConfig、AIC31SampleRateConfig 和 AIC31ADCInit 的值。 但是、当我们为 AIC31DACInit 中的 DAC 加电时、我们无法再从编解码器中读回所有这些值。  此外、我们在 i2c 总线上接触其他 i2c 器件时也遇到问题、i2c 总线会损坏。   

它可能来自许多方面、但为了确保在软件方面、编解码器的编程是否缺少任何内容? 也就是说、我们是否必须将编解码器 A 和编解码器 b 同时编程到 samplplerateconfig?  

是否有"确定工作"的寄存器分配顺序或脚本或代码示例、以便我们可以将重点转移到硬件问题上? 因为我们的软件在 aic3106上偏置、aic34可能会有什么不同?

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

    Gokmalci 您好!

    这肯定不是编解码器的预期行为。 虽然没有强制序列需要遵循、但我们确实有一个建议的序列。 本 应用手册 中有一个 AIC3104示例、也可用于 AIC34。  

    您能否分享原理图的相关部分以便我了解一下?  

    此致、

    Aaron

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

    您好、Aaron、

    我们也没有预料到。 在发布此消息之前、我已在论坛中搜索 aic34并检查了该应用手册。  

    与往常一样、SW 应该证明应该责怪 HW 伙计们是无辜的:))我们考虑并消除了可能的 SW 原因。

    1) 1) C6748的引脚多路复用设置。 这可能是 C6748中某些行配置错误的原因、但我们仔细检查了哪些行被激活、我们不怀疑这一点是否被删除。

    2) 2)寄存器分配序列。 我们关注的示例是 C6748 Starterware 作为编解码器主设备和 McASP 从设备的音频回送示例。 我们也不怀疑这一点  

    在 lcdk6748上完美工作、并且寄存器配置序列与应用程序兼容。 注释。  

    3)寄存器值错误。(我将在消息的第二部分发送原理图、以使其易于阅读、否则消息将很大、无法理解)

    4) 4) i2c 控制总线问题。 有时、代码会增加等待寄存器读取/写入的延迟。 我们还检查了这一点、并在 i2c 导致问题时实现了3种不同的 i2c 实现(启用中断、基于事务、位 bang 样式)。 在所有相同的行为下、启用 DAC 线路后、i2c 读取/写入变得异常。 因此我们不认为 i2c 植入不是原因。   

    5) aic34的其他一些特殊情况。 我们怀疑可能需要将编解码器 A 和 b 一起设置到采样率和 PLL 设置。 但数据表指出、从编程角度来看、它们是2个独立的编解码器。 只有硬件限制、编解码器 A 和编解码器 b 复位信号必须连接在一起。 这对于我们的电路板来说是正确的、并消除了这种情况。  

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

     消息的第二部分:

    3) 3)错误的寄存器值。  

    我们参考的代码来自 C6748 Starterware 的演示代码。

    void AIC31I2SConfigure (空)

      volatile unsigned int delay = 0xFFF;

     

      AIC31Reset (CSL_I2C_0_DATA_CFG);

      while (delay--);

     

      /*配置数据格式和采样率*/

      AIC31DataConfig (CSL_I2C_0_DATA_CFG、AIC31_datatype_I2S、SLOT_SIZE、0);

      AIC31SampleRateConfig (CSL_I2C_0_DATA_CFG、AIC31_MODE_Both、SAMPLING_RATE);

     

      /*初始化 ADC 和 DAC */

      AIC31ADCInit (CSL_I2C_0_DATA_CFG);

      AIC31DACInit (CSL_I2C_0_DATA_CFG);

     我为 aic34的编解码器 A 应用了这些设置。 启用 aic34的 reg37后、i2c 线会损坏。

     

    LCDKC6748

    我们的电路板

    AIC31复位

    reg (0、0x00)、reg (1、0x80)

    相同

    AIC31DataConfig

    寄存器(9、0x00)、寄存器(10、0x00)

    相同

    AIC31SampleRateConfig

    寄存器(2、0x00)、寄存器(3、0x84)、

    reg (101、0x00)、reg (102、0x08)、

    reg (98、0x20)、reg (4、0x40)、

    reg (5、0x00)、reg (6、0x00)、

    寄存器(11、0x01)、寄存器(8、0xD0)

    寄存器(7、0xA0)

    相同

    AIC31ADCInit

     

    (REG15、0x00);(REG16、0x00);

    (REG17、0x00);REG18、0x00);

    (REG25、0xC0);

    REG20、0x00);REG23、0x00);

    (REG19、0x80);REG22、0x80);

    REG19、0x04);REG22、0x04);

          

    AIC31DACInit

     

     

    (REG37、0xE0);

     

      (REG41、0x02);REG42、0x6C);

        REG47、0x80);REG51、0x09);

        REG64、0x80);REG65、0x09);

      REG82、0x80);REG86、0x09);

        REG92、0x80);REG93、0x09);

        REG43、0x00);REG44、0x00);

     与编解码器 A 相关的原理图遵循与 ADC 相关的绿色圆圈输入、与 DAC 相关的蓝色输出。

    红色圆圈与电源相关、橙色圆圈与控制和数据总线相关。

    线性2可以是单端 J10或数字麦克风输入、MK1和 Mk2可通过跳线进行配置。  

    在启用跳线 J6、J29的情况下选择 J10、其他跳线断开。

    编解码器是时钟中的主器件、所以一个晶振生成其时钟为 MCLK 并且由 CODE_MCLK_A 供电

     

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

    Gokmalci 您好!

    I2C 线路是否上拉至 IOVDD? 我在原理图上的任何位置都看不到器件的电源引脚。 我很好奇先看这个。  

    此致、

    Aaron

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

    您好、Aaron、

    1) 1) I2C 线路上拉至 VCC_3.3 伏。 我将向您发送 C6748的原理图、其中这些线路被上拉。

    2) 2)与编解码器相关的电源引脚不会在电子邮件的第一部分发送。 下面是与 aic34关联的电源引脚、也是具有 CodecB 连接的电源引脚。 再加上第一封邮件、他们都已满

    aic34的所有连接。

    感谢您的检查。

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

    Gokmalci 您好!

    我看到 I2C 被上拉至与 IOVDD 相同的电压电平、因此这很好。 我在寄存器配置或原理图中也看不到任何奇怪的东西。

    您能否提供 I2C 命令的一些示波器截图? 尤其是在发出 DACInit 命令时。 当 I2C 总线进入未知状态时、会出现什么写入问题、这一点很有意思。 I2C 总线作为一个整体受到影响也很有意思。  

    此致、

    Aaron

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

    您好、Aaron、

    很抱歉耽误你的时间。 我将以附件的形式发送逻辑分析仪输出、这可能对您有所帮助。 您可以从链接 https://www.saleae.com/downloads/下载软件以检查逻辑分析仪输出

     下载完成后,在右角有“选项->打开捕捉”...以打开输出。 输出由写入寄存器和读取寄存器序列组成。 由于我们希望确保写入操作是否成功、因此我们回读以进行完整性检查。 我将在 dacinit 的“中断点”Reg (37,0x0e)处发送快照。 顺便说一下、启用电力线寄存器通常是否是一个突破点?

    在上一次寄存器成功寄存器写入期间、我们成功写入寄存器0x25 (十进制37)的值(0xe0)、即启用 DAC 电源线。 然后、我们要读回完整性检查的值、就存在了

    i2c 编解码器不再发出 ACK。 codecA 位于地址0x1a、顺便说一下、零附加为 r/w 位 lsb、它使第一个字节为0x34。    

    https://www.dropbox.com/s/mjeph4ohfeemcql/2%20MHz%2C%2020%20M%20Samples%20%5B1%5D.logicdata?dl=0

    逻辑分析仪输出的链接...

    真诚感谢您的支持。

    祝您在健康健康的日子过的非常好。

x 出现错误。请重试或与管理员联系。