一 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系列芯片内部结构和升级方法的更多相关文章

  1. LSI系列芯片Raid卡配置方法、管理手册

    说明 本手册适用于LSI芯片Raid卡 包括但不限于Inspur 2008/2108 Raid卡.LSI 9240/9260/9261/ 9271 等Raid卡. 不同型号的Raid卡在某些功能上的支 ...

  2. 全面!总结BQ系列阻抗跟踪电量计化学Chemical ID配置和Golden学习方法

    BQ系列阻抗跟踪电量计SOC最高能达到1%,功能强大,应用起来也比较复杂.不仅要配置好参数,匹配好化学ID,并且进行好Golden学习和相关测试.本文就讲述ID匹配,Golden学习和测试的终极方法流 ...

  3. sharepoint2007就地升级2010系列(五)升级到sharepoint2010

    ---恢复内容结束--- 大家下午好 今天我们来完成最后一步,sharepoint2007升级2010.其实我反倒没有那么紧张了,因为我最担心的数据库升级,已经过了. OK,话不多说,让我们直接开始吧 ...

  4. sharepoint2007就地升级2010系列(三)升级系统

    OK,上两篇我们完成sharepoint2007的预览,以及升级前的补丁准备.今天我们来正式进行升级windows server系统以及SQL数据库 升级之前首先确定 search服务停止而且被禁用, ...

  5. openresty开发系列3--nginx的平滑升级

    openresty开发系列3--nginx的平滑升级 nginx服务器从低版本升级为高版本,如果强行停止服务,会影响正在运行的进程. 平滑升级不会停掉正在运行中的进程,这些进程会继续处理请求.但不会接 ...

  6. [转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下)

    你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下) https://www.ijiwei.com/html/news/newsdetail?source=pc&news_id=7177 ...

  7. 爱特梅尔ATMEL全系列芯片解密单片机破解

    爱特梅尔ATMEL全系列芯片解密单片机破解 ATMEL芯片介绍: ATMEL公司为全球性的业界领先企业,致力于设计和制造各类微控制器.电容式触摸解决方案.先进逻辑.混合信号.非易失性存储器和射频 (R ...

  8. 在keil 4中添加stc系列芯片的方法--【sky原创】

    在keil 4中添加stc系列芯片的方法: 1.从官网下载uv3.cdb的文件网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb:3. 然后将[S ...

  9. xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)

    xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...

随机推荐

  1. TypeScript与面向对象

    目录 1.引 2.类(class) 3.构造函数和this 4.继承 5.super 6.抽象类 7.接口 8.属性的封装 9.泛型 1.引 简而言之就是程序之中所有的操作都需要通过对象来完成.一切操 ...

  2. webpack learn4-1配置css单独分离打包

    1 先安装extract-text-webpack-plugin npm i extract-text-webpack-plugin 2 配置webpack.config.js

  3. typora+picgo+gitee 图片无法加载问题

    typora+picgo+gitee 图片无法加载问题 待解决

  4. MySQL修改root密码的多种方法, mysql 导出数据库(包含视图)

    方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...

  5. nextcloud 中文乱码解决方案

    参考地址 :https://www.yht7.com/news/13909 我是使用的第二种方法, 修改/nextcloud/lib/public/AppFramework/Http/FileDisp ...

  6. 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 百篇博客分析OpenHarmony源码 | v69.01

    百篇博客系列篇.本篇为: v69.xx 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说 ...

  7. P3306-[SDOI2013]随机数生成器【BSGS】

    正题 题目链接:https://www.luogu.com.cn/problem/P3306 题目大意 给出一个\(p,a,b,x_1,t\),有\(x_i=ax_{i-1}+b\) 求一个最小的\( ...

  8. Hibernate 的 <= 出现问题

    问题模拟 select new map( e.name as name , e.salary as salary) from Emplpyee e where e.salary <= :sala ...

  9. 服务器使用matplotlib绘图

    Two points: 1. change backend of matplotlib: import matplotlib.pyplot as plt plt.switch_backend('agg ...

  10. css 弹性盒子--“垂直居中”--兼容写法

    使用弹性盒子兼容低端适配有时需要: display:flex 和 display:-webkit-box   display: -webkit-box; -webkit-box-align: cent ...