用EFR32BG22做的BLE模块,烧录soc-empty例程,用Wireless Starter Kit Mainboard (BRD4001A)和Simplicity IDE里的Energy Profiler测量运行电流。发现在休眠状态(EM2)下的电流有1 mA多。经检查发现,程序里使能了调试串口打印:
#define DEBUG_LEVEL 1
如果关闭串口,那么休眠电流可以降低到几uA的水平(Energy Profiler里读不出精确的数字)。
如果既要有调试信息,又要低功耗,那么可以在进入EM2之前disable串口,在唤醒后再enable串口:
USART_Enable(RETARGET_UART, usartDisable);
evt = gecko_wait_event();
USART_Enable(RETARGET_UART, usartEnable);