SLUSF21 june 2023 BQ79616
PRODUCTION DATA
Broadcast Read:
The device address and [TOP_STACK] bit must be configured before using this command. A broadcast read command generates a number of response frames depending on the number of devices in the daisy chain (both stack and base devices), whose length depends on the requested number of register bytes read. The broadcast read command frame must contain the register address to start at (address field) and the number of bytes to return (number of registers to read). The DATA_SIZE field in the initialization byte for the read command is always 0b000.
The command frame travels to all devices in the daisy chain, every device will respond. During the response, the device with COMM_CTRL[TOP_STACK] = 1 will return the response frame first, each device (address N) in the stack waits until the device above (address N+1) responds before appending its response frame. The CRC is validated while receiving the responses. If a CRC error occurs in the response frame from address N+1, device N does not append its message and an invalid CRC fault is generated.
Use Table 8-16 with the example of reading 16 cell voltages from B0 to S3. The response to this command is 4 separate response frames (one response frame per device), each frame with a total length of 38 bytes (32 data bytes + 6 protocol bytes). Although the broadcast read command does not contain the device address field, each response frame will contain the corresponding device address field, associated the data to a particular device. The host will receive the response frame from S3 first (ToS), following with the response frame from S2, then S1, and finally the response frame from B0.
Broadcast Write:
This command can be used without auto-addressing. A broadcast write command enables the host to update up to eight consecutive registers for all devices in the daisy chain with one command. The command frame must contain the register address to start at (address field) and the data bytes to write to the registers. The DATA_SIZE field in the initialization frame is the number of registers to update.
The command frame travels to all the devices in the daisy chain, and every device in the daisy chain will execute the command.
Broadcast Read Command Sent by Host | Broadcast Write Command Sent by Host | ||||
---|---|---|---|---|---|
Example | Read 16 Cell Voltages from B0 to S3 | Write OTP Unlock Code to OTP_PROG_UNLOCK1A to 1D Registers to B0, S1, S2, and S3 | |||
Frame Field | Data | Comments | Data | Comments | |
Initialization Byte | 0xC0 | Always 0xC0 FRAME_TYPE = 1 REQ_TYPE = 0b100 = Broadcast Read DATA_SIZE = 0b000 | 0xD3 | 0xD0 for 1 byte data read, 0xD1 for 2 bytes data read, 0xD2 for 3 bytes data read, and so on. For this example: FRAME_TYPE = 1 REQ_TYPE = 0b101= Broadcast Write DATA_SIZE = 0b011 = 4 bytes | |
Device Address | N/A | No need to include the device address byte in command frame | N/A | No need to include the device address byte in command frame | |
Register Address | 0x0568 | Start address of the register block to read (address of VCELL16_HI in this example) | 0x0300 | Start address of the register block to write (address of OTP_PROG_UNLOCK1A in this example) | |
Data | 0x1F | Instruct each device to return 32-bytes of data (that is, from address 0x0568 to 0x0587), assuming each VCELLn_HI = 0x80, VCELLn_LO = 0x00, where n = 1 to 16. | 0x02B7 78BC | The unlock value to OTP_PROG_UNLOCK1A to OTP_PROG_UNLOCK1D | |
CRC | 0x422D | 0x6BD1 |