测试PMIC

记录“使用国产PMIC器件”的苦难经历。仅有一份Datasheet,貌似资料页中还有很多“说的不一定真是这样的”坑儿,譬如其中一页说“LDO1”输出电压是可编程调整的,整个Datasheet翻了N遍没有找到调整操作的方法,连相关寄存器都没有找到。虽然2周经历各种迷雾,今天还是可以正式测试电源性能了(严格说具体性能应该由半导体制造商用Datasheet给定,用户只是对自己关心的关键指标进行确认即可)


电源信息show在TFT上

为什么入坑儿国产PMIC?

“产品价格”约束力最大,不满足价格约束都不是产品设计。按目标成本预算,原计划整个电源单元估算成本应该在6元左右比较合理,其中包含200mAh+/-50锂电池包约占⅔成本,另外就是充电管理单元(线性充电、放电和Boost)、一路[email protected]输出Buck、一路3.3V@10mA输出的LDO和1.5A负载开关,以及简单的长按按钮开/关机逻辑。国内半导体厂家在单通道非隔离的Boost和Buck电源方面产品极具价格优势,可靠性也经得起考验,这个预算还是很保守的。
第一版打样后发现问题:Power单元的PCB面积太大,由于产品的特殊性决定需要优化PCB面积。集成的PMIC似乎是个好选择,而且我需要的Power单元功能,相信绝大多数支持Li-ion管理的PMIC几乎都满足需求。继续选择国产的PMIC,还是从价格方面考虑。对于几种备选方案的对比,尤其BOM成本、PCB面积、电感要求等方面,迅速确定了方案。接着第二次打板,采购方案所用的材料,虽然恰新冠逢疫情严重肆虐全国之际,幸好快递还在继续。

大多数PMIC需要厂商为你订制(OTP)

在某宝一次采购了50PCS PMIC样品,虽然手焊QFN器件总归有点不踏实,帮我焊板的小伙也是经验老道。但是,连续焊了4片,实测主回路的电压都是1.55V左右,这与Datasheet上的参数完全不一致。无疑是翻新元件!估计被坑了。当天又下单另一家,器件到手后赶紧又焊上测试电压,结果又是1.8V左右。不会两次都遇到翻新元件了吧?
1.8V左右测实测电源输出给我一个提醒,或许买来的这个器件就是这样的,至少开/关机的逻辑似乎都是对的。然后又仔细研究TI(包括NXP、Freescale)、Dialog(早期Apple手机电源部分的主要供应商)、Ricoh(不咋出名的日本半导体)等PMIC器件的相关文档,毕竟他们资料很丰富。问题终于得到提示,N多种器件的Datasheet都提到上电时序、默认启动电压、开关机模式等可以在出厂前用OTP方式为客户订制!
我在某宝连续买2次的元件应该是某人订制品的尾货,不是什么翻新元件,毕竟我买到手的单价加上运费也不到RMB2元。后来代理商的FAE也同意“订制品尾货”的猜测。
幸好,第三次下单买到的50PCS样品(含运费也不足百元)竟然能用!这期间已经得到半导体厂家推荐的代理商FAE帮助,也就是前几天FAE才跟我电话联络,那是自己感觉找到那根救命稻草了。现在已经跟代理商协商一致,按照我的需求用OTP方法为我订制这颗PMIC。太幸运了!只是到今天还没有发货给我,但是我要出5.x元的单价。某宝上只需1.x元成交!
订制PMIC,实际上只是用OTP方式编程PMIC启动时多路电源的上电顺序、默认电压。

自己写Driver code

github上各种搜索方法都没有找到这个PMIC的任何参考代码,看来只能亲自从零开始,当然Driver工作也非常简单。

  • 配置寄存器确定系统供电单元的基本模式(初始化)
  • 配置寄存器调节各电源通道输出电压(处理器电压动态调节)
  • 读寄存器以监测供电单元输入电压和电流
  • 读寄存器以监测电池电量、电压、充电/放电电流
  • 监测(非充电状态)电池电量和电压自动进入睡眠模式
PMIC Driver的基本架构(功能单元)

这个Driver可以划分为三个层次:

  1. I2C/Two wire API (底层API)
  2. PMIC的配置类、监测类API (中间层API)
  3. PMIC的初始化操作、动态电压调节操作、电源信息收集和监测操作

由于这颗PMIC采用标准的400KHz传输速度的I2C/Two wire接口,基于MCU等系统的标准I2C/Two wire库设计底层的接口是很容易的,大多数人都至少写2各私有的接口:__readByte和__writeByte,或者考虑某些功能寄存器由2各或更多各连续寄存器,需要再增加__readBytes和__writeBytes两个接口。中间层使用这些API很容易读、写PMIC上一个或多个寄存器以实现其特定功能。
底层接口的设计很容易,半个小时的工作,几乎都在做测试工作。测试底层接口的最好方法是读Device ID寄存器,写某些无关紧要的寄存器,譬如某个电源输出通道电压调节寄存器,对输出电压稍作调节,用万用表观察是否生效。
中间层比较难规划,一般性方法是按功能归类。对于PMIC的中间层,无外乎就是配置类(包括初始化配置和动态配置)、监测类两种。配置类的接口设计原则:检验配置参数有效性-写入配置参数-回读-校验;监测类接口都是访问只读寄存器,需要注意根据Datasheet的参数将寄存器值转换为相应量纲的物理量,譬如电压、电流的量纲等。
顶层接口设计需要遵循项目预期功能需求。我只关心

  • 初始化供电系统
    1 配置各电源通道的输出电压
    2 配置充电电流和充电模式(激活电池时间、涓流充电)
    3 开启供电系统监测寄存器(即启动某些ADC及其采样率)
  • 采集供电系统状态
    1 供电单元的外电电压和电流(外电是否有效)
    2 电池的电量、电压(包括电池是否有效)
    3 电池的放电和充电电流
    4 寄存器值的log out

即便是从零开始的编码的确没有耗费多少时间,多亏最初在纸上画的那几张架构草图。码农不会只敲键盘,纸上画的多,敲键盘的效率更高。
调试工作就费了大事儿,几乎用了一周时间,困在“获取电池电量”的接口!这本属于中间层的监测类接口,按照Datasheet说这个PMIC内部有一个“库仑计(coulobmeter)”专用于电池电量,并配有电池功率(mAh)计算方法(寄存器值和某些常数之间的计算)。然而,这些寄存器的值始终不变,可是电池明明被放电、被充电,不断地创造改变电池电量的机会,不断地读这些寄存器,结果是始终不变。难道库仑计不是这样使用?查资料吧。说实话,查了看了各种与库仑计有关的,甚至于看了其他厂家PMIC的库仑计和电量计算,最后感觉还是白看。因为库仑计计数器不会变!
找厂商提供帮助,毕竟咱也是你的客户。打电话、发e-mail多种渠道联络,终于收到代理商的电话,介绍了一位FAE。终于把“电池电量”这事儿搁下了,似乎这颗PMIC没有此功能。没有专用库仑计,没有办法得到准确的电池电量,但是未来某一天有空闲的话,我相信坐下来写个算法用“电池电压”和“放电电流随时间积分”也能粗略地估算当前电量。当然,充电状态的电量同样可以用“电流随时间积分”来估算。

昨天下午算是该工作的收尾了,把供电系统信息print到console,以及关键的电压、电流参数和电池充/放电状态show到TFT上(本项目正好有个240*240分辨率的TFT)

纯属记录点滴工作,貌似对国产PMIC吐槽。打心底里说,除了缺乏资料让我们遇到问题一头雾水之外,性价比真的很不错,尤其经历一整天各种测试的表现看,国产半导体值得信赖。TI和Dialog的PMIC都贼贵,工业和汽车领域使用应该更好,至少不能为增加10元BOM成本而费心。

测试结果

Li-ion过放电会严重损坏电池寿命。所以测试工作的第一项就是放电的截止电压测试。从电池供应商得到:电池放电截止电压不能低于2.7V。所用电池包内部带有电池保护板,放电至2.7V左右会截断电池输出。

3.7V@250mAh电池放电保护

  1. 电池放电截止电压:2.9~3.0V,重负载(3.3V接近200mA)在电池电压降到3V时PMIC就关闭所有电源输出,轻负载(3.3V约30mA)在电池电压降到2.9V时PMIC自动关闭所有电源输出。 [备注:实测数据可能存在偏差,因为数据采集周期间隔为1分钟。依照经验,电池电压降至3V以下时,电量下降的很快。可惜目前还没有电池电量监测功能]
  2. 重负载时电池放电时间测试。打开系统的WIFI模块,不断地scan周围热点,并保持CPU高速运行执行一些浮点数计算(让FPU也运行起来),虽然不能确定这些单元的平均功率,也很难测量出他们的峰值功率。只是监测电池的放电电流大约在130~155mA(观测点数据),250mAh电池从充满开始放电到PMIC自动关闭电源,系统如此工作大约80分钟。
  3. 轻负载时电池放电时间测试。关闭系统WIFI(这是本项目重功耗最大的功能单元),保持CPU全速执行电源监测接口的代码,供电系统监测接口给出的监测点数据中,放电电流大约维持在30mA,系统工作时间约170分钟。期间没有关闭TFT的背光板,如果关闭背光一定能延长系统工作时间。

每次放电完毕(PMIC自动关闭所有电源)后测量电池电压,大约2.9~3.0V。如此重复5次,都是相似的结果,不会出现过放电。

下一步的放电测试,在电池充满电之后模拟用户使用场景测试系统运行时长;充满电后待机时长(系统进入深睡眠和PMIC关闭所有电源输出两种模式)等。

测试充电电流、时长、发热情况

  1. 配置的充电电流为800mA,PMIC内部采用Linear charging模式
  2. 从PMIC自动关闭全部电源后开始对电池充电,充电时长约35分钟(根据PMIC提供的电池工作状态数据)
  3. 使用PMIC提供的温度传感器观察720mA充电时,PMIC内部温度接近80摄氏度!85度就是该元件的工作温度!根据观测点数据,从来没有达到800mA充电,观察到的最大值是720mA。在供电系统监测接口报告PMIC温度接近80度时用手指皮肤触摸芯片表面未感知到烫

结论

这颗国产PMIC性价比蛮高的,某宝上售价2元以内,代理商报价4.5元(含订制编程费)。相比较专做PMIC的德国Dialog产品报价,国产的只是德国的零头。与TI的多款PMIC相比,价格也只是TI的⅓。没有找到日被Ricoh的报价,功能上Ricoh有一颗PMIC与国产的这颗十分地相似,封装、引脚、内部功能单元和寄存器的布局都惊人地相似。整个调试和测试过程只能够,Ricoh的相关文档还是给予我很大帮助,一头雾水时会根据Ricoh文档和国产PMIC文档做对比,得到不少提示。

前几天跟一位做国产半导体厂商销售的朋友通电话了解到,国产半导体的销售报价现状:正规渠道报价永远比零售渠道高,代理商渠道不稳定所以网站不会公布代理商信息。

受2019年美国卡华为脖子事件的影响,国产半导体产品迅速被国人接受。尽可能用国产的!使得我一年内了解过数十家国内半导体厂商,虽说不少都是上市公司,产品还是比较单一,绝大多数仍在半导体分立元件、专用IC、电源等领域,拥有通用处理器IP的厂商不多,当然上海乐鑫、北京兆易创新算是很优秀的。兆易的ARM内核产品线虽说与ST很接近,价格优势很明显,但是工具链和应用生态环境远不如ST,为用户使用带来一定的困难。ESP系列产品在全球推广的很不错,归功于ESP的应用生态环境比较好,尤其早期的ESP8266的生态非常好。

你可能感兴趣的:(测试PMIC)