ZHCU948B September 2020 – May 2022 BQ76952
BQ76952 器件包含寄存器,这些寄存器存储在 RAM 中,并被集成在一次性可编程 (OTP) 存储器中。初始上电时,该器件将 OTP 设置加载到寄存器中,供器件固件在运行期间使用。如果发送了 0x0012 RESET() 子命令,该器件还可以按需执行复位。推荐的程序是客户在生产线上将设置写入 OTP,在这种情况下,只要该器件上电,就会使用这些设置。或者,主机处理器可以在上电后初始化寄存器,而不使用 OTP 存储器,但在该器件每次上电后都需要重新初始化寄存器。当该器件处于 NORMAL、SLEEP 或 DEEPSLEEP 模式时,寄存器值会被保留。如果该器件进入 SHUTDOWN 模式,则所有寄存器存储器被清除,再次上电后该器件将恢复默认参数。
BQ76952 器件中的 OTP 存储器最初为全零。每个位都可以保留为“0”或写入“1”,但无法从“1”写回“0”。OTP 存储器包括数据存储器配置设置的两个完整映像。上电时,该器件会将第一个 OTP 映像中的每个设置与第二个 OTP 映像中的相应设置以及相应设置的默认值进行异或运算,并将结果值存储到 RAM 寄存器中以供运行期间使用。这允许使用第一个映像将任何设置更改为默认值以外的值,然后使用第二个映像更改回至默认值。OTP 存储器还包含一个 16 位签名,该签名通过大多数设置计算得出并存储在 OTP 中。当该器件上电时,它将读取 OTP 设置并检查签名是否与存储的签名匹配,以防止读取中的位错误或存储器损坏。如果检测到签名错误,该器件将引导至默认配置(就像清除 OTP 一样)。
该器件支持多达 8 个不同的签名值,因此可以对 OTP 进行多达 8 个部分的更改,并相应地更新签名。OTP 签名不包括制造数据(可使用 0x0070 MANU_DATA() 子命令获取),也不包括任何被写入 OTP 的 PF 状态数据(可使用 0x0053 SAVED_PF_STATUS() 子命令进行读取)。
通常在该器件组装到 PCB 之后,但在电芯连接到电路板之前写入 OTP 内存设置。根据规范,对 OTP 存储器设置进行编程要求在 BAT 引脚上施加电压并且温度处于允许的范围之内。首先使用串行通信接口将所有的配置设置加载到寄存器中(请参阅Chapter10)。可以发送 0x00A0 OTP_WR_CHECK() 子命令来启动自检,以确定是否可以完成 OTP 写入。发送此子命令时,该器件必须处于 FULLACCESS 和 CONFIG_UPDATE 模式。表 4-1 显示了该器件返回的 0x00A0 OTP_WR_CHECK() 信息。
字节 0 | ||
---|---|---|
位 | 名称 | 说明 |
7 | ProgrammingOK | 如果设置了该位,则满足编程条件,并且不会设置该字节中其余的任何位。 |
6 | 保留 | |
5 | 已锁定 | 该器件未处于 FULLACCESS 和 CONFIG_UPDATE 模式,或已设置 OTP 锁定位以防止进一步修改。 |
4 | No_SIG | 无法写入签名(表明已过多次地写入该签名)。 |
3 | No_DATA | 无法对数据进行编程(表明已过多次地对数据进行编程;没有剩余异或位)。 |
2 | HighTemp | 测得的内部温度高于允许的 OTP 编程温度范围。 |
1 | LowVoltage | 测得的电池组电压低于允许的 OTP 编程电压。 |
0 | HighVoltage | 测得的电池组电压高于允许的 OTP 编程电压。 |
字节 1、2 | ||
如果设置了字节 0 位 3,那么字节 1 和字节 2 将包含第一个无法编程的数据值地址的 LSB 和 MSB。 |
如果自检成功,则可以通过发送 0x00A1 OTP_WRITE() 子命令来启动实际的 OTP 写入。该子命令提供与上述 0x00A0 OTP_WR_CHECK() 子命令相同的反馈,如果编程成功完成,则设置字节 0 位 7。OTP 编程时间取决于必须编程的字节数,器件每编程一个字节大约需要 200μs。
如果设置了 Settings:Manufacturing:Mfg Status Init[OTPW_EN] ,则提供了特殊的例外情况,允许在正常运行期间将制造数据和 PF 状态数据编程到 OTP 中。