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.

[参考译文] BQ78350:与 SiLabs CP2112进行 SMBus 仲裁

Guru**** 2609285 points
Other Parts Discussed in Thread: BQ78350

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1076298/bq78350-smbus-arbitration-with-silabs-cp2112

部件号:BQ78350

您好,

我在 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次电池停止传输。

我的问题:

  1. 为什么 BQ78350在赢得仲裁的情况下仍会停止传输? 这是否违反 SMBus 规范修订版1.1?
  2. 此外,Smart Battery Spec 修订版1.1要求电池每隔5...60秒广播一次 ChargingVoltage()和 ChargingCurrent()。 在  上述仲裁场景中,两次成功传输之间的时间最长为100秒。 BQ78350是否检测到60秒以上的时间段,这是否有某种影响?

附件:

  • 逻辑分析仪捕获了蓄电池获胜仲裁,但传输立即停止。
  • BQ78350 gg 配置

 e2e.ti.com/.../P20420002_5F00_forum.gg.csv

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亚历山大您好,

    捕获中有一个由橙色方形标记的停止条件。 两位主控可能会因另一位主控反应的速度而失去仲裁。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亚历山大您好,

    广播时间间隔在数据闪存中设置。 请参阅"充电器请求计时器"。 默认值为50s。 我在数据表中没有看到任何关于在仲裁丢失时重试的信息。 这意味着直到下一个广播节目才有任何内容。 如果有问题,您可以将数据闪存设置更改为较低的值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢您提供的宝贵信息!