有幸能够参与nPM1300的测评活动,这款开发板配套有“nPM PowerUP”的桌面软件,开发板上有一颗nRF5340的Soc作为nPM1300 控制主机,所以拿到手后不用任何编程既可以评估nPM1300的不同功能和特性。但是如果想要详细清楚这些实现和配置原理,还是需要先了解这颗PMIC的内部原理,在了解开发板原理图,最后通过配置软件,我们实测对应性能来验证评估结果。下面通过我实际使用情况带大家了解一下nPM1300这款PMIC高效电源管理芯片。
一、nPM1300初识
1.1:产品简介
nPM1300是一款高度集成的电源管理IC,适用于可充电的系统电路中。nordic的设计思路是用该芯片搭配旗下nRF52、53、包括新出54系列的SOC,用于低功耗的无线电源方案。
1.2:功能简介
作为高集成的电源管理芯片,nPM1300的充电功能支持最高800mA充电电流,并同时可以提供共高达500mA的可调稳定电压输出。此外在电源输出方面还提供2路200mA的BUCK稳压输出,与2路50mA的LDO输出。nPM1300拥有一组I2C(TWI)的,可以向外部主机传送读取到的电池温度、电压、电流的数据,这些数据用于提供给nRF Connect的软件开发工具包中的燃料算法所使用,从而提供电池电量的计算结果。同时芯片还配置了3颗预配置LED控制器引脚。以及5个通用GPIO引脚,可以用于控制BUCK,LDO开关,中断输出或者复位,电源故障警告的功能。
1.3:功能框图
1.4 引脚功能解释
首先nPM1300有两种封装,分别是QFN32和WLCSP。本次测评的开发板使用的是QFN封装,所以我按照手册简单描述一下,详细描述查阅手册P147
引脚 | 功能 | 备注 |
VDDIO | GPIO和TWI数字电源引脚 | |
VSET1 | BUCK1的Vout1电压输出设置引脚 | 仅在上电复位时用到 电压与阻值参考表手册P45 |
VSET2 | BUCK2的Vout2电压输出设置引脚 | 仅在上电复位时用到 电压与阻值参考表手册P45 |
VOUT1/2 | BUCK1/2的输出引脚 | |
SW1/2 | BUCK1/2输出电感引脚 | |
PVDD | BUCK[1,2]电源输入 | |
PVSS1/2 | BUCK1/2电源地 | |
CC1、CC2 | USB type-C配置通道 | 主要用于充电检测(USB Type-C) |
GPIO[0,4] | 5个可自由配置的GPIO引脚 | |
SHPHLD | 设置ship和Hibernation模式 | 有关模式描述参考手册P115 |
NTC | 电池温度检测引脚 | |
VBAT | 电池引脚 | |
VSYS | npm1300设备系统供电引脚 | |
VBUS | 充电输入引脚 | |
LED[0,4] | LED驱动输出引脚 | 可配置 |
AVSS | 系统GND | |
VINLDO[1,2] | LOADSW[1,2]或者LDO[1,2]的电源输入 | |
VOUTLDO[1,2] | LOADSW[1,2]或者LDO[1,2]的输出 |
二、nPM1300 EK开发板初识
2.1 资料查询
Nordic有一个专门的文档教学网站,该网站内含nordic全系列的产品教学和使用文档,也包括旗下软件和SDK的教学资料,我下面的介绍都是在该TechDocs中自己总结的内容,有兴趣按下面连接跳转进去详细看看。
https://docs.nordicsemi.com/bundle/ug_npm1300_ek/page/UG/nPM1300_EK/kit_content.html
2.2 硬件描述
我申请到的开发板实物图如下
上面包含了
2个电池接口J1,J2 + 2个电池排针接口
4颗LED指示灯
4个轻触按键
2个Type-C接口
2对输出连接接口
2.3:各个接口功能详细描述
(1)电池接口
开发板带有原生的J1,J2两个卧贴的电池接口,J2是3pin,多了一个NTC温度检测接口。这个NTC是必须使用的,如果没有NTC,nPm1300会检测温度不在合适的充电范围,停止充电。所以如果用户自己加电池,且电池没有NTC,可以用P2的排针接口,上面对应NTC连接在板子上的R9,是一个10KΩ的电阻,默认电池充电符合温度区间内。我这边买的锂电池自带NTC电阻,所以我直接接到J2接口了,如下图所示。
(2)4颗LED指示灯
LED1、2、3这三颗LED指示灯通过P3上的跳线帽,直接连接到了nPM的LED1、2、3的引脚上了。LED4是板载nRF5340的提示指示灯。4颗LED的功能如下
序号 | 名称 | 功能 |
1 | LED1 | Error |
2 | LED2 | Charging充电中 |
3 | LED3 | Host activity |
4 | LED4 | nPM1300 EK 运行状态 闪烁程序错误 呼吸程序正常 |
(3)4个轻触开关
SW2、3、4这3个按键一端连接nPM1300的GPIO0、1、2。按键SW1一端连接nPM1300的SHPHLD引脚。这4个按键对应另外一段连接GND,轻触按键即可触发下降沿信号至nPM1300。注意由于SW1连接的是SHPHLD引脚,可以用于退出ship或者hibernation模式,也可用于复位按键。
(4)Type-C接口
J3的Type-C接口为充电输入接口,连接VBUS电源,支持输入电压范围4.0V - 5.5V。在原理图中也能看到其CC1、CC2也连接到了nPM1300的引脚上,可以用于检测是否插入充电器。
J4的Type-C接口为nPM Controller接口,通过USB与板载nRF5340交互,进而在nPM PowerUP中通过图形操作控制nPM1300的电源和充电。
(5)两对输出连接接口
对应接口序号分别是P4、P5、P6、P7。其中P4和P5是BUCK1和BUCK2的稳压输出。而P6是VBUS的输出,P7是VSYSnpm1300的供电电源输出。上面的排针引脚接头可以用于其他设备供电,我们手头有nordic的其他开发板,后面会测试到。同时每个排针引脚接头旁边都有一个焊接好的测试环,这个适用于电子负载,示波器,功率计套件的测试点,使用这些设备测试nPM1300的电压、电流、功率等性能是否精准。
2.4:设备与电脑连接
如下图所示,分别连接两个type-C接口至电脑。备注,充电的Type-C接口可以连载手机充电适配器上,因为大部分电脑端的USB接口供电电流最大只有500mA。
我用的USB hub有额外适配器供电,所以我的这两个接口相当于都接入电脑了
连接成功后,我们打开软件nPM PowerUP,找到接入设备
打开后找到接入nPM1300 EK开发板,并连接
连接成功后,默认进入dashboard界面,该界面可以配置电池模型为锂电池,我们用到1200mAh/3.7V锂电池,就选一个LP803448和它最接近的型号。如果没接电池,Fuel Gauge也会提示您电池状态N/A
该界面也可软件配置两个BUCK稳压电路的输出幅值与是否使能,以及电压配置是由外部硬件上的VSET电阻决定还是由twi写入寄存器决定。
以及两个LDO开关是否使能。
在软件最底下有日志窗口,记录你操作软件上开关,对应npm controller的输出内容。
2.5 nPm1300与EXT board连接
在nPM PowerUP软件中默认的使用425.54mAh锂电池,如果我们想用我们自定义的电池,需要外接电量计扩展板,生成电池充放电模型。扩展板为nPM Fuel Gauge,可以在贸泽商城上海外代购。
三、nPM1300 EK的充电和BUCK输出评估
我个人申请这个开发板主要就是想验证芯片充电功能,同时buck输出也是这个PMIC和特色功能之一,我也一并验证了。对于充电和buck输出,我们把电流电压分开评估。其内部核心特色的库仑计是需要结合NCS的算法,我们就在软件里面验证即可。
3.1:电量计
如第一章提到了,npm1300通过IIC将电池电压、电流、温度传递给nRF5X的芯片,结合nRF connect SDK内部算法推测出电池电量百分比。我现在用软件读出电池百分比在和实际电池电压对比一下,做个粗略的判断。因为锂电池拥有一定的内阻,在不同的放电电流下,电池电压会跟随波动,所以这样的方式评估不一准确,我也只能粗略判断一下提供大家参考。
我们打开Fuel Guage,显示百分比74.9%
实际测试电池电压为3.91V,基本符合开路检测下锂电池电池放电曲线中70%百分比对应的电压值。
并且nPM PowerUP软件也是支持在充电中计算电池百分比,这是一个很重要的功能。我推测可能计算算法中考虑到了充电导致电池电压上升的部分,通过电流辅助计算,总之这比我们开发简单设备,只用adc判断电压来说,是一个非常非常实用的功能。
3.2 : 充电功能和BUCK输出的电压准确性
我们设置充电电压为4.2V,充电电流500mA
设置BUCK 1的输出电压3.3V
设置BUCK2的输出电压1.8V
由于充电电压会和电池电池当前电压有关,所以只用万用表测试BUCK[1,2]的输出电压验证。
3.3:充电电流准确性评估
在TechDOCS中提到可以使用安培表(万用表),示波器或者PPK测试电流。但是我们用的万用表测量电流是一段时间的平均值,无法测量瞬时电流。刚好我手头有一块PPK2(Power Profiler Kit Ⅱ),我用这个设备测试一段时间的电流值展示给大家,可以更详细了解电流的浮动情况。
关于VBAT 和 VOUT1,VOUT2(buck1/2)的电流和负载有关系,虽然我手头有DK开发板,但功耗也做不到200mA,无法展示buck的最大输出。所以只测试一下最核心的充电电流提供参考。
连接电路如下图
去掉充电器的J2上的Type-C接口,将PPK做为充电电流源,接入到VBUS和GND上。然后电流设置通过nPM power,电流实际值我们在PPK软件上观察,是否设置的一样即可。
由于我们是用PPK充当VBUS供电,充电电流就设置100mA内观察瞬态电流变化。结果如下截图所示。
充电的电流和设置的基本一致,而且整个充电过程中电流非常稳定,没有波动和毛刺的地方。
四、评估总结
这颗PMIC如其宣传所述,确实功能很完善,而且还都是做低功耗嵌入式设备所需要的。集成的buck和LDO输出可以用于传感器供电,而且配合NCS SDK可以实现电池电量百分比的计算,且充电过程也能是用,完全胜任商业产品内是用。以后如果有穿戴类产品项目的话,我会考虑添加这颗PMIC尝试一下它的低功耗性能。本次测评也只是针对nPM1300 EK的开发板做了个测试,验证我比较关心的电量计功能,所以对于nPM1300芯片的驱动,以及非nRF5X的单片机驱动移植没有尝试。以后如果用到了在更新使用的测评,感谢阅读。