本帖最后由 小恩GG 于 2020-8-26 10:48 编辑
不断降低集成电路的功耗是集成电路发展过程中永不改变的主题。降低功耗,有利于节约能源,延长待机时间,降低产品热量… … 毋庸多言,低功耗已经成为衡量产品优略的重要指标之一。
NXP官方通常推荐刚刚接触LPC芯片的客户参考MCUXpresso SDK 自带的 power_mode_switch_lpc例程作为参考代码。使用这一经典例程,客户可以用串口终端控制MCU进入四种低功耗模式:睡眠模式(Sleepmode),深度睡眠模式( Deep Sleep mode),掉电模式(Power Down mode)和深度掉电模式(deep power down mode)。同时,用户还可以通过串口设置选择多种唤醒方式实现MCU的唤醒。
然而,我们经常有客户询问,官方提供的power_mode_switch_lpc例程测到的低功耗掉数值和数据手册标称的有不少出入。例如用LPCXpresso845MAX 测试,在掉电模式(Power Down mode)下,如果没有断掉调试器,自测板子电流值可达到100uA左右, 而收据手册标称掉电模式下的典型电流值1.5uA,最大电流值10uA(见下图)。这是哪里出了问题?
power_mode_switch_lpc例程的目的是为了给客户演示LPC的几种低功耗模式及多种唤醒方式。下面我们来一步步演示并修改该例程以得到收据手册的标称值。
实验环境: DemoBoard: LPCXpresso845MAX SDK:SDK_2.8.0_LPCXpresso845MAX Demo Code:power_mode_switch_lpc IDE:MCUXpresso IDE v11.2.0
1. 将power_mode_switch_lpc下载到LPC845开发板,运行。 串口选择low power mode, wake (SW2按键) 唤醒。程序运行进入掉电模式,在调试器未断开情况下,此时实测Idd=99.5uA 进入low power mode,程序使用了如下代码 POWER_EnterPowerDown(DEMO_ACTIVE_IN_DEEPSLEEP); 为了唤醒,参数DEMO_ACTIVE_IN_DEEPSLEEP配置了PDSLEEPCFG,将BOD和看门狗振荡器电源域打开了,导致了一部分电流的损耗,造成电源电流偏大。
2. 这一步,我们将对应用于唤醒的初始化语句去掉, // DEMO_InitWkt(); 把下面一行进入掉电模的代码 //POWER_EnterPowerDown(DEMO_ACTIVE_IN_DEEPSLEEP); 替换成 POWER_EnterPowerDown(0); //power down BOD and watchdog osc
再次编译下载代码再次进入掉电模式,此时实测Idd=57.3uA 这样Idd明显降低了。然而57.3uA仍然和数据手册标称的典型值1.5uA相差很多。这是由于IDE的后台将MCU用于调试的电源域打开了导致了额外电流消耗
3. 我们将开发板脱机独立运行(断掉电源重新上电),进入掉电模式,此时实测Idd=1.4uA
小结:
数据手册的低功耗电流参数的测量是在MCU GPIO输出为低且禁止上拉,且所有振荡器及模拟域都被关闭的情况下测得的。在对低功耗要求高的场合,用户需要仔细优化代码设计以得到最佳的低功耗设计。
|