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.

[参考译文] LAUNCHCC3235MOD:TLV320AIC3254音频编解码器的 I2C 问题

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1298921/launchcc3235mod-i2c-issue-with-tlv320aic3254-audio-codec

器件型号:LAUNCHCC3235MOD
主题中讨论的其他器件:TLV320AIC3254CC3235MODSF

您好

我在 从 CC3235MODSF MCU 设置 TLV320AIC3254音频编解码器的音量时遇到问题、在音频论坛中提出问题后、建议我在此处提出、因为此问题似乎与 I2C 通信相关

我现在使用 LAUNCHCC3235MOD 板进行测试、其中安装了 AUDBOOST 板、并运行 CC32XX SDK 随附的 i2secho 示例。 虽然 i2secho 示例似乎正常运行、但该 I2C 回读会返回错误:

static unsigned long AudioCodec_regWrite(unsigned char ulRegAddr, unsigned char ucRegValue)
{

// Ensure that the write value matches the read value
if (readDataBuf[0] != ucRegValue)
{
stat = AudioCodec_STATUS_I2C_FAIL;
}

return stat;
}

我已订购 I2C 分析仪以进行进一步调查、但标准硬件和 TI 示例代码似乎会发生此错误、我想知道此错误是否与我在代码中看到的错误无关?

非常感谢

克里斯

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

    您需要提供有关错误的更多详细信息(如错误代码)。

    但首先验证 i2c 的 syscfg 设置是否正确(例如 在右侧引脚上配置 i2c)。

    除了硬件配置、我目前不能怀疑其他任何东西。

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

    您好!

    感谢您再次来到我的网站。 我具有 i2secho 示例中的默认 syscfg、该示例使用默认 I2C0设置、P02 /10上的 SDA 引脚和 P01/9上的 SCL 引脚设置、与 Booster Pack 接口匹配。

    (i2secho 示例)代码似乎是向寄存器写入并成功从寄存器读回、但回读值与写值不匹配-回读值始终显示为0xFF。 以下代码片段的第22行中出现错误:

        // Write to the register
        bool ret = I2C_transfer(i2cHandle, &i2cTransaction);
        if (true != ret)
        {
            stat =  AudioCodec_STATUS_I2C_FAIL;
        }
    
        // Setup the struct for reading back
        i2cTransaction.writeBuf = writeDataBuf;
        i2cTransaction.writeCount = 1;
        i2cTransaction.readBuf = readDataBuf;
        i2cTransaction.readCount = 1;
    
        // Read back to the register
        ret = I2C_transfer(i2cHandle, &i2cTransaction);
        if (true != ret)
        {
            stat = AudioCodec_STATUS_I2C_FAIL;
        }
    
        // Ensure that the write value matches the read value
        if(readDataBuf[0] != ucRegValue)
        {
          stat = AudioCodec_STATUS_I2C_FAIL;
         
    
        }

    非常感谢

    克里斯

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

    这是否由 AudioCodec_open 中的 AudioCodec_reset ()触发? (我认为这是第一次使用该接口)。

    您可以嗅探 I2C 线路吗?  

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

    您好!

    是的、它由  AudioCodec_reset()触发、并且每次 调用 AudioCodec_regWrite 时似乎都会触发。

    我还没有 I2C 分析器、我将在 I2C 线路到达时进行监听并报告、谢谢。  

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

    您是否对 LP 或 BoosterPack 进行了任何更改?

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

    不会、LP、BoosterPack 和 i2secho 代码都是完全标准的。  

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

    好的。 我将在本周晚些时候尝试这个示例。 看看我是否能重现问题。

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

    您好!

    运行 I2C 分析器一切似乎都正常、因此我无法明白代码为什么会 在上述代码片段的第24行返回 AudioCodec_STATUS_I2C_FAIL。

    附加的屏幕截图显示 i2secho 代码将卷设为默认值时分析仪的输出。

    非常感谢

    克里斯

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

    您检查返回代码是否有任何原因? 在我看来、该示例忽略了它们、并且此 i2c 驱动程序代码可能存在一些问题(我运行应用时遇到了类似的问题)。  

    如果您忽略( AudioCodec_regWrite 的)返回代码、它是否工作?

    (调试 I2C 驱动器可能需要更多时间)。

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

    您好!

    它标记为我发现的音频音量问题可能源于 I2C 问题、我假设意外的返回代码可能是症状。

    根据您的反馈以及 I2C 分析器正确显示了返回代码这一事实、我认为问题出在代码中的其他地方-感谢您的帮助。