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.

[参考译文] TMS320F2800157-Q1:IIC 写入 EEPROM

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1366777/tms320f2800157-q1-the-iic-writes-eeprom

器件型号:TMS320F2800157-Q1

工具与软件:

IIC 通信发送有效数据后、不会生成停止位、但会再次生成开始位。 这是什么?




IIC 配置派生自官方例程



这不是必需的、有时停止位会成功生成、有时则不是

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

    尊敬的 Ming:

    I2C 是否会生成重复启动条件(I2CMDR.BB = 1且 I2CMDR.STT = 1)? 当控制器配置为发送器模式时、此模式专门相关。 在此模式中、I2C 控制器根据 I2CMDR 中 BC 域的数据位数在每种数据类型的末尾放置一个开始条件、直到完成发送。 请参阅此图表、了解何时生成停止条件:  

    此致、

    Aishwarya.

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

    IIC 配置的 MDR 寄存器的 BC 位为0、相应的8位数据。 从图中可以看出、所有数据都已发送、并且收到了 ACK、接下来应该会生成停止位、但改为生成启动。 这不是我第一次操作 EEPROM、当我快速读写 EEPRM 过程发生此错误、此现象出现后、IIC 将挂起、无法操作 EEPROM。 MCU 复位以恢复正常。 在 Debug 模式下、相关寄存器的状态如下。 有关详细信息、请参阅以下两幅图。

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

    Ming、

    让我尝试借助 I2C EEPROM 示例来在我的最终复制此示例、然后在一天之内回复您。 如果我还需要进行任何具体修改、请告诉我。

    此致、

    Aishwarya.

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

    Ming、

    这不是我第一次操作 EEPROM、当我快速读写 EEPRM 进程时会发生此错误、

    这 可能是问题所在。 即使总线为400kHz、也必须考虑写入任何内容所需的时间。 根据 AT24C256C 数据表、最大写入周期时间为5ms。 无论是写入一个字节还是写入一页、最多可能需要5ms、因此我会尝试添加读取/写入之间和写入数据之后的延迟。 这是在 EEPROM 中断示例中参考的代码。

    此致、

    Aishwarya.

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

    您好!
    你看我的有关 IIC 配置的帖子、我已经配置了5ms、使用此 delay 函数 DEVICE delay US (5000);然后我发现问题可能出在 IICMDR 寄存器的配置中。 当我修改配置为给图中所示的 MDR 寄存器分配一个一次性值时、错误的概率将是多个小数。 您能帮我解释一下原因吗?

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

    Ming、

    是的、我看到了、只是 想一下是否有更好的延迟方法。

    当我修改配置为向图中所示的 MDR 寄存器分配一次性值时、错误的概率将是较小的。 您能帮我解释一下原因吗?

    据我所知、这种行为未被记录在案、但我认为、由于您要重新配置 I2C、您需要将其"复位"(或者在这种情况下对配置进行复位)。 我不确定这是不是正确的处理方式、但看起来它对您很有用。

    此致、

    Aishwarya.

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

    Ming、

    您是否能够解决此问题? 如果没有其他问题了、我将继续并关闭该主题。  

    此致、

    Aishwarya.  

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

    是的、谢谢