The communication frame is defined in figure
below. It is made up of 5 types of information: initialization character (INIT),
device address characters, register address character, data character(s) and CRC
characters. Each character is transmitted at UART/ SPI/ Daisy Chain physical level,
whose format is defined in following Section 7.3.2.1.2 section. There are 3 types of transaction frames: Read Command Frames,
Write Command Frames and Response Frames. They follow the
structure in the figure below.
Notes:
- When BQ79600-Q1 is used as bridge device, to read BQ devices
information, host SHALL NOT use Broadcast Read command but only
Single Device Read or Stack Read. The reason is BQ79600-Q1
register address does not overlap with stack devices, it would only return
0x00 to Broadcast Read command.
- For Stack Read command, the response is broken into individual response frames
from each device addressed. Each device (address N) in the stack waits until
the device above it (address N+1) responds before device N sends its own
data back.
- After a read command frame is transmitted, the host must wait for all expected
responses to return (or timeout: tWAIT_READ_MAX ) before
initiating a new command frame.
- A response frame is not mandatary. A response frame is only received after a
read command frame.
- Broadcast Write Reverse command frame should only be used to config [DIR_SEL]
bit, not for any other purposes. INIT byte is 0xE0, Reg address byte is
0x309 (BQ7961X-Q1), data byte is 0x80.
- Bytes received on COMH/COML are NOT propagated up to the stack; while bytes
received on the SPI/UART are propagated to COMH or COML depending on
[DIR_SEL].
- Even if there is a byte error, data is still forwarded from VIF to SPI
(buffer)/UART; if there is a byte error, data doesn’t forward from SPI/UART
to VIF.
Notes:
- INIT character: (1) No function to this selection, but this selection sets the [RC_IERR] error flag.
- Device Address character: Bit 6 and 7 are reserved; 0x4F to 0xFF is decoded as 0x3F by device.
- Register Address characters: Register addresses are two bytes in length. They indicate the targeted register address on a single byte read/write, or the beginning of the register address on a multi-byte read/write. If an invalid register address is set on a write command, the command will be ignored. If an invalid register address is set on a read command, a 0x00 will be returned as response.
- Data characters can be:
- Single data byte, it represents number of registers requested in Read Command
Frame. The BQ79600-Q1 supports up to 128 byte reads. The valid data
byte for read command frame is 0b0000000 - 0b1111111. The MSB of the
data byte is ignored for read command frames. For example,
0b10011001 is read as 0b00011001 and returns data from 26
registers.
- Actual payload in Write Command Frame (max 8 byte) or Response Frame (max 128
byte).
- CRC characters: