ZHCAB07B september 2019 – august 2023 BQ75614-Q1 , BQ79612-Q1 , BQ79614-Q1 , BQ79616-Q1 , BQ79631-Q1
本应用手册概述了 BQ79616-Q1 器件和主机系统之间的基本通信。这包括单一 BQ79616-Q1 器件或 BQ79616-Q1 器件栈的通信。为了给用户简单演示器件的基本通信,报告中包含了自动寻址和反向寻址等示例。这些信息旨在简要介绍 BQ79616-Q1、BQ79614-Q1、BQ79612-Q1 汽车类功能安全合规型 16/14/12 节串联电池监测器、平衡器和集成式硬件保护器 数据表中所述的通信信息。
本文档中使用的通信方式通过一系列十六进制字节值来表示。实际的器件通信使用标准 UART(通用异步接收器/发送器)格式发送。
Other TMs
使用命令帧读写寄存器是与 BQ79616-Q1 进行几乎所有基本通信的基础。所有读写命令全部按照命令帧顺序以十六进制格式提供。
类型 | 值 |
---|---|
单器件读 | 0x80 |
单器件写 | 0x90 |
栈读 | 0xA0 |
栈写 | 0xB0 |
广播读 | 0xC0 |
广播写 | 0xD0 |
广播写反向 | 0xE0 |
仅适用于单器件读/写。1 个字节,例如 0x02。
2 个字节,例如 0x0306。
对于读取:(请求的字节数 - 1),最多请求 128 个字节。对于写入:要写入的数据字节,最多写入 8 个字节。
两个字节,由 CRC-16-IBM 多项式生成器计算出。更多信息,请参阅数据表 CRC 部分。
下列表格提供了单器件读取/写入、栈读取/写入和广播读取/写入的命令帧格式模板。有关命令帧字节级的详细信息,请参阅 BQ79616-Q1、BQ79614-Q1、BQ79612-Q1 汽车类功能安全合规型 16/14/12 节串联电池监测器、平衡器和集成式硬件保护器 数据表的“命令和响应协议”部分。
数据 | 说明 | |
---|---|---|
初始化字节 | 0x80 | 始终为 0x80 |
器件 ID 地址 | 0x00 | 本例中进行寻址的是器件地址 0 |
寄存器地址 | 0x0215 | 从地址 0x215 开始 |
数据 | 0x0B | 发回 12 个字节的数据(寄存 0x215 至 0x220 的内容) |
CRC | 0xCB49 |
数据 | 说明 | |
---|---|---|
初始化字节 | 0x93 | 向单一器件写入 4 个数据字节(0x90 用于 1 个字节的读数据) |
器件 ID 地址 | 0x00 | 本例中进行寻址的是器件地址 0 |
寄存器地址 | 0x0100 | 从地址 0x100 开始 |
数据 | 0x02B778BC | 向寄存器 0x100-0x103 写入 4 个字节 |
CRC | 0x9A8C |
数据 | 说明 | |
---|---|---|
初始化字节 | 0xA0 | 始终为 0xA0 |
器件 ID 地址 | -- | 栈读过程中不发送地址字节 |
寄存器地址 | 0x0215 | 从地址 0x215 开始 |
数据 | 0x02B778BC | 从栈中的每个器件发回 12 个字节的数据(0x215 至 0x220 的寄存器内容) |
CRC | 0xCCB3 |
数据 | 说明 | |
---|---|---|
初始化字节 | 0xB3 | 向栈器件写入 4 个字节 |
器件 ID 地址 | -- | 栈写过程中不发送地址字节 |
寄存器地址 | 0x0100 | 从地址 0x100 开始 |
数据 | 0x02B778BC | 依次向寄存器 0x100-0x103 和栈中的所有器件写入 4 个字节 |
CRC | 0x0A35 |
数据 | 说明 | |
---|---|---|
初始化字节 | 0xC0 | 始终为 0xC0 |
器件 ID 地址 | -- | 广播模式下不发送地址字节 |
寄存器地址 | 0x0215 | 从地址 0x215 开始 |
数据 | 0x0B | 发回 12 个字节的数据(寄存 0x215 至 0x220 的内容) |
CRC | 0xD2B3 |
数据 | 说明 | |
---|---|---|
初始化字节 | 0xD3 | 向所有器件写入 4 个字节 |
器件 ID 地址 | -- | 广播模式下不发送地址字节 |
寄存器地址 | 0x0100 | 从地址 0x100 开始 |
数据 | 0x02B778BC | 依次向寄存器 0x100-0x103 和所有器件写入 4 个字节 |
CRC | 0x336A |
使用 BQ79616 示例代码时,ReadReg 和 WriteReg 充当 TMS570 LaunchPad 和 BQ79616 之间的主要通信包装器函数。CRC 由这些函数自动计算并附加。
ReadReg 函数的基本结构如下:
#_of_Read_Bytes = ReadReg(Device_Address, Register_Address, Incoming_Data_Byte_Array, #_Data_Bytes, ms_Before_Time_Out, Packet_Type)
Device_Address、#_Data_Bytes 和 ms_Before_Time_Out 是整数,而 Incoming_Data_Byte_Array 和 Register_Address 是带前缀“0x”的十六进制值。Device_Address 在广播/栈读操作中会被忽略。
例如:
nRead = ReadReg(nDev_ID, 0x0306, bFrame, 12, 0, FRMWRT_SGL_R);
此行会从器件 nDev_ID 的寄存器 0x0306 读取 12 个字节的数据,并将其存储在名为 bFrame 的本地字节数组中(在微控制器上)。数据包类型为单器件读。
WriteReg 函数的基本结构如下:
#_of_Sent_Bytes = WriteReg(Device_Address, Register_Address, Data, #_Data_Bytes, Packet_Type)
Device_Address 和 #_Data_Bytes 是整数,而 Register_Address 和数据是十六进制值(带前缀“0x”)。Device_Address 在广播和栈写操作中会被忽略。
例如:
nSent = WriteReg(nDev_ID, 0x0306, 0x01, 1, FRMWRT_SGL_NR);
此行会将 1 字节数据写入设备 nDev_ID 的寄存器 0x0306。发送的数据为 0x01。数据包的类型为单器件写。
下表提供了可用于 ReadReg 和 WriteReg 函数的各种数据包类型:
帧能指 | 数据包类型 |
---|---|
FRMWRT_SGL_W | 单器件写 |
FRMWRT_SGL_R | 单器件读 |
FRMWRT_STK_W | 栈写 |
FRMWRT_STK_R | 栈读 |
FRMWRT_ALL_W | 广播写 |
FRMWRT_ALL_R | 广播读 |
若要快速开始测量,只需阅读本指南的“唤醒序列”、“自动寻址”和“读取电池电压”部分。
微控制器将唤醒 ping 应用至 BQ79616-Q1 器件的 RX 行。此 ping 为低电平有效,且低电平时间为 2.5ms。若要唤醒器件: