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

IIC 配置派生自官方例程 
这不是必需的、有时停止位会成功生成、有时则不是
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.
工具与软件:
IIC 通信发送有效数据后、不会生成停止位、但会再次生成开始位。 这是什么? 

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

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

此致、
Aishwarya.
Ming、
是的、我看到了、只是 想一下是否有更好的延迟方法。
当我修改配置为向图中所示的 MDR 寄存器分配一次性值时、错误的概率将是较小的。 您能帮我解释一下原因吗?
据我所知、这种行为未被记录在案、但我认为、由于您要重新配置 I2C、您需要将其"复位"(或者在这种情况下对配置进行复位)。 我不确定这是不是正确的处理方式、但看起来它对您很有用。
此致、
Aishwarya.