ZHCSRX7 june 2023 BQ79616
PRODUCTION DATA
广播读取:
在使用该命令之前必须配置器件地址和 [TOP_STACK] 位。广播读取命令会根据菊花链中的器件数量(堆栈器件和基底器件)生成多个响应帧,其长度取决于请求读取的寄存器字节数。广播读取命令帧必须包含起始寄存器地址(地址字段)和要返回的字节数(要读取的寄存器数)。读取命令的初始化字节中的 DATA_SIZE 字段始终为 0b000。
命令帧传输到菊花链中的所有器件,每个器件都会做出响应。在响应期间,COMM_CTRL[TOP_STACK] = 1 的器件将首先返回响应帧,堆栈中的每个器件(地址 N)都会等待上面的器件(地址 N+1)响应后再附加其响应帧。在接收响应时验证 CRC。如果来自地址 N+1 的响应帧中出现 CRC 错误,则器件 N 不会附加其消息并生成无效 CRC 故障。
使用表 8-16,其中包含从 B0 至 S3 读取 16 个电芯电压的示例。对该命令的响应是 4 个独立的响应帧(每个器件一个响应帧),每个帧的总长度为 38 个字节(32 个数据字节 + 6 个协议字节)。尽管广播读取命令不包含器件地址字段,但每个响应帧会包含相应的器件地址字段,将数据与特定器件相关联。主机将首先接收来自 S3 的响应帧 (ToS),然后接收来自 S2 的响应帧,然后接收 S1 的响应帧,最后接收来自 B0 的响应帧。
广播写入:
可以在不采用自动寻址的情况下使用该命令。广播写入命令使主机能够通过一条命令更新菊花链中所有器件的最多八个连续寄存器。命令帧必须包含起始寄存器地址(地址字段)和写入寄存器的数据字节。初始化帧中的 DATA_SIZE 字段是要更新的寄存器的数量。
命令帧传输到菊花链中的所有器件,菊花链中的每个器件都将执行该命令。
主机发送的广播读取命令 | 主机发送的广播写入命令 | ||||
---|---|---|---|---|---|
示例 | 从 B0 至 S3 读取 16 个电芯电压 | 将 OTP 解锁代码写入 B0、S1、S2 和 S3 的 OTP_PROG_UNLOCK1A 至 1D 寄存器 | |||
帧字段 | 数据 | 说明 | 数据 | 说明 | |
初始化字节 | 0xC0 | 始终为 0xC0 FRAME_TYPE = 1 REQ_TYPE = 0b100 = 广播读取 DATA_SIZE = 0b000 | 0xD3 | 0xD0 用于 1 字节数据读取,0xD1 用于 2 字节数据读取,0xD2 用于 3 字节数据读取,依此类推。 本示例中将 FRAME_TYPE = 1 REQ_TYPE = 0b101= 广播写入 DATA_SIZE = 0b011 = 4 字节 | |
器件地址 | 不适用 | 无需在命令帧中添加器件地址字节 | 不适用 | 无需在命令帧中添加器件地址字节 | |
寄存器地址 | 0x0568 | 要读取的寄存器块的起始地址(本例中为 VCELL16_HI 的地址) | 0x0300 | 要写入的寄存器块的起始地址(本例中为 OTP_PROG_UNLOCK1A 的地址) | |
数据 | 0x1F | 指示每个器件返回 32 个字节的数据(即从地址 0x0568 到 0x0587)(假设每个 VCELLn_HI = 0x80、VCELLn_LO = 0x00,其中 n = 1 至 16)。 | 0x02B7 78BC | 写入 OTP_PROG_UNLOCK1A 至 OTP_PROG_UNLOCK1D 的解锁值 | |
CRC | 0x422D | 0x6BD1 |