Usrcfg
Config File
Wake Event Config
WAKEUP_KM4 :唤醒 KM4
WAKEUP_KM0 :唤醒 KM0
WAKEUP_NULL :禁用该唤醒源
例如设置 {WAKE_SRC_UART0, WAKEUP_KM4},则表示 UART0 要唤醒 KM4;
设置 {WAKE_SRC_UART0, WAKEUP_KM0},则表示 UART0 要唤醒 KM0。唤醒掩码应该设置为用户运行应用的 CPU,保持中断和唤醒源设置都是同一个 CPU。
Note
如果选择唤醒 KM4,则 KM0 也会被唤醒。
SDK 中已经设定好唤醒掩码的唤醒源,不可修改。例如
{WAKE_SRC_WIFI_FISR_FESR_IRQ, WAKEUP_KM0}是 Wi-Fi 专用,不可修改。
/* 唤醒属性可设置为 WAKEUP_NULL/WAKEUP_NP/WAKEUP_AP/WAKEUP_DSP */
WakeEvent_TypeDef sleep_wevent_config[] = {
// Module wakeup
{WAKE_SRC_VAD, WAKEUP_NULL},
{WAKE_SRC_AON_WAKEPIN, WAKEUP_NULL},
{WAKE_SRC_AON_TIM, WAKEUP_NULL},
{WAKE_SRC_PWR_DOWN, WAKEUP_NULL},
{WAKE_SRC_BOR, WAKEUP_NULL},
{WAKE_SRC_ADC, WAKEUP_NULL},
{WAKE_SRC_AON_RTC, WAKEUP_NULL},
{WAKE_SRC_SPI1, WAKEUP_NULL},
{WAKE_SRC_SPI0, WAKEUP_NULL},
{WAKE_SRC_CTOUCH, WAKEUP_NULL},
{WAKE_SRC_GPIOB, WAKEUP_NULL},
{WAKE_SRC_GPIOA, WAKEUP_NULL},
{WAKE_SRC_UART_LOG, WAKEUP_AP},
{WAKE_SRC_UART3, WAKEUP_NULL},
{WAKE_SRC_UART2, WAKEUP_NULL},
{WAKE_SRC_UART1, WAKEUP_NULL},
{WAKE_SRC_UART0, WAKEUP_NULL},
{WAKE_SRC_Timer7, WAKEUP_NULL},
{WAKE_SRC_Timer6, WAKEUP_NULL},
{WAKE_SRC_Timer5, WAKEUP_NULL},
{WAKE_SRC_Timer4, WAKEUP_NULL},
{WAKE_SRC_Timer3, WAKEUP_NULL},
{WAKE_SRC_Timer2, WAKEUP_NULL},
{WAKE_SRC_Timer1, WAKEUP_NULL},
{WAKE_SRC_Timer0, WAKEUP_NULL},
{WAKE_SRC_WDG0, WAKEUP_NULL},
{WAKE_SRC_BT_WAKE_HOST, WAKEUP_NULL},
{WAKE_SRC_AP_WAKE, WAKEUP_NULL},
{WAKE_SRC_WIFI_FTSR_MAILBOX, WAKEUP_NP},
{WAKE_SRC_WIFI_FISR_FESR, WAKEUP_NP},
{0xFFFFFFFF, WAKEUP_NULL},
};
/* 唤醒属性可设置为 WAKEUP_NULL/WAKEUP_NP/WAKEUP_AP/WAKEUP_DSP */
WakeEvent_TypeDef sleep_wevent_config[] = {
// Module wakeup
{WAKE_SRC_VAD, WAKEUP_NULL},
{WAKE_SRC_AON_WAKEPIN, WAKEUP_NULL},
{WAKE_SRC_AON_TIM, WAKEUP_NULL},
{WAKE_SRC_PWR_DOWN, WAKEUP_NULL},
{WAKE_SRC_BOR, WAKEUP_NULL},
{WAKE_SRC_ADC, WAKEUP_NULL},
{WAKE_SRC_AON_RTC, WAKEUP_NULL},
{WAKE_SRC_SPI1, WAKEUP_NULL},
{WAKE_SRC_SPI0, WAKEUP_NULL},
{WAKE_SRC_CTOUCH, WAKEUP_NULL},
{WAKE_SRC_GPIOB, WAKEUP_NULL},
{WAKE_SRC_GPIOA, WAKEUP_NULL},
{WAKE_SRC_UART_LOG, WAKEUP_AP},
{WAKE_SRC_UART3, WAKEUP_NULL},
{WAKE_SRC_UART2, WAKEUP_NULL},
{WAKE_SRC_UART1, WAKEUP_NULL},
{WAKE_SRC_UART0, WAKEUP_NULL},
{WAKE_SRC_Timer7, WAKEUP_NULL},
{WAKE_SRC_Timer6, WAKEUP_NULL},
{WAKE_SRC_Timer5, WAKEUP_NULL},
{WAKE_SRC_Timer4, WAKEUP_NULL},
{WAKE_SRC_Timer3, WAKEUP_NULL},
{WAKE_SRC_Timer2, WAKEUP_NULL},
{WAKE_SRC_Timer1, WAKEUP_NULL},
{WAKE_SRC_Timer0, WAKEUP_NULL},
{WAKE_SRC_WDG0, WAKEUP_NULL},
{WAKE_SRC_BT_WAKE_HOST, WAKEUP_NULL},
{WAKE_SRC_AP_WAKE, WAKEUP_NULL},
{WAKE_SRC_WIFI_FTSR_MAILBOX, WAKEUP_NP},
{WAKE_SRC_WIFI_FISR_FESR, WAKEUP_NP},
{0xFFFFFFFF, WAKEUP_NULL},
};
/* 唤醒属性可设置为 WAKEUP_NULL/WAKEUP_NP/WAKEUP_AP/WAKEUP_DSP */
WakeEvent_TypeDef sleep_wevent_config[] = {
// Module wakeup
{WAKE_SRC_VAD, WAKEUP_NULL},
{WAKE_SRC_AON_WAKEPIN, WAKEUP_NULL},
{WAKE_SRC_AON_TIM, WAKEUP_NULL},
{WAKE_SRC_PWR_DOWN, WAKEUP_NULL},
{WAKE_SRC_BOR, WAKEUP_NULL},
{WAKE_SRC_ADC, WAKEUP_NULL},
{WAKE_SRC_AON_RTC, WAKEUP_NULL},
{WAKE_SRC_SPI1, WAKEUP_NULL},
{WAKE_SRC_SPI0, WAKEUP_NULL},
{WAKE_SRC_CTOUCH, WAKEUP_NULL},
{WAKE_SRC_GPIOB, WAKEUP_NULL},
{WAKE_SRC_GPIOA, WAKEUP_NULL},
{WAKE_SRC_UART_LOG, WAKEUP_AP},
{WAKE_SRC_UART3, WAKEUP_NULL},
{WAKE_SRC_UART2, WAKEUP_NULL},
{WAKE_SRC_UART1, WAKEUP_NULL},
{WAKE_SRC_UART0, WAKEUP_NULL},
{WAKE_SRC_Timer7, WAKEUP_NULL},
{WAKE_SRC_Timer6, WAKEUP_NULL},
{WAKE_SRC_Timer5, WAKEUP_NULL},
{WAKE_SRC_Timer4, WAKEUP_NULL},
{WAKE_SRC_Timer3, WAKEUP_NULL},
{WAKE_SRC_Timer2, WAKEUP_NULL},
{WAKE_SRC_Timer1, WAKEUP_NULL},
{WAKE_SRC_Timer0, WAKEUP_NULL},
{WAKE_SRC_WDG0, WAKEUP_NULL},
{WAKE_SRC_BT_WAKE_HOST, WAKEUP_NULL},
{WAKE_SRC_AP_WAKE, WAKEUP_NULL},
{WAKE_SRC_WIFI_FTSR_MAILBOX, WAKEUP_NP},
{WAKE_SRC_WIFI_FISR_FESR, WAKEUP_NP},
{0xFFFFFFFF, WAKEUP_NULL},
};
github source code
唤醒掩码设置
在睡眠模式下,某些场景仅需唤醒单个 CPU 来执行程序,唤醒掩码模块即用于实现此功能。一般情况下,除了设置唤醒掩码,还需要注册唤醒源中断,以便在唤醒时由特定的 CPU 处理。
通过设置唤醒掩码,可选择仅唤醒某个指定的 CPU。若选择 KM4,需先唤醒 KM0 并由其恢复 KM4 运行。
用户可通过修改 ameba_sleepcfg.c 中的 sleep_wevent_config[] 来选择想要唤醒的目标 CPU。
每个唤醒源的属性可设置为以下值之一:
WAKEUP_KM4:仅唤醒 KM4
WAKEUP_KM0:仅唤醒 KM0
WAKEUP_NULL:禁用该唤醒源
/* 唤醒属性可设置为 WAKEUP_NULL/WAKEUP_LP/WAKEUP_NP/WAKEUP_AP */
WakeEvent_TypeDef sleep_wevent_config[] = {
// Module wakeup
{WAKE_SRC_nFIQOUT1_OR_nIRQOUT1, WAKEUP_NULL},
{WAKE_SRC_nFIQOUT0_OR_nIRQOUT0, WAKEUP_NULL},
{WAKE_SRC_BT_WAKE_HOST, WAKEUP_NULL},
{WAKE_SRC_AON_WAKEPIN, WAKEUP_NULL},
{WAKE_SRC_UART2, WAKEUP_NULL},
{WAKE_SRC_UART1, WAKEUP_NULL},
{WAKE_SRC_UART0, WAKEUP_NULL},
{WAKE_SRC_SPI1, WAKEUP_NULL},
{WAKE_SRC_SPI0, WAKEUP_NULL},
{WAKE_SRC_IPC_AP, WAKEUP_AP}, /* do not change it */
{WAKE_SRC_IPC_NP, WAKEUP_NP}, /* do not change it */
{WAKE_SRC_VADBT_OR_VADPC, WAKEUP_NULL},
{WAKE_SRC_PWR_DOWN, WAKEUP_LP},
{WAKE_SRC_BOR, WAKEUP_NULL},
{WAKE_SRC_ADC, WAKEUP_NULL},
{WAKE_SRC_CTOUCH, WAKEUP_NULL},
{WAKE_SRC_RTC, WAKEUP_NULL},
{WAKE_SRC_GPIOC, WAKEUP_NULL},
{WAKE_SRC_GPIOB, WAKEUP_NULL},
{WAKE_SRC_GPIOA, WAKEUP_NULL},
{WAKE_SRC_UART_LOG, WAKEUP_NULL},
{WAKE_SRC_Timer7, WAKEUP_NULL},
{WAKE_SRC_Timer6, WAKEUP_NP},
{WAKE_SRC_Timer5, WAKEUP_NULL},
{WAKE_SRC_Timer4, WAKEUP_NULL},
{WAKE_SRC_Timer3, WAKEUP_NULL},
{WAKE_SRC_Timer2, WAKEUP_NULL},
{WAKE_SRC_Timer1, WAKEUP_NULL},
{WAKE_SRC_Timer0, WAKEUP_NULL},
{WAKE_SRC_WDG0, WAKEUP_NULL},
{WAKE_SRC_AP_WAKE, WAKEUP_NULL},
{WAKE_SRC_NP_WAKE, WAKEUP_NULL},
{WAKE_SRC_AON_TIM, WAKEUP_NULL},
{WAKE_SRC_WIFI_FTSR_MAILBOX, WAKEUP_LP}, /* Wi-Fi wakeup, do not change it */
{WAKE_SRC_WIFI_FISR_FESR, WAKEUP_LP}, /* Wi-Fi wakeup, do not change it */
{0xFFFFFFFF, WAKEUP_NULL}, /* Table end */
};
AON 唤醒引脚配置
AON 唤醒引脚是支持睡眠唤醒的外设之一。
SoC 提供四个 AON 唤醒引脚(PB21、PB22、PB23 和 PB24),需在 ameba_sleepcfg.c 中的 sleep_wakepin_config[] 中配置。
配置属性可选值如下:
DISABLE_WAKEPIN:禁用唤醒
HIGH_LEVEL_WAKEUP:GPIO 高电平触发唤醒
LOW_LEVEL_WAKEUP:GPIO 低电平触发唤醒
/* can be used by sleep mode & deep sleep mode */
/* config can be set to DISABLE_WAKEPIN/HIGH_LEVEL_WAKEUP/LOW_LEVEL_WAKEUP */
WAKEPIN_TypeDef sleep_wakepin_config[] = {
// wakepin config
{WAKEPIN_0, DISABLE_WAKEPIN}, /* WAKEPIN_0 对应 _PB_21 */
{WAKEPIN_1, DISABLE_WAKEPIN}, /* WAKEPIN_1 对应 _PB_22 */
{WAKEPIN_2, DISABLE_WAKEPIN}, /* WAKEPIN_2 对应 _PB_23 */
{WAKEPIN_3, DISABLE_WAKEPIN}, /* WAKEPIN_3 对应 _PB_24 */
{0xFFFFFFFF, DISABLE_WAKEPIN},
}
Note
PB23和PB24默认用于 LOGUART 的收发。如果需要将其用作深度睡眠唤醒源,请联系 Realtek。活动模式和睡眠模式的引脚通过 pinmap 控制,必要时修改ameba_pinmapcfg.c中的 pmap_func[] 实现模式切换。默认情况下, sleep_wakepin_config[] 中未启用
AON_WAKEPIN_IRQ,需用户手动激活。唤醒掩码不会在
sleep_wakepin_config[]中被设置。如果需要将唤醒引脚用于睡眠模式,设置sleep_wevent_config[]中的WAKE_SRC_AON_WAKEPIN即可。
时钟和电压配置
XTAL、OSC4M 的状态及睡眠模式电压可通过 ameba_sleepcfg.c 中的 ps_config[] 配置,适用于需要在睡眠模式下保持外设时钟的场景。
PSCFG_TypeDef ps_config = {
.km0_tickles_debug = TRUE,/* if open WIFI FW, should close it, or beacon will lost in WOWLAN */
.km0_pll_off = TRUE,
.km0_audio_vad_on = FALSE,
#if defined(CONFIG_CLINTWOOD ) && CONFIG_CLINTWOOD
.km0_config_psram = FALSE, /* if device enter sleep mode or not, false for keep active */
.km0_sleep_withM4 = FALSE,
#else
.km0_config_psram = TRUE, /* if device enter sleep mode or not, false for keep active */
.km0_sleep_withM4 = TRUE,
#endif
.keep_OSC4M_on = FALSE,
.xtal_mode_in_sleep = XTAL_OFF,
.swr_mode_in_sleep = SWR_PFM,
};
Sleep Options Config
使用 UART 或者 LOGUART 作为唤醒源时,需要修改休眠时的电压和时钟源。可配置参数如下:
PSCFG_TypeDef ps_config = {
.keep_OSC4M_on = FALSE, /* Keep OSC4M on or off for sleep */
.xtal_mode_in_sleep = XTAL_OFF, /* Set XTAL mode during sleep mode, see enum xtal_mode_sleep for details */
.sleep_to_08V = FALSE, /* Default sleep to 0.7V, setting this option to TRUE will sleep to 0.8V */
};
参数名 |
含义 |
参数说明 |
|---|---|---|
keep_OSC4M_on |
休眠时 OSC4M 是否开启 |
TRUE:保持开启;FALSE:关闭 |
xtal_mode_in_sleep |
休眠时 XTAL 的工作模式 |
XTAL_OFF:关闭晶振 |
XTAL_LPS_With_40M:低功耗模式维持 40MHz。 |
||
sleep_to_08V |
休眠时 MCU Core 电压 |
FALSE:0.7V(默认);TRUE:0.8V(更高电压保证时钟源稳定) |
配置原则如下:
使用 Raw API 开发时,以下配置原则适用于 UART 及 LOGUART:
时钟选择:休眠前调用
RCC_PeriphClockSource_UART_ROM()选择时钟源若选 OSC4M,需设定
keep_OSC4M_on = TRUE。若选 XTAL,需设定
xtal_mode_in_sleep = XTAL_LPS_With_40M。
电压设置:需设置为
sleep_to_08V = TRUE,保证 OSC4M 或 XTAL 正常工作。
使用 Mbed API 开发时,以下配置原则 仅适用于 UART :
时钟选择:休眠前调用
serial_baud(),根据 UART 波特率和低功耗设置自动决定当波特率小于等于 115200 baud/s 且
.LOW_POWER_RX_ENABLE = ENABLE,自动选择 OSC4M,需设定keep_OSC4M_on = TRUE。如果波特率大于 115200 baud/s 或者
.LOW_POWER_RX_ENABLE = DISABLE,自动选择 XTAL,需设定xtal_mode_in_sleep = XTAL_LPS_With_40M。
UARTCFG_TypeDef uart_config[4] = { /* UART0 */ { .LOW_POWER_RX_ENABLE = DISABLE, /*Enable low power RX*/ }, /* UART1 */ { .LOW_POWER_RX_ENABLE = DISABLE, }, ... };
电压设置:休眠电压需要设置为
sleep_to_08V = TRUE,保证 OSC4M 或 XTAL 正常工作。
Note
休眠时开启 XTAL,功耗将显著增大。
时钟和电压配置
XTAL、OSC4M 的状态及睡眠模式电压可通过 ameba_sleepcfg.c 中的 ps_config[] 配置,适用于需要在睡眠模式下保持外设时钟的场景。
PSCFG_TypeDef ps_config = {
.keep_OSC4M_on = FALSE, /* keep OSC4M on or off for sleep */
.xtal_mode_in_sleep = XTAL_OFF, /* set xtal mode during sleep mode, see enum xtal_mode_sleep for detail */
};
时钟和电压配置
XTAL、OSC4M 的状态及睡眠模式电压可通过 ameba_sleepcfg.c 中的 ps_config[] 配置,适用于需要在睡眠模式下保持外设时钟的场景。
PSCFG_TypeDef ps_config = {
.keep_OSC4M_on = FALSE, /* keep OSC4M on or off for sleep */
.xtal_mode_in_sleep = XTAL_OFF, /* set xtal mode during sleep mode, see enum xtal_mode_sleep for detail */
};
时钟和电压配置
XTAL、OSC4M 的状态及睡眠模式电压可通过 ameba_sleepcfg.c 中的 ps_config[] 配置,适用于需要在睡眠模式下保持外设时钟的场景。
PSCFG_TypeDef ps_config = {
.keep_OSC4M_on = FALSE, /* keep OSC4M on or off for sleep */
.xtal_mode_in_sleep = XTAL_OFF, /* set xtal mode during sleep mode, see enum xtal_mode_sleep for detail */
};
时钟和电压配置
XTAL、OSC4M 的状态及睡眠模式电压可通过 ameba_sleepcfg.c 中的 ps_config[] 配置,适用于需要在睡眠模式下保持外设时钟的场景。
PSCFG_TypeDef ps_config = {
.km0_tickles_debug = TRUE,/* if open WIFI FW, should close it, or beacon will lost in WOWLAN */
.km0_pll_off = TRUE,
.km0_audio_vad_on = FALSE,
#if defined(CONFIG_CLINTWOOD ) && CONFIG_CLINTWOOD
.km0_config_psram = FALSE, /* if device enter sleep mode or not, false for keep active */
.km0_sleep_withM4 = FALSE,
#else
.km0_config_psram = TRUE, /* if device enter sleep mode or not, false for keep active */
.km0_sleep_withM4 = TRUE,
#endif
.keep_OSC4M_on = FALSE,
.xtal_mode_in_sleep = XTAL_OFF,
.swr_mode_in_sleep = SWR_PFM,
};
DeepSleep Wakeup Pin Config
AON Wakepin Configuration
AON wakepin is one of the peripherals that can be set as a wakeup source.
SoC has two AON wakepins (PB30 and PB31), which can be configured in sleep_wakepin_config[] in ameba_sleepcfg.c.
The config attribute can be set to DISABLE_WAKEPIN or HIGH_LEVEL_WAKEUP or LOW_LEVEL_WAKEUP, meaning not wake up, or GPIO level high will wake up, or GPIO level low will wake up respectively.
/* can be used by sleep mode & deep sleep mode */
/* config can be set to DISABLE_WAKEPIN/HIGH_LEVEL_WAKEUP/LOW_LEVEL_WAKEUP */
WAKEPIN_TypeDef sleep_wakepin_config[] = {
// wakepin config
{WAKEPIN_0, DISABLE_WAKEPIN}, /* WAKEPIN_0 corresponding to _PB_30 */
{WAKEPIN_1, DISABLE_WAKEPIN}, /* WAKEPIN_1 corresponding to _PB_31 */
{0xFFFFFFFF, DISABLE_WAKEPIN},
};
Note
By default, AON_WAKEPIN_IRQ will not be enabled in
sleep_wakepin_config[], and users need to enable it by themselves.The wakeup mask will not be set in
sleep_wakepin_config[]. If wakepin is used for sleep mode, WAKE_SRC_AON_WAKEPIN entry needs to be set insleep_wevent_config[].
AON 唤醒引脚配置
AON 唤醒引脚是支持睡眠唤醒的外设之一。
SoC 提供两个 AON 唤醒引脚(PA0 and PA1),需在 ameba_sleepcfg.c 中的 sleep_wakepin_config[] 中配置。
配置属性可选值如下:
DISABLE_WAKEPIN:禁用唤醒
HIGH_LEVEL_WAKEUP:GPIO 高电平触发唤醒
LOW_LEVEL_WAKEUP:GPIO 低电平触发唤醒
/* can be used by sleep mode & deep sleep mode */
/* config can be set to DISABLE_WAKEPIN/HIGH_LEVEL_WAKEUP/LOW_LEVEL_WAKEUP */
WAKEPIN_TypeDef sleep_wakepin_config[] = {
// wakepin config
{WAKEPIN_0, DISABLE_WAKEPIN}, /* WAKEPIN_0 对应 _PA_0 */
{WAKEPIN_1, DISABLE_WAKEPIN}, /* WAKEPIN_1 对应 _PA_1 */
{0xFFFFFFFF, DISABLE_WAKEPIN},
};
Note
默认情况下, sleep_wakepin_config[] 中未启用
AON_WAKEPIN_IRQ,需用户手动激活。唤醒掩码不会在
sleep_wakepin_config[]中被设置。如果需要将唤醒引脚用于睡眠模式,设置sleep_wevent_config[]中的WAKE_SRC_AON_WAKEPIN即可。
AON 唤醒引脚配置
AON 唤醒引脚是支持睡眠唤醒的外设之一。
SoC 提供两个 AON 唤醒引脚(PA0 and PA1),需在 ameba_sleepcfg.c 中的 sleep_wakepin_config[] 中配置。
配置属性可选值如下:
DISABLE_WAKEPIN:禁用唤醒
HIGH_LEVEL_WAKEUP:GPIO 高电平触发唤醒
LOW_LEVEL_WAKEUP:GPIO 低电平触发唤醒
/* can be used by sleep mode & deep sleep mode */
/* config can be set to DISABLE_WAKEPIN/HIGH_LEVEL_WAKEUP/LOW_LEVEL_WAKEUP */
WAKEPIN_TypeDef sleep_wakepin_config[] = {
// wakepin config
{WAKEPIN_0, DISABLE_WAKEPIN}, /* WAKEPIN_0 对应 _PA_0 */
{WAKEPIN_1, DISABLE_WAKEPIN}, /* WAKEPIN_1 对应 _PA_1 */
{0xFFFFFFFF, DISABLE_WAKEPIN},
};
Note
默认情况下, sleep_wakepin_config[] 中未启用
AON_WAKEPIN_IRQ,需用户手动激活。唤醒掩码不会在
sleep_wakepin_config[]中被设置。如果需要将唤醒引脚用于睡眠模式,设置sleep_wevent_config[]中的WAKE_SRC_AON_WAKEPIN即可。
AON 唤醒引脚配置
AON 唤醒引脚是支持睡眠唤醒的外设之一。
SoC 提供两个 AON 唤醒引脚(PA0 and PA1),需在 ameba_sleepcfg.c 中的 sleep_wakepin_config[] 中配置。
配置属性可选值如下:
DISABLE_WAKEPIN:禁用唤醒
HIGH_LEVEL_WAKEUP:GPIO 高电平触发唤醒
LOW_LEVEL_WAKEUP:GPIO 低电平触发唤醒
/* can be used by sleep mode & deep sleep mode */
/* config can be set to DISABLE_WAKEPIN/HIGH_LEVEL_WAKEUP/LOW_LEVEL_WAKEUP */
WAKEPIN_TypeDef sleep_wakepin_config[] = {
// wakepin config
{WAKEPIN_0, DISABLE_WAKEPIN}, /* WAKEPIN_0 对应 _PA_0 */
{WAKEPIN_1, DISABLE_WAKEPIN}, /* WAKEPIN_1 对应 _PA_1 */
{0xFFFFFFFF, DISABLE_WAKEPIN},
};
Note
默认情况下, sleep_wakepin_config[] 中未启用
AON_WAKEPIN_IRQ,需用户手动激活。唤醒掩码不会在
sleep_wakepin_config[]中被设置。如果需要将唤醒引脚用于睡眠模式,设置sleep_wevent_config[]中的WAKE_SRC_AON_WAKEPIN即可。
AON 唤醒引脚配置
AON 唤醒引脚是支持睡眠唤醒的外设之一。
SoC 提供四个 AON 唤醒引脚(PB21、PB22、PB23 和 PB24),需在 ameba_sleepcfg.c 中的 sleep_wakepin_config[] 中配置。
配置属性可选值如下:
DISABLE_WAKEPIN:禁用唤醒
HIGH_LEVEL_WAKEUP:GPIO 高电平触发唤醒
LOW_LEVEL_WAKEUP:GPIO 低电平触发唤醒
/* can be used by sleep mode & deep sleep mode */
/* config can be set to DISABLE_WAKEPIN/HIGH_LEVEL_WAKEUP/LOW_LEVEL_WAKEUP */
WAKEPIN_TypeDef sleep_wakepin_config[] = {
// wakepin config
{WAKEPIN_0, DISABLE_WAKEPIN}, /* WAKEPIN_0 对应 _PB_21 */
{WAKEPIN_1, DISABLE_WAKEPIN}, /* WAKEPIN_1 对应 _PB_22 */
{WAKEPIN_2, DISABLE_WAKEPIN}, /* WAKEPIN_2 对应 _PB_23 */
{WAKEPIN_3, DISABLE_WAKEPIN}, /* WAKEPIN_3 对应 _PB_24 */
{0xFFFFFFFF, DISABLE_WAKEPIN},
}
Note
PB23和PB24默认用于 LOGUART 的收发。如果需要将其用作深度睡眠唤醒源,请联系 Realtek。活动模式和睡眠模式的引脚通过 pinmap 控制,必要时修改ameba_pinmapcfg.c中的 pmap_func[] 实现模式切换。默认情况下, sleep_wakepin_config[] 中未启用
AON_WAKEPIN_IRQ,需用户手动激活。唤醒掩码不会在
sleep_wakepin_config[]中被设置。如果需要将唤醒引脚用于睡眠模式,设置sleep_wevent_config[]中的WAKE_SRC_AON_WAKEPIN即可。