当前位置:首页 > EDA > 电子设计自动化
[导读]智能手表电池就 300–500 mAh,屏幕常亮 + 心率 + GNSS 一开,峰值能冲到 200 mA,待机却要压到 μA 级——PMIC 如果只盯着"路数够不够",不盯轻载效率和时序,续航直接砍三分之一。下面这套在 nRF54 + 恒玄 + Apollo4 这类手表平台上验证过,从选型到时序代码闭环。

智能手表电池就 300–500 mAh,屏幕常亮 + 心率 + GNSS 一开,峰值能冲到 200 mA,待机却要压到 μA 级——PMIC 如果只盯着"路数够不够",不盯轻载效率和时序,续航直接砍三分之一。下面这套在 nRF54 + 恒玄 + Apollo4 这类手表平台上验证过,从选型到时序代码闭环。

一、PMIC 选型:别只看路数,看三条曲线

典型手表电源域拆分:Always-on(RTC/按键/触控,0.8–1.2 V)、BB/AP(主控,0.7–1.1 V DVFS)、Display(OLED 1.8–3.3 V)、Sensor(心率/GNSS 1.8 V + 3.3 V IO)、无线(BLE/Wi-Fi 3.3 V),至少 3 路 buck + 4–5 路 LDO。选型时盯三个硬指标:

• 轻载效率曲线:10 μA–1 mA 这段是手表"抬腕亮屏间隙"的主战场,PMIC 在这段 η 要从 80% 起跳。Nordic nPM1300(IQ 0.4 μA,10 μA 时 η≈88%)和 TI BQ25120A(500 nA IQ,1 mA 时 η≈90%)是手表常客;老牌 DA1469x 配套 PMIC 也可以,但路数紧。

• DVFS 支持:BB/AP 域 buck 要能 I2C 调电压(0.7 / 0.9 / 1.1 V 三档),屏幕关、传感器歇的时候降压,nRF54 这类平台降 0.2 V 能省 25% 动态功耗。

• 自身 IQ + 休眠模式:全局 ship mode 下整表 IQ ≤ 1 μA,闹钟/抬腕唤醒靠 RTC + 按键中断拉 WAKE 脚唤醒 PMIC,别让 BB 一直喂 I2C。

⚠ buck 的开关频率挑 2–4 MHz(如 nPM1300 的 2 MHz、BQ25120 的 1.5 MHz 可配),外接 2.2 μH 0402 电感能压到 1 mm 高,手表壳里省 0.3 mm 很关键。

二、多域时序:上电"正序"、掉电"反序"

手表上电不是"全开",是分级唤醒;掉电反过来,防浪涌也防 LDO 倒灌。典型 5 域顺序:

阶段 域 动作

① Always-on(RTC/PMIC 自供) 按键/充电接入即起,给 BB 的 BUCK1 预充

② BB/AP 域 BUCK1 0.7 V(最低 DVFS)起 BB,BB 起来再 I2C 调高到 0.9 V 跑系统

③ Sensor 域 心率/加速度由 BB GPIO 拉 EN,按需开

④ Display 域 抬腕中断触发,BB I2C 调 OLED 那路 LDO 从 0→3.3 V

⑤ 无线域 BLE 广播/载波开启,GNSS 另拉一路

掉电严格反过来:无线→Display→Sensor→BB(DVFS 降到 0.7)→Always-on 留守。反序的意义是避免大负载先掉、小负载还在抽电导致的反向电流,LDO 没加 body diode 保护的话会烧。

三、时序代码:I2C 配置 + GPIO 联动

PMIC 的 EN 脚别全交给 I2C 寄存器——唤醒路径上 BB 还没起来的那段,要靠硬件 GPIO 链式 EN 先拉起来,BB 起来后再切 I2C 精细控。以 nPM1300 为例:

/* PMIC 初始化:BB 起来后调电压 + 配时序 */

static void pmic_init(void)

{

   /* BUCK1 = BB 核心,0.7 V 启动 -> 系统起后升 0.9 V */

   i2c_write(PMIC_I2C_ADDR, 0x55, 0x70);  /* BUCK1_VOUT = 0.7 V */

   i2c_write(PMIC_I2C_ADDR, 0x54, 0x01);  /* BUCK1 enable */

   /* LDO1 = OLED 3.3 V,初始关,抬腕再开 */

   i2c_write(PMIC_I2C_ADDR, 0x60, 0x00);  /* LDO1 off */

   /* 配 GPIO2 为 LDO1_EN,外部 BB GPIO 可拉 */

   i2c_write(PMIC_I2C_ADDR, 0x92, 0x02);

   /* Ship mode 唤醒源:按键 + RTC alarm */

   i2c_write(PMIC_I2C_ADDR, 0xC0, 0x03);

}

/* 抬腕亮屏:BB 侧调 PMIC */

void wrist_wake_display(void)

{

   /* BUCK1 升到 0.9 V(BB 跑 UI)*/

   i2c_write(PMIC_I2C_ADDR, 0x55, 0x90);

   /* LDO1 开 OLED 3.3 V */

   i2c_write(PMIC_I2C_ADDR, 0x60, 0xB0);  /* 3.3 V + enable */

   /* 心率 Sensor 域顺手开 */

   gpio_set(HRM_PWR_EN, 1);

}

EN 脚链式写法(硬件级防抖序):

/* 硬件 EN 链:Always-on LDO → BB_BUCK_EN → Sensor_EN */

/* PMIC BUCK1_EN 脚直接接 BB 的 PWR_GOOD,BB 起来才拉 Sensor_EN */

gpio_config(BB_BUCK_EN,  OUT);

gpio_config(SENSOR_EN,   OUT | OPEN_DRAIN); /* PMIC GPIO 回灌保护 */

四、三个易翻车点

• BUCK 切电压别跨档跳:0.7→1.1 V 中间插 0.9,让 BB 的 DVS 过渡段 dv/dt ≤ 10 mV/μs,不然内核欠压锁死

• Ship mode 下 I2C 不通:调试口(SWD/串口)的电要挂在 Always-on 域,别挂 BB 域,不然 ship 后进不去

• LDO 倒灌:Display 域 OLED 的 3.3 V 如果来自系统 3.3 V 母线的 LDO,Display 先掉电时 OLED 面板电容会反向灌 LDO,选型时挑带 active discharge + reverse current protection 的(BQ25120 全系有,nPM1300 部分 LDO 有)

手表低功耗的真谛:PMIC 选轻载效率 + DVFS 的、时序硬件链 + I2C 双层控、上电正序掉电反序、ship 模式 IQ 压到 1 μA 内。这套跑完,300 mAh 电池的 1.78" 圆表,常亮秒针 + 全天心率 + 每晚睡监,能稳 5–7 天,比堆电池容量划算。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭