您好,
我在 SMBus 上使用 BQ78350-R2 (FW 2.02内部版本28),SiLabs CP2112作为主机(设备版本3)和 Analog Devices LTC4100 智能电池充电器控制器。
50秒内总线无通信时随机发生。 使用逻辑分析器,我发现最后一个传输始终是从电池向充电器广播的充电器电压()或充电器当前()。 与此同时,CP2112也在传输,但其状态显示为“仲裁丢失”( 如 CP2112接口规范中所述,status0=0x03,status1=0x02)。
显然,该电池赢得了仲裁。 这也是预期的,因为电池写入地址0b00010010 (0x12 =充电器地址),而 CP2112尝试写入0b00010110 (0x16 =电池地址)。 如果逻辑 AND 同时应用于两个地址,0x12将获胜。
但是,逻辑分析器捕获显示,仲裁发生后所有传输都会立即停止。 我希望获奖者(即电池/BQ78350)继续传输。
因此,CP2112看不到停止位,因此任何后续传输都不会将其传输到总线上。 SDA 和 SCL 均保持高位,直到电池在50秒后再次传输广播(充电器请求计时器的值),这使得 CP2112再次看到停止位。 广播完成后,CP2112将再次开始传输。
CP2112配置为50 kHz SCL 和1000 ms 读/写超时。 CP2112每 隔1秒读取一次所有这些参数:
- 充电器状态
- 电池状态
- 蓄电池电压
- 蓄电池电流
- 蓄电池的相对充电状态
- 电池剩余电量
经过60.5小时的时间,尽管获得仲裁,但仍有3次电池停止传输。
我的问题:
- 为什么 BQ78350在赢得仲裁的情况下仍会停止传输? 这是否违反 SMBus 规范修订版1.1?
- 此外,Smart Battery Spec 修订版1.1要求电池每隔5...60秒广播一次 ChargingVoltage()和 ChargingCurrent()。 在 上述仲裁场景中,两次成功传输之间的时间最长为100秒。 BQ78350是否检测到60秒以上的时间段,这是否有某种影响?
附件:
- 逻辑分析仪捕获了蓄电池获胜仲裁,但传输立即停止。
- BQ78350 gg 配置

