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.

[参考译文] TMS320C6657:检测到 I2C 主传输下溢

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1120084/tms320c6657-i2c-master-transfer-underflow-detected

器件型号:TMS320C6657

您好!  

我正在尝试在主机传输模式下从 I2C 发送多个字节。

例如 txBuffer[3]={0x00、0x0A、0x0F};

我在 SDK 之后、首先将数据传输寄存器(ICDXR)设置为第一个字节(0x00)、然后执行 for loop 以使用剩余字节填充寄存器。

但是、在 for 循环的第一个实例中、在我用第二个字节(ICDXR = txBuffer[1])设置 ICDXR 后、我看到 XMST 为0。

在我的示波器上、我看到要传输的字节为:0x00、0x0F、0x0F。

当我尝试将数据发送寄存器设置为0x0A 时、我会看到下溢。

例如:

ICDXR = txBuffer[0];     //将数据寄存器设置为第一个字节

ICMDR = START_BIT;

while (ICSTR->ICXRDY = 1)

  对于(int i = 1;i < 3;i++)

  {

    ICDXR = txBuffer[i];    //用剩余的字节填充

    //此行后,当 i=1时,XMST 为0

  }

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

    Cynthia、

    在我们介绍更深入的详细信息之前、您是否能够在 C6657 EVM 上成功运行平台测试(包括 I2C_EEPROM 测试)?

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

    是的、我成功运行了平台测试。 但我已经解决了下溢问题。 我的缓冲区写入速度太快、无法进行传输。 谢谢!

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

    Cynthia、

    您的定制板或 C6657 EVM 是否遇到此问题?

    请您帮助我们从我们的角度重现您的问题吗?

    此致

    Shankari G

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

    我在 C6657 EVM 上遇到了此问题。 我为 I2C 创建了自己的 write()函数,问题是我没有包括延迟或睡眠。 一旦 ICXRDY 位为高电平、我就会在循环中写入缓冲器。  

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

    Cynthia、

    如果包括延迟、问题是否已解决?  

    如果 您能够运行平台测试( 具有 "I2C_EEPROM")、而不会出现任何下溢问题、那么您也可以使其在您自己的代码中正常运行。

    我建议您采用 I2C_EEPROM 测试代码和 evm665x_i2c.c 中提供的代码参考、然后创建自己的代码。

    此致

    Shankari G