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.

[参考译文] TMS570LC4357:TMS570LC4357

Guru**** 2391155 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1208914/tms570lc4357-tms570lc4357

器件型号:TMS570LC4357

您好!

下面的代码段出现问题。 在我们的器件中、一条 I2C 总线上只有一个 EEPROM 器件、没有其他器件。  

while (length > 0u)//读取数据字节


while ((i2c->STR &(UINT32) I2C_RXRDY)== 0u)

}/*等待*/

*data =((uint8)i2c->DRR );
Data++;
长度--;
}

我们将  从 EEPROM 中读取少量数据字节。 将发送读取命令、这是有效的。 我们看到的问题是、代码执行有时会在 以红色突出显示的 while 环路处冻结、并且读取永远不会完成。

作为测试、我们将计数器放入环路以强制退出。 该时间段足够长、因此数据应该可用。 我们还会打印一条消息、指明计数已过期、并且我们将强制退出循环。

执行此操作时、系统始终会正确读取数据。 即使 打印错误消息也是如此。 这意味着、即使 i2c->STR 似乎没有设置位8 (I2C_RXRDY)、数据也必须可用。  我们可以看到  IDE 中的该位为0。

有人能提供一些帮助/想法、说明为什么  I2C_RXRDY 位 可能 无法设置、即使数据似乎 可用。  

谢谢

Malcolm

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

    您好、Malcolm:

    每当它将数据从移位寄存器复制到 DRR 寄存器时、应设置 I2C_RXRDY 标志。

    1.您连接的是哪款 EEPROM 设备?能分享器件型号吗?

    2.您是否在 i2c 总线上连接了正确的上拉电阻?

    3.是否有可能分享完整的项目?

    --

    谢谢。此致、
    Jagadish。

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

    大家好  

    我们将使用 M24512-DRMF3TG/K EEPROM。

    可以。 我们在线路上有上拉电阻器。

    我必须获得共享许可。

    当他们说的是存储器映射寄存器时、这是什么意思?

    谢谢

    Malcolm

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

    您好、Malcolm:

    当他们说内存映射的寄存器时,它们是什么意思?

    存储器映射寄存器是您通过地址或指针访问的器件。 I/O 器件通常具有存储器映射寄存器、可在其中写入或读取特定地址以设置或获取信息或数据。 也就是说、它们的访问方式与任何其他存储器类似。 所有 I/O 外设寄存器只能视为存储器映射。

    --

    谢谢。此致、
    Jagadish。

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

    您好、Malcolm:

    您是否仍然受困于此问题?

    --

    谢谢。此致、
    Jagadish。