1. Home
  2. 博客

    使用nPM1300延长电池使用寿命并增加USB-C充电功能

使用nPM1300延长电池使用寿命并增加USB-C充电功能 2024-01-22

Nordic 的nPM1300是特别适用于nRF52和nRF53系列等 SoC的电源管理集成电路( Power Management IC,PMIC)。相比SoC 的内部稳压器,这款PMIC采用更大的180 nm工艺制造,在提高效率的同时还提供了电池充电和系统管理等附加功能,而这些功能通常需要单独的IC来实现。

Nordic 的nPM1300是特别适用于nRF52和nRF53系列等 SoC的电源管理集成电路( Power Management IC,PMIC)。相比SoC 的内部稳压器,这款PMIC采用更大的180 nm工艺制造,在提高效率的同时还提供了电池充电和系统管理等附加功能,而这些功能通常需要单独的IC来实现。

在本文中,我们将介绍如何将 nPM1300 用作电压调节器和电池充电器,使得应用产品的电池寿命较直接使用SoC上的内部稳压器更长。我们还将介绍如何用nPM1300轻松实现USB Type-C充电,并在您的软件中进行配置。

PMIC 是什么?

许多系统级芯片(SoC)(包括Nordic的nRF52和nRF53系列)都可以直接使用可充电电池,这是通过SoC内部的稳压器将电池电压调节到SoC的系统电压来实现的。作为SoC产品,内部的所有组件都需要采用相同的工艺节点,而对于数据处理(如MCU或SoC的处理器内核)而言,工艺节点越小越好。然而,对于电源调节而言,较小的工艺节点意味着较多的漏电流和较高的单个晶体管成本,这使得内部电压调节器的效率更低,实施成本过高,因此越来越多的 SoC 制造商在产品中省去了内部电压调节,转而要求用户配置外部稳压器或PMIC。

PMIC是将电源调节和传输任务从主应用SoC 中分离出来单独处理的独立电路。PMIC还可以加入电池充电功能,这是SoC很少具备的功能。PMIC 很可能使用开关稳压器,而不是将所有过剩电压转化为热量的低效低压差稳压器(LDO)。降压稳压器(BUCK)最适合将电源从电池电压转换为SoC系统电压,它采用特定的占空比开关电压,以产生正确的电压,然后使用LC滤波器将方波平滑为合适的直流电压。与SoC或MCU等现代处理硬件相比,使用更大的工艺节点可以更高效、更廉价地实现这一目标。例如,我们将在本篇博文中详细介绍采用180 nm工艺制造的nPM1300 PMIC。

如何选择适合的 PMIC

为了选择适合的 PMIC,需要考虑以下因素:

我的系统需要多少个电源轨?

有时,解决方案中的所有组件都可以由同一电源轨供电,这就要求所有组件都能够在相同的电压下工作,并且所有组件合计的电流消耗不超过电源轨稳压器的电流输出能力。如果组件需要不同的电压才能工作,使用PMIC的两个独立电源轨相比使用外部稳压器或分压器更有效。使用不同的电源轨还能够确保稳定性,因为如果一个子系统超过预期电流限制,也不会影响另一个子系统。

预计系统消耗的最大电流负荷是多少?

显然,PMIC需要能够为供电的所有组件提供电流。这有时很难计算,最安全的方法是查看规格表,总是以任何组件所能承受的最大负荷为尺度,但这会导致电源传输子系统的设计数值严重过大。更好的方法是测量特定应用在硬件运行时的峰值电流,并将电源传输子系统的电流数值设计在系统最大电流范围内,再加上[假设数值]%的安全系数。但这并不总是可行的,因为必须先构建解决方案,然后才能测量电流消耗。至少对于Nordic SoC 而言,最好同时也是最实用的方法是使用我们的在线功耗分析器。可以输入应用的无线电设置,并且估算出 SoC 的功耗要求。无线电设置至关重要,因为无线电往往是无线 SoC 中最耗电的部分。

我需要哪些附加功能?

根据制造的设备类型,你可能需要在设计时考虑到电源传输问题,而不只是简单地输入和输出合适的电压和电流。例如考虑到IP防护等级或为了使设备尽可能小巧,你可以使用不可拆卸的电池。对于这种设备的用户来说,不可拆卸电池带来了一个难题:如果设备锁定,应该怎么办?按钮通常是通过软件实现的,在这种情况下显然会变得毫无反应,而硬件电源开关在现代设备中也很少见。通常情况下,只需拔下电池即可强制电源循环。对于不可拆卸电池来说,这是不可行的,因此必须执行某种硬复位开关。硬复位开关可以作为独立的集成电路来实现,它的唯一功能就是硬复位,也可以通过PMIC的附加系统管理功能来实现。

你可能希望在电源管理子系统中实现其他功能,包括电量计IC、外部看门狗和休眠定时器。这些功能通常由添加专用的 “监控器IC” 来实现,而使用nPM1300则不必这样做,因为它们已直接集成在PMIC中。

如何旁路内部稳压器以提高效率

选择好PMIC后,就可以开始设计电源管理子系统了。第一个步骤是确保系统以所能达到的最高效率运行。充满电的锂电池最大电压可达4.25 V,但许多 SoC无法在如此高的电压下运行,因为内部的处理内核需要非常特殊的电压。为确保处理器获得正确的电压,SoC几乎都包含用于最后步骤的稳压器,允许在一定电压范围内为SoC供电。除此之外,许多SoC还包括一个额外的稳压器步骤,使得SoC能够在没有外部稳压器的情况下通过电池或USB电源运行。这种内部稳压器与SoC的其他部分一样,都是采用很小的工艺节点,因而效率低于建立在较大工艺节点上的稳压器。

举例来说,nRF5340 SoC的最大工作电压为3.6 V,因此要直接使用电池工作,就需要在SoC的电压输入(VDD)之前增加一个稳压器。独立的VDDH输入包括这个额外的第一稳压器,将电压降低到VDD可接受范围内的数值,进而为SoC供电。

Symbol Parameter Min. Nom. Max. Units
VDD VDD supply voltage, independent of DCDC enable 1.7 3.0 3.6 V
VDDH VDDH supply voltage, independent of DCDC enable 2.5 3.7 5.5 V
VBUS VBUS USB supply voltage 4.35 5.0 5.5 V
TA Operating temperature -40 25 105 °C

docs.nordicsemi.com 上的 nRF5340 SoC 在线文档

使用外部稳压器取代这个初始稳压器便可以提高效率。举例来说,nPM系列产品中的降压稳压器的效率相比nRF5340的VDDH第一稳压器步骤的效率高得多,部分原因是它们的工艺节点更大。这也意味着可以在更接近处理器最佳电压的状况下运行nRF5340,从而确保实现尽可能高的性能和效率。实际上,进行旁路的方法是将电源直接连接到SoC上的VDD引脚,而不是直接使用电池所需的VDDH引脚。

进行稳压器旁路的效果

我们使用相同的小型锂电池,测量了直接使用电池供电的nRF5340和使用与 nPM1300相同工艺节点的nPM1100 PMIC,发现后者能够提高效率,使得电池使用寿命延长20%以上。

使用外部 PMIC 与使用内部 VDDH 稳压器相比

我们发现,使用外部 PMIC 与使用内部 VDDH 稳压器相比,电池电压降低至 3.5 V 以下所需的时间都要延长 20% 以上。

实施USB-C充电

Micro-USB type B连接器一直是小型设备的充电标准。这是可以理解的,因为连接这种 USB 接口非常简单。只需要在电路布局中插入两个连接,就能以5 V电压为设备充电,完全没有问题。新的USB-C标准则要复杂一些。由于 USB-C 连接器是旋转对称的,因此需要两倍的连接才能确保任何 USB-C 电缆正确地为设备供电。此外,USB-C 还提供多种电压和电流限制,并且电缆两端的接头相同。为简便起见,假设设备不通过 USB 通信,仅用于充电。该设备必须与另一端的设备进行协商,以确定哪个设备应该向哪个设备供电。一种方法是使用专用集成电路,也称为 “E-mark芯片”。E-mark芯片连接到 USB-C连接器上的两个CC引脚,并处理协商操作,让源设备和汇入设备达成一致。这些芯片非常小巧,有些USB-C至非USB电源线甚至可以在电缆中加入E-mark芯片,允许直接从任何高质量USB-C电源请求12 V等特定电压。

USB Type C

图片来源: Chindi.ap (Wikimedia Commons)

有趣的事实是:如果让 USB-C 灌槽设备上的 CC 引脚处于浮动状态,该设备在通过 USB A 到 C 电缆连接到主机设备时将正常工作,但通过 USB C 到 C 电缆则无法正常工作。这是因为如果没有检测到下拉电阻,USB-C 主机根本不会提供电源,而 USB-A 没有检测这些电阻的方法,只能无条件提供 5 V 电压。

匿名硬件设计师

另一种方法是引导(bootstrapping),即通过电阻器将插座上的CC引脚接地,使得USB-C端口模拟USB-B端口。引导法的缺点是整个系统的电流消耗就会受到限制,与USB-B充电一样。这将严重限制充电速度,尤其是当设备在开启并同时通过USB充电时。

第三种也是最好的选择,就是使用像nPM1300这样的PMIC,该器件具有内置功能,只需将nPM1300的CC引脚连接到USB-C插座的CC引脚,即可完成。这样,当nPM1300连接到兼容的USB-C电源并同时为降压和LDO供电时,就能充分发挥800 mA电池充电潜力。

简化图样

请注意,这些是用于说明的简化图样,省略了大部分无源组件和所有数据线,只显示了 nRF5340 的功率域。有关实际原理图和布局工作,请遵循合适的参考设计

采用软件配置nPM1300

由于大多数PMIC没有内部处理器或存储器,因此通常通过 I2C 兼容双线接口 (TWI)进行配置。根据产品规格或数据表,通过在正确的寄存器中设置正确的比特位来启用和禁用功能。这就要求用户在SoC或其他主机设备上启用TWI,物理连接SCL和SDA,并将正确的数值发送到PMIC上正确寄存器的TWI地址。例如,nPM1300的TWI地址为110 1011或十六进制0x6b。根据产品规格,我们发现控制BUCK1的寄存器偏移量为0x400。因此,要启用对 BUCK1 的软件控制,就需要在寄存器中写入 1 的值,并加上0x0F偏移量,这也可以在产品规格中找到。用于设置电压的寄存器有0x08额外偏移量,因此要将BUCK1设置为输出3 V电压,需要将数值20 (根据产品规格,十六进制0x14,寄存器数值对应于3 V) 写入0x408。这种启用功能的方法很麻烦,需要花费大量时间浏览数据表,才能找到正确的寄存器、解释功能并进行相应的设置。

幸运的话,可能已经有人为您使用的RTOS编写了驱动程序。驱动程序会处理所有TWI通信,你所要做的就是找出要使用的函数以及调用功能时要传递的正确参数。nPM1300也是这种情况,Zephyr中包含了驱动程序,利用这些驱动程序的最简单方法是将 nPM1300 EK盾添加到应用程序中。nPM1300的BUCK1标签为npm1300_ek_buck1,设置电压的函数为“regulator_set_voltage”,参数为降压、允许的最小和最大电压(单位为微伏)。这使得示例代码略微简短,但您也需要查阅文档或驱动程序本身的代码,以找到正确的函数和参数。

通过向 PMIC 写入 TWI 信息启用 BUCK1 的两种非理想方法示例

通过向 PMIC 写入 TWI 信息启用 BUCK1 的两种非理想方法示例

nPM PowerUP简介

有了nPM PowerUP,nPM1300 PMIC的所有功能均可通过用户友好的图形用户界面(GUI)进行配置。选择输出电压非常简单,只需将滑块设置为所需电压,或者输入数字即可。然后,点击左上角的“导出配置”按钮。

nRF Connect for Desktop中的 nPM PowerUP 应用程序截图

nRF Connect for Desktop中的 nPM PowerUP 应用程序截图

nPM PowerUP应用程序生成的输出采用devicetree覆盖(overlay)文件形式。当你在项目中加入该覆盖文件时,它会调入Zephyr TWI驱动程序(“I2C”)和在GUI中配置nPM1300特定功能的驱动程序。这意味着自动生成的覆盖使用的内存量与手动使用驱动程序时相同,如第二个代码示例。它还会将这些驱动过程控制的所有功能初始化,采用导出前在 nPM PowerUP 中选择的数值。

执行devicetree 覆盖文件,请点击 nRF Connect for VS Code 扩展中的“edit build configuration”,然后通过“Devicetree overlay”下的“Add overlay ”按钮来添加覆盖文件。

Devicetree overlay

你必须确保prj.conf中包含这些配置:

CONFIG_GPIO=y
CONFIG_SHELL=y
CONFIG_LOG=y
CONFIG_REGULATOR=y
CONFIG_SENSOR=y
CONFIG_LED=y

这将把nRF Connect SDK中的相关配置调入项目,从而启用nPM1300不同功能的驱动程序,并启用日志和shell模块。shell模块允许利用专门为nPM1300创建的预定义命令集。

如果使用的示例应用程序在默认情况下不使用 TWI,则还需要在覆盖文件末尾添加以下几行代码:

&i2c0_default {
  group2 {
    psels = <NRF_PSEL(TWIM_SCL, 0, 27)>, <NRF_PSEL(TWIM_SDA, 0, 26)>;
    bias-pull-up;
    };
  };
/delete-node/ &{/pin-controller/i2c0_default/group1/};

这将启用I2C线路的内部上拉,其中27和26数值指定了本示例所用SoC上SDA和SCL引脚编号。通过使用内部上拉功能,可以在硬件布局中省去I2C线路的外部上拉电阻。

结语

与通过SoC集成稳压器直接由电池供电的相同系统相比,添加PMIC可以提高系统的能效。此外,一些PMIC (如nPM1300) 还具有额外的有用功能,而且这些功能常常是必要的,通常是在电源管理子系统中添加专用的 “监控器IC ” 来实现的。使用nPM PowerUP应用程序作为配置GUI,并通过生成的devicetree覆盖文件将设置导出到nRF Connect SDK项目中,就可以轻松实现所有这些功能,并在启动时将SoC固件设置为PMIC的核心功能。

其它资源:

订阅Nordic新闻简报

了解最新信息!订阅后即可获取最新Nordic及物联网资讯

立即订阅