前言
在移动电源领域,英集芯的电源管理IC市场占有率还是蛮高的,基本上这个行业领域里面的,或多或少都用过英集芯的电源管理IC,他们家的IC有一个好处就是集成了DC-DC和快充协议,开发起来相对简单,不需要考虑协议层面的逻辑,但是弊端也很明显那就是容易发热。
经常使用英集芯的IC的小伙伴可能会遇到过一些奇奇怪怪的问题,看起来没有逻辑,后来复盘发现是寄存器操作没有严格按照规格书,导致固件出现了不可预期的结果,那今天我们就展开讲一下开发的过程中有哪些需要注意的事情,希望能给你一些指引。
一、I2C interface
英集芯的电源管理IC都是通过IIC接口通信,开发之前一定要先认真仔细看一下寄存器规格书的前几页,这里面详细介绍了通信时的注意事项,一定要按照要求来实现,尤其是标红的字体更要注意,不然就会出现不可预期的结果。
IIC总线通信延时注意事项,如下图:
通过逻辑分析仪抓取的波形数据,如下如:
寄存器读取的时候,就按照逻辑分析仪抓取的总线通信的方式实现,就是每个ACK之间要延时50us,这样数据才能正常读上来。
另外下面红色字体提示,读写寄存器时要单字节读写,不能连续读写。
当然,你可以不信邪,你试试你的数据应该是上不来的,这些都是实践中总结的经验。
二、寄存器写入操作
通信的过程中,有读寄存器,也有写寄存器,如需要操作写寄存器时,必须先读出来再进行计算后再写回到寄存器中,不能直接写进去,尤其是未开放的bit是禁止写的,误写会导致固件出奇怪的问题,有可能程序乱跑,完全不按功能执行。
比如像下图的寄存器:
这个寄存器写入操作时,bit0-bit2是预留部分,千万不能操作,这三个位的数据固件有可能做了其他用途,没有开发出来而已。
如果你还不信邪,不小心操作了,一旦出现了问题,问题排查到你怀疑人生。
三、寄存器读取
目录里面分为可读可写操作寄存器,只读状态指示寄存器,我们看到这一栏下面有很多的寄存器数据,比如:充电状态指示寄存器、快充状态指示寄存器、VBAT电压寄存器、VOUT输出电流寄存器等等,可以根据获取数据的需求去采集对应的寄存器即可。
可读寄存器列表如下图:
四、总结
通过以上了解,上手起来相对不难,但是要会用,要按照要求去使用一般来说没有什么问题,但如果你没有按照他的套路来,那它随时会发脾气,有时候排查问题排查到你脑壳子疼,归纳一下主要有以下几点:
-IIC总线通讯,通讯的时候按照要求该延时就要延时,每个IC个不同;
-寄存器操作要求,保留位不能操作,按照规范先读后写再回读,一般没啥问题。