基于Chipways XL8818 状态机及其软件实现

一、概述

Chipways 的 XL8818 / XL8816 / XL8814 系列是车规级多节电池组监控芯片(BMS AFE 芯片),可同时测量多达 18/16/14 串电池电压,总测量误差(TME)小于 3mV(全温度范围),测量输入范围:-2V~+5.5V,适用于大多数化学电池,任意通道支持 Busbar 连接。所有电池单元具有冗余测量、全面诊断等特点,可以有效降低系统成本,增强了锂离子电池组的安全性。在新能源汽车、储能电站等领域有着广泛的应用。

图片来源:Chipways 官网

图 1 . XL8818 的应用场景

该系列 AFE 有如下特点:

 

Ø  可测量多达 18/16/14 串电池的电压(Max.85V)。

Ø  XL8818、XL8816 和 XL8814 采用相同架构,管脚兼容,只是通道数不同。

Ø  全温度范围最大总测量误差:3mV。

Ø  内置双向传输的 isoSPI 接口:最大 2Mbps 隔离式串行通信;通讯线最长达 100 米。

Ø  可在 260us 之内完成系统中所有电池的测量。

Ø  内置频率可编程的三阶噪声滤波器的 16 位 ΔΣ 型 ADC,最大采样速率:3.3MHz。

Ø  具有可编程 PWM 电池被动均衡,均衡电流:300mA。

Ø  GPIO 有 9 个,可配置为 ADC、I2C、SPI 接口。

Ø  睡眠模式电流:4uA。

Ø  符合 AEC-Q100 Grade-1 和 ASIL-D 标准。

下面向大家介绍 XL8818 的状态机及其软件的实现。

二、XL8818 的状态机

XL8818 的动作状态机主要有以下 8 种状态:

1)  SLEEP : 休眠,部分电源域断电

2)  STANDBY : 上电后的初始状态

3)  REFUP : AD 变换用 Vref 电源

4)  MEASURE : AD 测量

5)  EXTEND BALANCE : 放电均衡控制

6)  DTM MEASURE : 放电检测

7)  LOW POWER : 低功耗监测

8)  HEARTBEAT : 低功耗监测中的 AD 测量

XL8818 的状态机可分为正常的工作模式和低功耗监测模式。

1、SLEEP 状态:在正常工作模式下,当看门狗定时器超时(大约 2 秒),而且均衡定时器超时(寄存器DTCO=0)的时候,芯片进入睡眠状态。SLEEP 状态会断开部分电源域。芯片需要通过 SPI 或者 isoSPI 总线信号来唤醒。唤醒之后进入 STANDBY 状态。

2、STANDBY 状态:在正常工作模式下,当芯片上电(POR)或者复位信号之后,芯片进入 STANDBY 状态。当 Trim 数据设置之后,WDT 开始计数。此状态切换到其他状态的条件如下表所示:

3、MEASURE 状态:在正常工作模式下,当芯片接收到 SPI/ISOSPI 总线发来的 ADC 命令时,芯片进入 MEASURE 状态,开始 ADC 转换。此状态切换到其他状态的条件如下表所示:

4、REFUP 状态:在正常工作模式下,当芯片接收到 SPI/isoSPI 总线发来的 REFON=1 命令时,芯片进入 REFUP 状态。内部的 3.3MHz 时钟开始起振,ChargePump 打开,基准电源 VCP(VPLUS+5V)开始供电。在 REFUP 状态下做 ADC 转换,可以节省一个基准电源上电的时间。此状态切换到其他状态的条件如下表所示:

5、EXTEND BALANCE 状态:这个状态在正常工作模式和低功耗监测模式下都会存在。在正常工作模式下,当 WDT 超时,但放电计数时间没有到(DCTO>0)的时候,进入 EXTEND BALANCE 状态;在低功耗检测模式下,当 DTM measure 完成,或者 HeartBeat 检测完成,但放电计数时间没有到(DCTO>0)的时候,进入 EXTEND BALANCE 状态。此状态切换到其他状态的条件如下表所示:

6、DTM MEASURE 状态:在正常工作模式下,当 EXTEND BALANCE 状态一直保持 30s 之后,进入 DTM MEASURE 状态。开始测量电池电压,当某电池电压低于阈值时,关断该电池的放电开关。此状态切换到其他状态的条件如下表所示:

7、LOW POWER 状态:在正常工作模式下,芯片接收到 CMEN 命令之后,进入低功耗监测工作模式。这个模式可以定期启动(HeartBeat)后监测电池、IO 口的电压,并把结果通过 isoSPI 发出。该状态切换到其他状态的条件如下表所示:

8、HEARTBEAT 状态:在低功耗监测模式下,当芯片接收到 CMC_MAN=1 命令时,进入 HEARTBEAT 状态。开始监测电池、IO 口的电压。该状态切换到其他状态的条件如下表所示:

三、软件实现

1、基于以上 XL8818 的动作状态机的描述,我们在代码中可以用枚举来对以上 8 种状态机进行定义:

typedef enum


{

SLEEP = 1, // SLEEP 状态

STANDBY, // STANDBY 状态

REFUP, // REFUP 状态

MEASURE, // MEASURE 状态

EXTEND_BALANCE, // EXTEND BALANCE 状态

DTM_MEASURE, // DTM MEASURE 状态

LOW_POWER, // LOW POWER 状态

HEARTBEAT // HEARTBEAT 状态


}XL8818_StateMachine_Type;

XL8818_StateMachine_Type XL8818_StateMachine; // 定义当前状态机全局变量

XL8818_StateMachine_Type XL8818_StateMachine_Pre; // 定义变换以前的状态机全局变量

2、在对XL8818 初始化的时候,需要先对芯片进行唤醒,以免芯片上电之后,WDT 超时进入 SLEEP 状态。简单的唤醒的方式是:给 SPI 的 CS 管脚设置一个持续 300us 的低电平。唤醒之后设置 XL8818_StateMachine 为 STANDBY。  

3、为了节省每次测量前打开基准电压的时间(大约 3.3ms),设置 REFON=1,进入 REFUP 状态,并将 XL8818_StateMachine 设置为 REFUP。

4、在测量电池电压的函数中,将 XL8818_StateMachine_Pre 设置为 XL8818_StateMachine 的当前状态,并将 XL8818_StateMachine 设置为 MEASURE。测试完成之后,根据 XL8818_StateMachine_Pre 的状态(REFUP、STANDBY、LOW POWER)以及当前的放电计数值,将 XL8818_StateMachine 设置为相应的状态。

5、当状态机 XL8818_StateMachine 的状态为 EXTEND_BALANCE,需要给芯片发送 CMEN、CMHB 以外的有效命令,使状态机 XL8818_StateMachine 的状态跳回到 STANDBY。或者发送 CMEN 命令,使状态机 XL8818_StateMachine 的状态跳回到 LOW POWER 状态。

6、在低功耗模式下,主控可以进入睡眠。XL8818 芯片在低功耗监测模式下,定时通过 HEARTBEAT 向主机发送 CMHB 命令,唤醒主机读取 ADC 转换结果。此时,状态机 XL8818_StateMachine 的状态由当前的放电计数值来决定是在 LOW POWER 或者是 EXTEND_BALANCE。

四、总结

综上所述,XL8818 具有电池电压采集、被动均衡、诊断、低功耗等功能。所以它的状态机也比较复杂,要实现各个状态机的稳定运行和切换,则需在软件上做缜密的设计。如果想了解更多,可以在下方评论区留言,或者发邮件给我们:atu.sh@wpi-group.com

五、参考资料

1.Chipways XL8818/XL8816/XL8814 Datasheet。

欢迎在博文下方留言评论,我们会及时回复您的问题。如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com
作者:May Xu / 徐美霞(五月小姐姐)

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

乱的很有节奏

乱的很有节奏

7 个月前
求份XL8818数据手册及代码
乱的很有节奏

乱的很有节奏

7 个月前
求份XL8818数据手册及资料