AFE之MC33772B详解
1、芯片特性
- 3 至 6 个电池单元管理
- 0.8 mV 总单元电压测量误差
- 7 个 GPIO/温度传感器输入
- 板载 300 mA 被动单元平衡,带诊断功能
- 同步电池单元电压/电流测量和库仑计数
- 隔离式 2.0 Mbps 差分通信或 4.0 Mbps SPI
2、通信方式
SPI或者TPL
TPL是恩智浦(NXP) 专为BMS设计的菊花链通信技术,采用差分信号传输,核心目的是实现AFE芯片与主控MCU之间的高效、可靠通信。
3、通信格式
bit23位,0:主机,1:从机
(1)读命令与响应:read命令用于SPI和变压器接口。read命令是一个本地命令,用于从33772设备中检索数据。数据字段包含要检索的数据的起始地址和要返回的数据寄存器的数量。从大于地址$FF的寄存器请求数据迫使设备将寄存器计数器循环回寄存器$00。(注意:读数据,发送一帧命令后,在发送一帧0xFF的数据,在这个时间段接收数据即可)
(2)写本地命令:与用数据响应的读命令不同,33772用命令的单帧回显和更新的寄存器内容响应写命令。写入只读寄存器会生成命令和寄存器内容的回显,但不允许更新寄存器内容。
(3) 全局写:全局写命令允许变压器用户同时与总线上的所有设备通信。全局写命令对于在同一时间用故障阈值对所有设备进行编程或同步总线上所有设备的转换非常有用。当slave接收到一个有效的全局写命令时,消息被执行,但不产生响应。
(4)不操作命令:no operation命令允许用户在不执行任何操作的情况下验证与总线上设备的通信。当从机接收到有效的no operation命令时,该命令的回显是设备的响应
例程代码时序有问题,根据读写命令格式可知,发送数据的格式顺序之和BCC_MSG_BIGEND有关,至于发送函数中的颠倒顺序,和手册对应不上
/*! @brief Use \#define BCC_MSG_BIGEND for big-endian format of the TX/RX SPI* buffer ([0] DATA_H, [1] DATA_L, ..., [4] CRC). If BCC_MSG_BIGEND is not* defined, little-endian is used ([0] CRC, ..., [3] DATA_L, [4] DATA_H) */
#define BCC_MSG_BIGEND/** SPI Frame. */
#ifdef BCC_MSG_BIGEND/*! @brief Index to memory data field of SPI frame (higher byte). */
#define BCC_MSG_IDX_DATA_H 0U
/*! @brief Index to memory data field of SPI frame (lower byte). */
#define BCC_MSG_IDX_DATA_L 1U
/*! @brief Index to memory address field of SPI frame. */
#define BCC_MSG_IDX_ADDR 2U
/*! @brief Index to physical addres