#技术资源#
APM32F103xB的工作模式有:运行模式、低功耗模式,其中低功耗模式分为sleep、stop、standby、Vbat供电备份域模式。以下记录了如实使用mini板测量以上工作模式的功耗(即电流)。 1 分析mini板的电源供电结构,确定万用表串联的位置1.1 mini版本的电源供电结构分析需要测量的电流必现是MCU消耗的电流,因此可以在J6、J7、J8跳线帽处串联电流表,同时合理的设置GPIO状态,避免额外的消耗电流。
1.2 实际连接图如如下拔掉mini板的J6、J7、J8跳线帽,并串联万用表(选择电流档位),
2 测试代码及数据默认情况下系统时钟为72MHz,在测量功耗时,都是掉电再上电后测量的。 2.1 运行模式直接运行while(1),功耗为12.6mA。 2.2 sleep模式外设时钟都是关闭,进入sleep模式,功耗为5.6mA #include "main.h" int main(void) { __WFI(); while(1); } 2.3 stop模式进入stop模式,功耗为25.4uA。 注意: (1)所有的GPIO都需要配置为模拟输入,否则测量的功耗数据会偏大; (2)由于JTAG的IO默认情况是JTAG功能而不是GPIO功能,因此先重映射为GPIO,再配置为模拟输入 #include "apm32f10x_pmu.h" int main(void) { GPIO_Config_T configStruct; RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA|RCM_APB2_PERIPH_GPIOB|\ RCM_APB2_PERIPH_GPIOC|RCM_APB2_PERIPH_GPIOD|\ RCM_APB2_PERIPH_GPIOE|RCM_APB2_PERIPH_AFIO); GPIO_ConfigPinRemap(GPIO_REMAP_SWJ_DISABLE); configStruct.pin= GPIO_PIN_ALL; configStruct.mode = GPIO_MODE_ANALOG; GPIO_Config(GPIOA, &configStruct); GPIO_Config(GPIOB, &configStruct); GPIO_Config(GPIOC, &configStruct); GPIO_Config(GPIOD, &configStruct); GPIO_Config(GPIOE, &configStruct); RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_PMU); PMU_EnterSTOPMode(PMU_REGULATOR_ON,PMU_STOP_ENTRY_WFI); while(1); } 2.4 standby模式进入standby模式,测量功耗为3.1uA #include "apm32f10x_pmu.h" int main(void) { RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_PMU); PMU_EnterSTANDBYMode(); while(1); }
测试工程如下:
|