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 专用,不可修改。

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(更高电压保证时钟源稳定)

配置原则如下:

  1. 使用 Raw API 开发时,以下配置原则适用于 UART 及 LOGUART:

    1. 时钟选择:休眠前调用 RCC_PeriphClockSource_UART_ROM() 选择时钟源

      1. 若选 OSC4M,需设定 keep_OSC4M_on = TRUE 。

      2. 若选 XTAL,需设定 xtal_mode_in_sleep = XTAL_LPS_With_40M 。

    2. 电压设置:需设置为 sleep_to_08V = TRUE ,保证 OSC4M 或 XTAL 正常工作。

  2. 使用 Mbed API 开发时,以下配置原则 仅适用于 UART :

    1. 时钟选择:休眠前调用 serial_baud(),根据 UART 波特率和低功耗设置自动决定

      1. 当波特率小于等于 115200 baud/s 且 .LOW_POWER_RX_ENABLE = ENABLE ,自动选择 OSC4M,需设定 keep_OSC4M_on = TRUE 。

      2. 如果波特率大于 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,
       },
       ...
    };
    
    1. 电压设置:休眠电压需要设置为 sleep_to_08V = TRUE ,保证 OSC4M 或 XTAL 正常工作。

Note

休眠时开启 XTAL,功耗将显著增大。

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 in sleep_wevent_config[].