简介
IP5385是英集芯的一款充电管理IC,支持 SCP、 PD3.0、 UFCS 等快充协议, 支持 2~6 节串联电池, 集成升降压驱动, 最大功率 100W 的移动电源 SOC。
我们这里的应用是55W快充,具体的详细参数如下:
输入规格:Type-C1/Type-C2 (5V/3A,9V/3A,12V/2.5A,15V/2A,20V/1.5A);
输出规格为:Type-C1/Type-C2 : 5V3A 9V3A 10V2.25A 12V3A 15V3A 20V2.25A 5-11V5A,5~20V/2.5A;
USB-A: 10V2.25A 5V3A 9V2.0A 12V1.5A, C1+C2+A: 5V3A。
我们在产品调试过程中发现一个奇怪的问题,这里做一下简单的总结,和大家分享一下。
一、发现问题
我们这里的应用场景是一主两从,主机是MCU,从机一个是IP5385,另一个是其他IC。
我们遇到的奇怪的问题现象是这样的:首先,MCU读的IP5385寄存器数据都是正常的,包括充放电状态、小电流状态、快充状态、电压、电流、NTC等都正常,打印出来看到的数据可以看得出来,但是逻辑分析仪抓取的IP5385的寄存器数据确实有问题的,很奇怪,这是无意中发现的。
奇怪的数据如下:

这里的0xEA就是IP5385的写地址,这里都是读寄存器,正常来说写地址之后,就是寄存器地址,然后是读地址,读出来的寄存器数据,但是,IP5385的寄存器数据所有都是写地址之后,是寄存器地址,紧接着却是写进去数据了,而且还是ACK应答,奇怪吧,从业这么多年还是第一次遇到呢。
详细的寄存器数据如下:

但是,转折来了,另一个从机IC的IIC通信却是正常的,寄存器读取都是OK,下面把寄存器数据贴出来,对比看看。

此刻,脑袋里呈现黑人问号,纳尼,这啥情况?下面我们跟着思路分析一波。
二、分析问题
根据个人经验,这有可能是时序有问题,于是,用示波器抓波形分析。
示波器抓取波形数据如下:

从波形来看时序和数据都是OK的,这是软件模拟的IIC,所以波形没有那么精准。但看起来都是正常的,分析到此时,没有了思路。
别慌,这时候千万要稳住,以往的经历告诉我,遇到再大的难题,千万不要着急,最终问题都会被解决,信心很重要。
好了,我们来回顾一下问题点。IP5385寄存器读取打印OK,逻辑分析仪抓取异常,另一个从机打印数据OK,逻辑分析仪抓取OK,那么差异点在逻辑分析抓取数据这里,通过时序来看IP5385写寄存器地址之后,本来应该读的,直接开始写了,噢,为什么没有读呢?难道时序出了问题?
经验告诉我,遇到奇怪问题难以分析时,去看规格书,一行一行认真看,答案就藏在规格书中某一行文字中。
于是,我开始看IP5385的寄存器规格书,一行一行看。
终于,我找到了这样几行文字,还是标红的,说明很重要,如下图:

我接着往下看,看到有一个寄存器读取的示例,如下图:

再对比看看自己的驱动波形,嗯,于是,心中有了解决思路,开始动手调试验证。
三、解决问题
首先,我们按照规格书提供的示例,调试IIC驱动,在发送从机写地址、片内地址、读地址的后面加一个延时50us。
IIC通信时序按照规格书修改,如下图:

改完之后,烧录程序验证,用逻辑分析仪抓取数据,哎,发现数据正常了,这个寄存器数据看起来是那么优美,就像我此刻的心情一样,美美哒。
单个数据正常的截图如下:
逻辑分析仪抓取寄存器读取如下图:

四、总结
通过这个时序问题的发现、解决过程,说明一个现象,问题往往出在很小的地方,所以,各位Engineer,遇到问题不要慌,思路要清晰,在没有头绪的时候看看规格书,总会找到答案。
还有一点,我们在做项目的时候,一定要认真对待,要有敬畏之心,每一个项目都要尽全力去做,每一个问题都要刨根问题,日积月累,必有所得。