PowerMode - 待机模式
材料准备
- AmebaPro2 [ AMB82 MINI ] x 1
- Optional: Push button x 1
- Optional: Register 220 ohms x 1
- Optional: USB to ttl serial cable x 1
范例说明
介绍
在此范例中,开发板将示范待机模式以节省电量。有 6 个唤醒源 系统将倒计时 5 秒,然后进入待机模式。当唤醒源被触发时,系统将重新启动并再次唤醒。
下面两个表列出了待机模式下的模块和电路板功耗报告。
RTL8735B 模块功耗结果
唤醒源 | 模块功耗 (uA) |
---|---|
待机模式 (3V3) | |
AON timer | 41.22 |
AON GPIO | 41.28 |
RTC | 41.46 |
PON GPIO | 41.07 |
UART/Serial1 | 41.32 |
Gtimer0 | 41.48 |
AMB82 MINI 开发板功耗测量
唤醒源 | 开发板耗电量测量值 (mA) | |
---|---|---|
一般模式 | 待机模式 | |
AON timer | 53.15 | 4.79 |
AON GPIO | 53.12 | 4.81 |
RTC | 53.11 | 4.75 |
PON GPIO | 55.09 | 4.87 |
UART/Serial1 | 55.61 | 4.79 |
Gtimer0 | 55.59 | 4.83 |
流程
在 “File” -> “Examples” -> “AmebaPowerMode” -> “StandbyMode” 中打开范例。
接下来是设置系统并进入电源模式。请参考以下步骤进入待机模式。
步骤 1. 设置“WAKEUP_SOURCE”,AON定时器:0; AON GPIO: 1; RTC:2,PON GPIO:3,UART/Serial1:4,Gtimer0:5。
步骤 2. 设置唤醒源。有 6 个唤醒源,每个都有自己的设置。
对于 AON 定时器,在“#if (WAKEUP_SOURCE == 0)”部分,设置“CLOCK”和“SLEEP_DURATION”。 “CLOCK”可以是 4MHz 或 100kHz。 “SLEEP_DURATION”单位是秒。
对于 AON GPIO,在“#elif (WAKEUP_SOURCE == 1)”部分,设置“WAKUPE_SETTING”。范例中的“WAKUPE_SETTING”是Pin,可以是21或22。 GPIO引脚设置为高准位触发,请参考以下连接。
对于 RTC,在“#elif (WAKEUP_SOURCE == 2)”部分,设置“ALARM_DAY”、“ALARM_HOUR”、“ALARM_MIN”或“ALARM_SEC”。所有值都设置了 RTC 唤醒的持续时间。范围是“1day, 0h, 0m, 0s”到“365day, 23h, 59min, 59s”。
对于 PON GPIO,在“#elif (WAKEUP_SOURCE == 3)”部分,设置“WAKUPE_SETTING”。范例中的“WAKUPE_SETTING”是Pin,可以是0到11。 GPIO引脚设置为高准位触发,请参考下面的连接。
对于 UART/Serial1,无需设置。但是USB 到 ttl serial cable Tx(绿色)和 Rx(白色)引脚需要连接到 Serial1 Rx 和 Tx 引脚。请参考以下连接。 (红色电源5V/3.3V,黑色接地)
对于 Gtimer0,在“#elif (WAKEUP_SOURCE == 5)”部分,设置“SLEEP_DURATION”。 “SLEEP_DURATION”是以秒为单位的定时器睡眠持续时间。
步骤 3. 启动待机模式。此步骤只有 1 个可选设置。当唤醒源设置为 RTC 时,使用“PowerMode.start(1970, 1, 1, 0, 0, 0);” 替换“PowerMode.start();” 用于设置开始时间。 (默认为 1970.1.1 00:00:00)。
所有定时器将在持续时间结束时自动唤醒,所有 GPIO 引脚必须按下按钮来高准位触发,UART 需要通过 USB-ttl cable 通过 Serial1 提供输入。
正确的开机、进入Standby、重启周期如下图。