本篇博客只是作为个人记录,拆锂电池有危险,撬棒刺穿外壳可能爆炸,请勿模仿,误操作电池数据可能失效,请勿模仿。
得到该电池的电量计芯片型号、IIC从机地址、通信的实际波形;
拆开电池,找到IIC接口,引出GND、SCL、SDA三根线,连接到EV2400工具。
使用bqstudio软件,找到正确的电量计型号电池建立连接,完成此步即可确定该电池使用的电量计芯片型号、IIC地址、当前电量等一系列自动获取的信息。
单独使用读电量指令,并通过逻辑分析仪获取通信的实际波形。
硬件:
- M300电池
- EV2400,版本号0.28
- 逻辑分析仪,Kingst LA 2016
软件:
- Battery Management Studio,版本号1.3.101
电池外壳为卡扣扣紧的,且两个侧面有双面胶。
拆的时候注意两点:
有接口的一面是有PCB的。
PCB下方有一截电芯是裸露的,没有包裹完全,撬棒、刀片等工具注意避开。
外壳有写,充电限制电压:52.8V,共12节电芯串联,所以每节电芯充满52.8/12=4.4V。
PCB上有VC0~VC12的测试点,对应就是这12节电芯,VC0和VC1之间是第一节电芯,VC1和VC2之间是第二节电芯,以此类推。
IIC有两处,一个是“SDA1,SCL1”,一个是“SDA_1006,SCL_1006”,不知道哪一个是我需要找的IIC接口。
虽然打了胶,光线足够角度合适还是可以看到芯片上丝印的,分别是BQ7620B,STM32L071CZT6,34Z100。
STM32是主控,所以要查的就是BQ7620B和34Z100。
BQ7620B是丝印,芯片型号是BQ76200,高压电池组前端充放电 高侧NFET驱动器。
34Z100是丝印,芯片型号是BQ34Z100,电量计芯片。
总结下:现在已知主控是STM32,电量计芯片是BQ34Z100,还有一个NFET驱动器BQ76200。
我是想要通过EV2400和电量计BQ34Z100建立通信,那么找到BQ34Z100的数据手册,找到IIC引脚在哪个位置,然后万用表滴一下和哪个IIC通,不就行了吗?没那么容易,两个没一个是通的。
下图就是BQ34Z100的引脚分布图,SCL、SDA引脚在13、14号。
从BQ34Z100入手,顺着13、14引脚,看看板子上走线到哪里,最终发现是到了另一个芯片,把胶清除丝印是“BQ7694003”。
BQ7694003又是个什么呢?支持15节串联的电池监控器,模拟前端AFE器件。好复杂,我已经看不懂了。。。
从PCB上看,BQ34Z100的IIC引脚连接到BQ7694003就无了,难道这两个IIC接口都不是吗?
从板子上这两个IIC接口入手,再看看是连接到哪里的,都连接到STM32,然后又没了,咋可能呢。
终于意识到,大疆这块板子不止两层,通过查找走线的方法不现实了。
根据目前的信息STM32,BQ34Z100,BQ7694003,BQ76200,再搜索资料,发现有人用这个方案做过毕设,再追溯,原来是基于一个TI的官方方案,
TIDA-010030 reference design | TI.com,下图就是TI方案的功能框图,现在对这块板有个大致的了解了;
再找到原理图,看一下到底IIC线是怎么连的?三个芯片的IIC是接在一起的。而我前面直接找,只发现了BQ34Z100和BQ7684003的IIC连在一起,那么可能就是还差了这个P1端子,所以万用表测量不通。
当然了,说到现在也不知道两个IIC接口到底是哪个,不过对于大疆M300电池的方案有了一定的认识,其实只要知道电量计芯片是BQ34Z100,就已经省了很多麻烦,试吧,一测左上角的IIC1就和bqStudio连上了,注意EV2400选的是IIC接口,SMBUS接口不稳定经常连不上。
下图为EV2400连接的引脚:
可以看到很多信息了,左侧是EV2400版本、通信方式、电量计芯片型号、IIC地址、温度、电池电压、电量百分比、充放电仪表盘;
现在想单独测试一下读电量的指令。
进入“Advanced Comm”选项卡;
输入IIC地址:0xAA;
寄存器地址BQ34Z100手册有,下图也截图了:0x02;
要读取的字节数:1;
点击“Read”,发送指令;
Log里返回0x33,十进制的51,51%电量和左侧一致;
把左上角的Auto Refresh自动更新功能关闭:
打开逻辑分析仪开始采集,再次发送读电量指令,这时候就获取到了实际通信的波形: