ZHCAAI0B February   2020  – August 2021 BQ769142 , BQ76922 , BQ76942 , BQ76952

 

  1.   商标
  2. 1直接命令
    1. 1.1 警报启用 - 0x66
    2. 1.2 电池1 电压 - 0x14
    3. 1.3 内部温度 - 0x68
    4. 1.4 CC2电流- 0x3A
  3. 2子命令
    1. 2.1 DEVICE_NUMBER - 0x0001
    2. 2.2 生产状态 - 0x0057
    3. 2.3 FET_ENABLE - 0x0022
    4. 2.4 重置 - 0x0012
  4. 3读取和写入 RAM 寄存器
    1. 3.1 读取启用保护功能A
    2. 3.2 进入 CONFIG_UPDATE 模式
    3. 3.3 写入启用保护功能A
    4. 3.4 写入“VCell模式”
    5. 3.5 退出 CONFIG_UPDATE 模式
  5. 4具有 CRC 的 I2C
  6. 5具有 CRC 的 SPI 示例
    1. 5.1 直接命令示例:警报启用 - 0x66
    2. 5.2 直接命令示例:Cell 1 电压- 0x14
    3. 5.3 子命令示例:器件型号 - 0x0001
    4. 5.4 子命令示例:FET_ENABLE - 0x0022
    5. 5.5 子命令示例:重置 - 0x0012
    6. 5.6 RAM 寄存器读取示例:启用保护功能 A
    7. 5.7 RAM 寄存器写入示例:启用保护功能A
  7. 6简单代码示例
  8. 7参考文献
  9. 8修订历史记录

子命令

子命令使用与直接命令不同的格式,并且使用 7 位命令地址空间进行间接访问。子命令还支持块传输。要发出子命令,将命令地址写入 0x3E/0x3F。如果要读回数据,数据将被填充到32 字节传输缓冲区中,该缓冲区使用地址 0x40 - 0x5F 。下文列举了多个示例。

器件获取数据所需的时间取决于特定的子命令和器件内正在进行的任何其他处理,因此在运行期间会有所不同。技术参考手册中介绍了每个子命令的大致时间。从子命令读取数据时,有两种方法可以解决此计时问题:

  • 最简单的方法是在写入 0x3E/0x3F 之后,等待2ms,再从传输缓冲区读取结果。
  • 第二种方法在技术参考手册的第 3 章中进行了描述。这种方法是从 0x3E/0x3F 读取,直到子命令完成操作。如果返回的值为 0xFF,则表示子命令尚未完成操作。子命令完成后,返回的值将与写入的命令匹配。此响应仅适用于返回要读回的数据的子命令。

某些子命令将数据写入寄存器,然后必须写入带有校验和及长度的 0x60/0x61。这仅适用于 FET_Control()REG12_Control()CB_Active_Cells()CB_SET_LVL() 子命令。下一节将提供计算校验和及长度的示例,因为这在写入 RAM 寄存器时也是必需的。