AnsweredAssumed Answered

LPC802低功耗问题

Question asked by vector guo on Jun 20, 2019
Latest reply on Jun 24, 2019 by ZhangJennie

各位好:

我正在使用LPC802,我在测试power down模式,但是功耗一直无法降低,始终在50uA左右,我使用的是SDK_2.5.0_LPCXpresso802。我直接使用了SDK下 SDK_2.5.0_LPCXpresso802\boards\lpcxpresso802\demo_apps\power_mode_switch_lpc 这个demo测试,测试发现功耗很高,我又翻阅了社区帖子根据帖子,我优化如下:

第一,设置管脚功能:

CLOCK_EnableClock(kCLOCK_Swm); SWM_SetFixedPinSelect(SWM0,kSWM_RESETN,false); SWM_SetFixedPinSelect(SWM0,kSWM_SWCLK,false); SWM_SetFixedPinSelect(SWM0,kSWM_SWDIO,false); SWM_SetFixedPinSelect(SWM0,kSWM_CLKIN,false); SWM_SetFixedPinSelect(SWM0,kSWM_ACMP_INPUT1,false); SWM_SetFixedPinSelect(SWM0,kSWM_ACMP_INPUT2,false); SWM_SetFixedPinSelect(SWM0,kSWM_ACMP_INPUT3,false); SWM_SetFixedPinSelect(SWM0,kSWM_ACMP_INPUT4,false); SWM_SetFixedPinSelect(SWM0,kSWM_WKCLKIN,false); SWM_SetFixedPinSelect(SWM0,kSWM_VDDCMP,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_0_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_1_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_2_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_3_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_4_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_5_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_6_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_7_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_8_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_9_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_10_MASK,false); SWM_SetFixedPinSelect(SWM0,SWM_PINENABLE0_ADC_11_MASK,false);

 

第二,所有管脚配置为不使用上下拉:

CLOCK_EnableClock(kCLOCK_Iocon);
const uint32_t IOCON_INDEX_PIO_config = (0x0 );
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_0, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_1, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_2, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_3, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_4, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_5, IOCON_INDEX_PIO_config);

IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_7, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_8, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_9, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_10, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_11, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_12, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_13, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_14, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_15, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_16, IOCON_INDEX_PIO_config);
IOCON_PinMuxSet(IOCON, IOCON_INDEX_PIO0_17, IOCON_INDEX_PIO_config);

 

第三,所有IO设置为输出低模式(外围硬件电源已经关断)。

第四,关闭一些时钟

POWER_DisablePD(kPDRUNCFG_PD_BOD);
POWER_DisablePD(kPDRUNCFG_PD_FRO_OUT); /*!< Ensure FRO is on */
POWER_DisablePD(kPDRUNCFG_PD_FRO); /*!< Ensure FRO is on */
POWER_DisablePD(kPDRUNCFG_PD_ADC0);
POWER_DisablePD(kPDRUNCFG_PD_ACMP);

  POWER_DisablePD(kPDRUNCFG_PD_LPOSC);   

 

但是,电流仍然在50uA 左右,请问,还有哪些操作需要做?

Outcomes