您好!
我们将对从设备执行连续的主设备写入操作。
在执行第二个操作之前、我们要检查 I2CSTR 的 SCD 位是否等于1、BB 位是否等于0。
在速度为100kbit/s 时、我们可以看到第二次写入失败。
速率为400kbit/s 时、我们就不会出现问题。
我怀疑在 STP 位的传输开始时 SCD 位和 BB 位会被设置、但如果我们过快、则在尝试启动第二个访问之前未完成其传输、出现问题。
您确认了吗?
克莱门特
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.
您好!
我们将对从设备执行连续的主设备写入操作。
在执行第二个操作之前、我们要检查 I2CSTR 的 SCD 位是否等于1、BB 位是否等于0。
在速度为100kbit/s 时、我们可以看到第二次写入失败。
速率为400kbit/s 时、我们就不会出现问题。
我怀疑在 STP 位的传输开始时 SCD 位和 BB 位会被设置、但如果我们过快、则在尝试启动第二个访问之前未完成其传输、出现问题。
您确认了吗?
克莱门特
您好 ,Clement,
Unknown 说:我怀疑 STP 位的传输开始时 SCD 位和 BB 位会被设置,但如果我们太快,那么在我们尝试启动第二次访问之前就不会进行传输了,并出现了问题。
当 SCL 和随后的 SDA 变为高电平时会设置 SCD (在这种情况下、一旦 SDA 变为高电平、就会生成 SCD 本身)、如果总线忙、则会设置 BB; 您能否附上100kbit/s 和400kbit/s 情形下发生的情况的屏幕截图? 如果发送行为错误、您的结论是有意义的、但根据 I2C 模块设计得 过快的方式、实际上只要该模块在数据表规格内工作、可能性就不大。