[资料干货] IP5385充电偶发没有电流问题深入分析

[资料干货] IP5385充电偶发没有电流问题深入分析
简介IP5385是一款充电管理IC支持 SCP、 PD3.0、 UFCS 等快充协议 支持 2~6 节串联电池 集成升降压驱动 最大功率 100W 的移动电源 SOC。我们的应用环境是一个MCUIP5385电量计然后外围有一些LDO啊数码管啊等等。我们这里是一主两从通信MCU作为主机IP5385和电量计作为从机在做IIC通信的时候发现了一些数据异常读写的问题这里做一下简单的总结各位朋友有感兴趣的可以看看。一、发现问题偶发电量没到100%时充电没有输入功率基本都是在电量90%以上出现每次充放电测试基本都会出现。充电没有功率时的充电器输入端参数如下图但是如果给电池断电之后再重新上电则充电功率恢复正常而且一直能充到100%。断电再充电功率恢复正常的截图如下这个问题初看是IP5385这边的问题现象确实也是这样的。好了那我们顺着IP5385开始分析一下问题点。二、分析问题首先明确一下这里停止充电的电芯电压基本在4V左右而我们软件里面检测到循环次数或SOH值到达设定值后会触发浅充钱放设置这里的情况像是触发了浅充浅放设置。那么我们就监控MCU的log数据MCU是否设置了浅充钱放IP5385的log数据同步抓取MCU这边设置了IP5385就会打印寄存器设置的信息。这里通过Log数据对比分析发现IP5385打印了寄存器设置浅充钱放的时候这时候MCU却没有设置那么我们进一步用逻辑分析仪去抓一下数据。串口抓取Log数据如下图通过逻辑分析仪抓取数据分析发现设置了一次浅充钱放。逻辑分析仪抓的数据如下图那么我们通过逻辑分析仪的数据来看大概率还是MCU设置的浅充钱放MCU为啥设置呢和SOH和循环次数有关那监视一下循环次数和SOH数据。监视一段时间之后发现循环次数数据会偶发异常异常数据不定有时候是100多有时候是1000多这时候问题的原因就越来越清晰了我们来分析电量计的通信驱动有什么问题因为循环次数是从电量计获取上来的。这个时候没什么好办法既然电量计通信不正常那我们去看电量计的规格书在寄存器页面介绍此电量计是smbus型电量计通信方式采用标准的smbus协议但是下面又说操作是可选的就是说IIC通信也行smbus通信会更好因为又校验数据。电量计规格书介绍如下图好了定位到问题了下一步找解决方案就好办了。三、解决问题根据以上分析我修改IIC协议为smbus协议但是读CRC值的时候发现读不上来数据通过逻辑分析仪抓取数据可以看出如下图没关系别慌到了这一步问题马上就要解决了不要泄气。我们再来分析一下为什么CRC值上不来通过和技术支持沟通原来CRC值计算需要时间读这个数据时需要加入时钟延展一眼硬件IIC都是自带有时钟延展功能但我们是软件模拟IIC那么既然有延迟我们在读最后一个数据时直接延时100us等待从机把数据准备好之后再去一下看看。通过实测果然数据读取就正常了。smbus协议逻辑分析仪数据如下图这里电量计的通信改为Smbus通信最后一个字节CRC校验可以增加数据的可靠性防止丢包、数据异常等。经过验证测试都正常了此刻天空是晴朗的心情是美丽的。四、总结通过上述这一问题的分析解决过程我们也发现了一个问题的表象和问题的本质是两码事千万不要通过表象判断下结论可以顺着表象的点一步步分析到深层原因做技术的最终要拿数据说话。遇到问题千万不要慌思路要清晰要有信心问题最终都会被解决。经验之谈很多严重的问题最后都有可能是一个很小的bug引起的。这就叫大厦倾倒始于蝼蚁。。---------------------作者liao6链接https://bbs.21ic.com/icview-3517213-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。