本帖最后由 小恩GG 于 2021-7-28 17:07 编辑
LPC43XX低功耗Deep Power Down模式唤醒问题 在MCU开发中,低功耗永远是衡量产品性能的一个重要指标。有些客户在使用LPC43XX系列进入低功耗模式后,出现无法唤醒的情况,本文对此进行说明。
1. LPC43XX无法唤醒的原因 LPC43XX有四种低功耗模式,分别是睡眠模式(Sleep mode),深度睡眠模式( Deep Sleep mode),掉电模式(Power Down mode)和深度掉电模式(Deep Power Down mode)。低功耗模式选择性地关掉系统时钟、关掉外设时钟、掉电SRAM等,并且在一定条件下唤醒MCU进入正常模式,唤醒触发源有唤醒引脚、ATIMER、RTC。 用户在使用LPC43XX的misc_pmc_states案例时,发现在Deep Power Down mode模式下,使用ATIMER无法唤醒MCU。这是在写ATIMER寄存器时,由于设计原因,无法立即写入DOWNCOUNTER与PRESET寄存器,大约需要2~3ms才可写入成功,所以在写入寄存器后需要判断和等待这两个寄存器写入成功,代码实现如下: Chip_ATIMER_UpdatePresetValue(LPC_ATIMER,ui32_calc); LPC_ATIMER->DOWNCOUNTER = ui32_calc; while(LPC_ATIMER->PRESET != ui32_calc){} while(LPC_ATIMER->DOWNCOUNTER != ui32_calc){}
2. 测试Deep Power Down mode模式下唤醒 当Deep Power Down mode模式下唤醒MCU时,MCU会进行复位。在main函数中添加如下代码用来测试唤醒: Board_LED_Set(0,1); //blue led on delay(3000); Board_LED_Set(0,0);//blue ledoff pwr_goto_deep_powerdown_for_ms(3000);//go to deep powerdown mode
附件中,示例唤醒成功的现象为,LED小灯大约三秒钟闪烁一次。 工程见附件
|