主题中讨论的其他器件:BQSTUDIO、
要将内容置于上下文中、这也是我最近创建的线程的后续操作:
如上面的线程所述、工厂参数内置在我的固件中、并将在工厂配置过程中写入 DF。 我在执行参数编程时使用分析仪监控 I2C 总线。 在某些情况下、会发生总线错误。 例如:

请注意事务所需的时间(343)。 不同的运行会使错误出现在写入数据流的不同点。 我还注意到有一些事务被延长、例如上面的#135、其中发送字节花费了18ms。 驱动程序被轮询、无 RTOS、并且只有一个 ISR 每 ms 递增一次计数器、因此极短。 我假设较长的交易是由电量监测计拉伸引起的。
我在 BqStudio 将默认值写回电量监测计 DF 时捕获了 I2C 总线。 我获得了以下结果(部分):

不用说没有发生错误。
在分析上述捕获时、我最突出的是交易之间的时间间隔。 例如、在事务1 (写入 MAC 和 MAC_DATA)和事务2 (写入校验和和和长度)之间、间隔为~15ms。 介于2和3之间(BqStudio 发送地址以读回刚刚写入的数据)、~141ms。 3到4 (读取 MAC/MAC_DATA/校验和/长度)、~15ms。
我对以下事务重复分析、我注意到一种模式:在两个事务之间(有一个例外)、间隔约为15ms。 异常情况是、通过写入校验和/长度寄存器来触发写入操作、在新的传输开始之前有一个~140ms 的间隔。
我的固件出错的可能原因是与时序相关的、如果是几毫秒级的事务之间的时间间隔、写入后、我添加了一个时间间隔、但仅为几十毫秒。 在之前有关此问题的询问中、建议我读回 CONTRAL_STATUS 寄存器、但在我的测试中它不起作用、正如您看到的、BqStudio 不起作用。
我找不到有关 BQ34110 I2C 事务之间的时间间隔的信息。 数据表、TRM 和应用手册中的唯一信息是有关协议的信息;我无法找到有关时序的信息。 所以、我的第一个重要问题是、是否有这样的信息我可能错过了。 如果没有、建议的时间是多久? 我可能会尝试更改我的固件以模拟 BqStudio 时序、但我宁愿使用文档源而不是临时文档源。