前言
最近在做EC方面的项目,客户需求带电池的方案。EC芯片用的是ITE的IT5571。
本人刚毕业,对EC方面很多都不懂,以下内容是我在网上找的各种资料经过自己的理解所总结。如有错误请指正谢谢!
1.智能电池组成
智能电池的构造简单来说主要分为电芯(cell)、电池保护板(bms)、电池外壳这几部分。
电芯仅仅用来提供电压电流。几个电芯串联起来就是电池包(package)。若一个电芯的电压为3.7V,电池包为3个电芯串联,则电池包电压为3.7X3=11.1V。
电池保护板则负责电池的充放电管理以及和OS数据通信。
2.智能电池和EC以及OS之间通信
智能电池是一个SMBus设备,通过SMBus总线来进行数据传输。电池信息数据到操作系统的数据流向:SMART BATTERY->EC SMBUS->EC 62/66 PORT->BIOS->OS。既然智能电池是SMBus设备,那么要和智能电池通信就要知道其相对应的设备地址。以bq29330+bq20z70电池保护板为例,查询芯片手册可知bq20z70的从设备地址为0x16。
下图为bq20z70 datasheet中提到的SMBus设备地址:
3.智能电池与EC连接
下图为某智能电池的保护电路原理图。我们需要注意PRES、SMBC、SMBD这三个引脚。SMBC与SMBD和EC上的一组SMBus channel直接相连。
PRES(System Present Flag)脚的作用是用作EC检测电池是否插入的判断脚。PRES连接EC的GPIO脚,GPIO脚配置为输入模式,初始上拉为高电平,需要提前去抖。当智能电池接入座子,则EC检测到PRES脚拉低,在代码中通过判断得知电池的存在。
保护电路板原理图:
4.智能电池标准SBS命令
所有的智能电池都符合Smart Battery System(SBS)规范。在此规范中统一定义了智能电池标准的查询信息命令,这些标准命令是所有电池公用的。不同的电池除了标准的SBS命令以外还会有自己独有的命令,在手册中查询Extended SBS Commands来查看相对应功能。
下图为智能电池规范中截取的标准SBS命令:
通过命令获取电池所需充电电流和充电电压值,写入charger的寄存器中即可实现智能电池的智能充电。
下图为获取电池所需充电电流和充电电压命令: