你(们)好
我正在通过 I2C 访问 DF (数据闪存),按照 bq35100技术参考手册(修订版)中的方法 c)(TI.com),“12.1.1从 DF 中读取示例:
1.将0x00 0x40 (DF 地址为小 endian 格式)写入制造商访问控制(0x3E,0x3F)。
2.阅读制造商访问控制(0x3E,0x3F)以进行验证。
."
(在我的案例中,DF 地址为0x4010 (Vin Gain)。)
当我使用的微控制器的时钟频率提高(x6)时,我发现 I2C 命令序列有问题。
发生的情况是,读回的值不再是0x4010 (在我的情况下是0x00A4),因此验证失败。
经过一些调查,我发现在步骤1和2之间需要延迟。 (我认为没有这一点,读数实际上是一个快速读数,在操作前也是链接的。)
延迟金额超过200美元。 我在 BQ35100数据表中查看了一个位置。相关的规格是 tBUF,停止和启动之间的总线空闲时间,但这是66us。
附图:黄色和浅蓝色的 SCL 和 SDA;浅绿色是 I2C 操作之间的间隙。
(1)工作案例- 200US Gap
(2)不工作——100美制差距。


(除了最后两个字节之外,我还注意到,在第二个字节中,设备地址(读取)+ 0x3E (MAC 注册)的发送速度更快。)
我想知道我是否在这里错过了什么? tBUF 数值是否为400kHz,但我使用的是100kHz,所以在这种情况下,它的长度是4倍?