BQ40Z50固件怎么升级?告诉你BQ系列芯片内部结构和升级方法
一 BQ芯片初步认识
包括BQ40Z50在内,BQ系列电池管理芯片看起来是一个芯片,其实芯片里面封装了两个die。一个是MCU部分负责计算和控制,其采用的是bqBMP内核的16位处理器;另外一个die是模拟前端AFE,负责模拟信号处理部分,主要功能是处理电压电流温度信号,包括放大,MUX,MOS驱动和一些硬件保护逻辑。两个芯片的绑定类似下图结构:

二 BQ芯片内部结构
MCU和AFE间主要接口有:电流采样库仑计CC,电压温度采样ADC,GPIO和专用串口通信。类似我们用分立器件MSP430+BQ76925的架构。
主要结构见下图所示:

MCU和AFE封装在一起是不得已而为之,也具有明显的优势:
• MCU主要负责计算和控制逻辑,是低压部分,而AFE主要负责高压部分处理,两个芯片工艺不同,在一个die上实现比较困难;
• 封装在一起,对外呈现的是一个芯片,使用方便,真正做到低耦合高内聚;
• 封装后固件也是由TI提供,稳定性比较好保证;
• 封装也利于电量计算法的实现,提高芯片价值。举例,BQ40Z50比BQ4050就贵不少。
对于BQ40Z50芯片,芯片架构细节如图所示:

TI专用内核bqBMP处理器是哈弗结构,数据总线和程序总线独立,其基本特征有:
- CPU是16位的
- 运行速度4.2MHz
- 三级流水线
- 指令长度灵活,可以支持8位、16位、24位指令
三 BQ40Z50内部存储器结构
内部存储器包括Flash,Boot ROM Flash, RAM,Data Flash和EEPROM。其中Flash一共有64K大小,RAM 2.5K, Data Flash 8K, EEPROM 0.5K.

Boot ROM是芯片的Bootloader,承担启动加载和固件升级作用,芯片固化好,不可修改和升级。
我们通过BQ Studio读出来的SREC文件,包括Data Flash, Program Flash和EEPROM的数据,也是除了Bootloader外的所有数据。
注意:
- TI的电池管理芯片内的CPU core有两代,BQ30Z55 BQ3055 BQ34Z100 BQ27541 BQ27542 BQ78350是比较老的一代,已经逐步淘汰;
- BQ40Z50同平台的有BQ40Z80,BQ78Z100,BQ27Z561等,推荐使用这一个系列。
四 固件升级方案
通过以上对CPU架构和存储结构的了解,我们对实现电量计芯片升级有个思路了。它跟普通MCU升级有相似的地方,只是要对芯片充分了解,可以做到不用bqStudio也能升级固件。
实际工作中,我们可能遇到以下问题:
1 已经校准的电池需要返工,通过bqStudio升级固件会擦除掉校准值和电量计学习的数据

解决方法:我们就可以不用bqStudio,专门编个PC软件,控制EV2400/EV2300,跳过升级data flash部分,只升级Program flash;
2 发现固件Bug,但由于固件已经发布,或者电池是串口的等原因,不能用电脑软件升级。
解决方法:主控来实现升级策略,可以升级电池的固件和配置参数,这个方法我们在无人机上已经实现。

3 已经发给客户的电池需要升级,并且数量很大,用PC软件效率太低。
解决方法:针对这种情况,也可以专门做个小板,内部存储电量计固件,连上电池就自动升级。
这个可以50个100个同时工作,也很快能完成电池升级的问题。
事实上,我们也的确遇见这个问题,就做了个带SD卡的小板,将固件放到SD卡里面,一连接电池就会执行自动升级。

以上都是作者多年与BQ电量计打交道,通过研究或与原厂共同开发得到的经验,希望能对做电池的你有所帮助。
博客内都是原创文章,转载请注明出处。
BQ40Z50固件怎么升级?告诉你BQ系列芯片内部结构和升级方法的更多相关文章
- LSI系列芯片Raid卡配置方法、管理手册
说明 本手册适用于LSI芯片Raid卡 包括但不限于Inspur 2008/2108 Raid卡.LSI 9240/9260/9261/ 9271 等Raid卡. 不同型号的Raid卡在某些功能上的支 ...
- 全面!总结BQ系列阻抗跟踪电量计化学Chemical ID配置和Golden学习方法
BQ系列阻抗跟踪电量计SOC最高能达到1%,功能强大,应用起来也比较复杂.不仅要配置好参数,匹配好化学ID,并且进行好Golden学习和相关测试.本文就讲述ID匹配,Golden学习和测试的终极方法流 ...
- sharepoint2007就地升级2010系列(五)升级到sharepoint2010
---恢复内容结束--- 大家下午好 今天我们来完成最后一步,sharepoint2007升级2010.其实我反倒没有那么紧张了,因为我最担心的数据库升级,已经过了. OK,话不多说,让我们直接开始吧 ...
- sharepoint2007就地升级2010系列(三)升级系统
OK,上两篇我们完成sharepoint2007的预览,以及升级前的补丁准备.今天我们来正式进行升级windows server系统以及SQL数据库 升级之前首先确定 search服务停止而且被禁用, ...
- openresty开发系列3--nginx的平滑升级
openresty开发系列3--nginx的平滑升级 nginx服务器从低版本升级为高版本,如果强行停止服务,会影响正在运行的进程. 平滑升级不会停掉正在运行中的进程,这些进程会继续处理请求.但不会接 ...
- [转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下)
你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下) https://www.ijiwei.com/html/news/newsdetail?source=pc&news_id=7177 ...
- 爱特梅尔ATMEL全系列芯片解密单片机破解
爱特梅尔ATMEL全系列芯片解密单片机破解 ATMEL芯片介绍: ATMEL公司为全球性的业界领先企业,致力于设计和制造各类微控制器.电容式触摸解决方案.先进逻辑.混合信号.非易失性存储器和射频 (R ...
- 在keil 4中添加stc系列芯片的方法--【sky原创】
在keil 4中添加stc系列芯片的方法: 1.从官网下载uv3.cdb的文件网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb:3. 然后将[S ...
- xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)
xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...
随机推荐
- TypeScript与面向对象
目录 1.引 2.类(class) 3.构造函数和this 4.继承 5.super 6.抽象类 7.接口 8.属性的封装 9.泛型 1.引 简而言之就是程序之中所有的操作都需要通过对象来完成.一切操 ...
- webpack learn4-1配置css单独分离打包
1 先安装extract-text-webpack-plugin npm i extract-text-webpack-plugin 2 配置webpack.config.js
- typora+picgo+gitee 图片无法加载问题
typora+picgo+gitee 图片无法加载问题 待解决
- MySQL修改root密码的多种方法, mysql 导出数据库(包含视图)
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...
- nextcloud 中文乱码解决方案
参考地址 :https://www.yht7.com/news/13909 我是使用的第二种方法, 修改/nextcloud/lib/public/AppFramework/Http/FileDisp ...
- 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 百篇博客分析OpenHarmony源码 | v69.01
百篇博客系列篇.本篇为: v69.xx 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说 ...
- P3306-[SDOI2013]随机数生成器【BSGS】
正题 题目链接:https://www.luogu.com.cn/problem/P3306 题目大意 给出一个\(p,a,b,x_1,t\),有\(x_i=ax_{i-1}+b\) 求一个最小的\( ...
- Hibernate 的 <= 出现问题
问题模拟 select new map( e.name as name , e.salary as salary) from Emplpyee e where e.salary <= :sala ...
- 服务器使用matplotlib绘图
Two points: 1. change backend of matplotlib: import matplotlib.pyplot as plt plt.switch_backend('agg ...
- css 弹性盒子--“垂直居中”--兼容写法
使用弹性盒子兼容低端适配有时需要: display:flex 和 display:-webkit-box display: -webkit-box; -webkit-box-align: cent ...