本帖最后由 Sok 于 2024-7-19 14:05 编辑

前言

有幸能够参与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:功能框图

image.png


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 硬件描述

我申请到的开发板实物图如下

image.png
  
上面包含了

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接口了,如下图所示。

image.png

(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 运行状态

闪烁程序错误

呼吸程序正常



   image.png

(3)4个轻触开关

SW2、3、4这3个按键一端连接nPM1300的GPIO0、1、2。按键SW1一端连接nPM1300的SHPHLD引脚。这4个按键对应另外一段连接GND,轻触按键即可触发下降沿信号至nPM1300。注意由于SW1连接的是SHPHLD引脚,可以用于退出ship或者hibernation模式,也可用于复位按键。

image.png
(4)Type-C接口

J3的Type-C接口为充电输入接口,连接VBUS电源,支持输入电压范围4.0V - 5.5V。在原理图中也能看到其CC1、CC2也连接到了nPM1300的引脚上,可以用于检测是否插入充电器。

J4的Type-C接口为nPM Controller接口,通过USB与板载nRF5340交互,进而在nPM PowerUP中通过图形操作控制nPM1300的电源和充电。


image.png

(5)两对输出连接接口

对应接口序号分别是P4、P5、P6、P7。其中P4和P5是BUCK1和BUCK2的稳压输出。而P6是VBUS的输出,P7是VSYSnpm1300的供电电源输出。上面的排针引脚接头可以用于其他设备供电,我们手头有nordic的其他开发板,后面会测试到。同时每个排针引脚接头旁边都有一个焊接好的测试环,这个适用于电子负载,示波器,功率计套件的测试点,使用这些设备测试nPM1300的电压、电流、功率等性能是否精准。

image.png


2.4:设备与电脑连接

如下图所示,分别连接两个type-C接口至电脑。备注,充电的Type-C接口可以连载手机充电适配器上,因为大部分电脑端的USB接口供电电流最大只有500mA。


image.png

我用的USB hub有额外适配器供电,所以我的这两个接口相当于都接入电脑了
image.png

连接成功后,我们打开软件nPM PowerUP,找到接入设备
image.png
打开后找到接入nPM1300 EK开发板,并连接
image.png
连接成功后,默认进入dashboard界面,该界面可以配置电池模型为锂电池,我们用到1200mAh/3.7V锂电池,就选一个LP803448和它最接近的型号。如果没接电池,Fuel Gauge也会提示您电池状态N/A

该界面也可软件配置两个BUCK稳压电路的输出幅值与是否使能,以及电压配置是由外部硬件上的VSET电阻决定还是由twi写入寄存器决定。

以及两个LDO开关是否使能。

在软件最底下有日志窗口,记录你操作软件上开关,对应npm controller的输出内容。

image.png
2.5 nPm1300与EXT board连接

在nPM PowerUP软件中默认的使用425.54mAh锂电池,如果我们想用我们自定义的电池,需要外接电量计扩展板,生成电池充放电模型。扩展板为nPM Fuel Gauge,可以在贸泽商城上海外代购。


image.png
image.png

三、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判断电压来说,是一个非常非常实用的功能。


image.png

image.png

3.2 : 充电功能和BUCK输出的电压准确性

我们设置充电电压为4.2V,充电电流500mA

设置BUCK 1的输出电压3.3V

设置BUCK2的输出电压1.8V

由于充电电压会和电池电池当前电压有关,所以只用万用表测试BUCK[1,2]的输出电压验证。

image.png

image.png

image.png
3.3:充电电流准确性评估

在TechDOCS中提到可以使用安培表(万用表),示波器或者PPK测试电流。但是我们用的万用表测量电流是一段时间的平均值,无法测量瞬时电流。刚好我手头有一块PPK2(Power Profiler Kit Ⅱ),我用这个设备测试一段时间的电流值展示给大家,可以更详细了解电流的浮动情况。

关于VBAT 和 VOUT1,VOUT2(buck1/2)的电流和负载有关系,虽然我手头有DK开发板,但功耗也做不到200mA,无法展示buck的最大输出。所以只测试一下最核心的充电电流提供参考。


连接电路如下图

image.png
去掉充电器的J2上的Type-C接口,将PPK做为充电电流源,接入到VBUS和GND上。然后电流设置通过nPM power,电流实际值我们在PPK软件上观察,是否设置的一样即可。

image.png
由于我们是用PPK充当VBUS供电,充电电流就设置100mA内观察瞬态电流变化。结果如下截图所示。
image.png
充电的电流和设置的基本一致,而且整个充电过程中电流非常稳定,没有波动和毛刺的地方。

四、评估总结

这颗PMIC如其宣传所述,确实功能很完善,而且还都是做低功耗嵌入式设备所需要的。集成的buck和LDO输出可以用于传感器供电,而且配合NCS SDK可以实现电池电量百分比的计算,且充电过程也能是用,完全胜任商业产品内是用。以后如果有穿戴类产品项目的话,我会考虑添加这颗PMIC尝试一下它的低功耗性能。本次测评也只是针对nPM1300 EK的开发板做了个测试,验证我比较关心的电量计功能,所以对于nPM1300芯片的驱动,以及非nRF5X的单片机驱动移植没有尝试。以后如果用到了在更新使用的测评,感谢阅读。