×

电池电量计的通信、配置、数据内存访问以及相关代码示例

消耗积分:0 | 格式:pdf | 大小:0.08 MB | 2025-03-11

ben111

分享资料个

德州仪器(Texas Instruments)发布的关于电池电量计通信的应用报告,主要介绍了电池电量计的通信、配置、数据内存访问以及相关代码示例等内容,为开发者提供了全面的技术指导。

电量计通信基础

电量计命令:电量计通过命令与主机控制器通信,命令类似寄存器,如读取充电状态的命令StateOfCharge(),其命令代码为0x1C和0x1D 。命令分为标准命令(用于获取测量结果和更改部分配置参数)和扩展命令(主要用于访问数据内存中的专有配置参数)。

电量计配置:电量计的配置参数存储在数据内存中,通过间接访问方法进行设置。数据内存按子类和数据块组织,每个数据块包含不同参数。TI提供的bqStudio软件工具可通过GUI方便地访问所有参数,并能将配置导出为FlashStream®文件 。

主机控制器访问电量计

抽象的终端系统相关API:TI提供系统独立的ANSI - C源代码,客户需实现gauge_read、gauge_write和gauge_address这三个函数,用于抽象主机控制器的低级通信接口,其实现与具体接口(如I2C、SMBUS、HDQ)相关。

配置相关API:FlashStream Parser是配置电量计的便捷方式,通过gauge_execute_fs函数执行FlashStream文件完成配置。对于有文件系统的主机uC,可从文件系统读取文件内容;无文件系统时,可将文件内容编译到固件中。

标准命令API:gauge_cmd_read用于读取标准命令结果,gauge_cmd_write用于向标准命令写入数据,可获取如电压、充电状态等测量结果,也能设置负载值等参数。

子命令API:gauge_control函数用于发送子命令,可读取如固件版本、ChemID等辅助信息,或触发如电量计复位、清除中断、启用模式等功能。

数据内存访问API:gauge_read_data_class和gauge_write_data_class函数用于访问数据内存中的子类数据,数据内存访问复杂,使用间接寻址和校验和确保数据完整性。

数据内存

子类和数据块:数据内存由称为子类的参数组构成,每个子类包含一个或多个数据块,最长32字节。参数位于数据块内,有偏移地址、长度和数据类型。更改配置参数时,需先定位参数,读取子类数据到本地缓冲区修改后,再写回子类。

数据内存寻址:数据内存通过间接寻址访问,使用扩展命令确定子类(0x3E)、数据块(0x3F),数据块从0x40开始到0x5F结束,0x60用于存储块校验和。读写数据内存时,按特定顺序操作,校验和是当前数据块所有32字节数据之和取8位截断并取反。

ROM与FLASH电量计区别:FLASH电量计将配置存储在非易失性内存中,复位或掉电后配置仍保留,且写数据内存无需更改操作模式;ROM电量计的默认配置在只读内存中,启动时复制到数据内存RAM,写数据内存前需进入配置更新模式(gauge_cfg_update),写完后需退出(gauge_exit) 。

FlashStream®文件格式:FlashStream文件用于电量计配置,有多种亚型,如用于ROM电量计的Golden Image文件(.gm.fs)、用于Flash电量计的配置文件(.df.fs)等。文件为文本格式,有写命令(W)、比较命令(C)、延迟命令(X),分别用于写入数据、比较数据和设置延迟时间。

源代码示例:文档附录提供了gauge.c和gauge.h文件的代码示例,实现了电量计控制、命令读写、数据类读写、FlashStream文件执行等功能。还给出了在Linux用户空间I²C/dev接口下的示例代码,展示了如何使用这些函数进行电量计通信、配置和数据操作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !