UART 和 LOGUART
对于需要特定时钟设置的外设,例如 UART 和 LOGUART,其设置流程在以下章节中进行了描述。
初始化 UART/LOGUART 并使能其中断。
设定唤醒源:在
sleep_wevent_config[]中设置唤醒源 (UART0/UART1/UART2_BT/UART_LOG) 要唤醒的 CPU( WAKEUP_KM4 或 WAKEUP_KM0),并确保中断注册在要唤醒的 CPU 上。选择时钟源:
XTAL: 在
ps_config[]中将 xtal_mode_in_sleep 设置为 XTAL_Normal, 将 keep_OSC4M_on 设置为 TRUE。OSC2M: 在
ps_config[]中将 keep_OSC4M_on 设置为 TRUE。
设置工作电压:在
ps_config[]中将sleep_to_08V设定为 TRUE 。通过释放 KM4 上的睡眠锁进入睡眠模式(PMU_OS 需要被释放,因为系统启动时默认已获取)。
唤醒后清除 UART/LOGUART 中断。
备注
当使用 UART 作为唤醒源时,有以下限制:
Rx 时钟源只能为 OSC2M,且睡眠期间不可关闭 OSC4M。当波特率大于 115200 时,不建议使用 UART 作为唤醒源。
睡前需要调用 API
RCC_PeriphClockSource_UART(UARTx_DEV, UART_RX_CLK_OSC_LP)将时钟切换到 OSC2M。醒后需要更高波特率,可通过 API
RCC_PeriphClockSource_UART(UARTx_DEV, UART_RX_CLK_XTAL_40M)切换为 XTAL40M Rx 时钟。
用于唤醒的命令中超出 FIFO 深度(64 字节)的部分会丢失。
当使用 LOGUART 作为唤醒源时,有以下限制:
若 Rx 时钟源为 OSC2M,睡眠期间不可关闭 OSC4M。
睡前需要调用 API
RCC_PeriphClockSource_LOGUART(LOGUART_CLK_OSC_LP)将时钟切换到 OSC2M。醒后需要更高波特率,可通过 API
RCC_PeriphClockSource_LOGUART(LOGUART_CLK_XTAL_40M)切换为 XTAL40M Rx 时钟。
若 Rx 时钟源为 XTAL40M,睡眠期间不可关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(16 字节)的部分会丢失。
对于需要特定时钟设置的外设,如 UART 和 LOGUART,其设置流程在以下章节中进行描述。
初始化 UART/LOGUART 并使能其中断。
设定唤醒源:在
sleep_wevent_config[]中设置唤醒源 (UART0/UART1/UART2/UART3/UART_LOG) 要唤醒的 CPU( WAKEUP_AP 或 WAKEUP_NP),并确保中断注册在要唤醒的 CPU 上。设定时钟源:在
ps_config[]中将 xtal_mode_in_sleep 设置为 XTAL_Normal。通过释放 KM4 上的睡眠锁进入睡眠模式(PMU_OS 需要被释放,因为系统启动时默认已获取)。
唤醒时清除 UART/LOGUART 中断。
备注
当使用 UART 作为唤醒源时,存在以下限制:
Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(64 字节)的部分将会丢失。
当使用 LOGUART 作为唤醒源时,存在以下限制:
Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(16 字节)的部分将会丢失。
对于需要特定时钟设置的外设,如 UART 和 LOGUART,其设置流程在以下章节中进行描述。
初始化 UART/LOGUART 并使能其中断。
设定唤醒源:在
sleep_wevent_config[]中设置唤醒源 (UART0/UART1/UART2/UART3/UART_LOG) 要唤醒的 CPU( WAKEUP_AP 或 WAKEUP_NP),并确保中断注册在要唤醒的 CPU 上。设定时钟源:在
ps_config[]中将 xtal_mode_in_sleep 设置为 XTAL_Normal。通过释放 KM4 上的睡眠锁进入睡眠模式(PMU_OS 需要被释放,因为系统启动时默认已获取)。
唤醒时清除 UART/LOGUART 中断。
备注
当使用 UART 作为唤醒源时,存在以下限制:
Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(64 字节)的部分将会丢失。
当使用 LOGUART 作为唤醒源时,存在以下限制:
Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(16 字节)的部分将会丢失。
对于需要特定时钟设置的外设,如 UART 和 LOGUART,其设置流程在以下章节中进行描述。
初始化 UART/LOGUART 并使能其中断。
设定唤醒源:在
sleep_wevent_config[]中设置唤醒源 (UART0/UART1/UART2/UART3/UART_LOG) 要唤醒的 CPU( WAKEUP_AP 或 WAKEUP_NP),并确保中断注册在要唤醒的 CPU 上。设定时钟源:在
ps_config[]中将 xtal_mode_in_sleep 设置为 XTAL_Normal。通过释放 KM4 上的睡眠锁进入睡眠模式(PMU_OS 需要被释放,因为系统启动时默认已获取)。
唤醒时清除 UART/LOGUART 中断。
备注
当使用 UART 作为唤醒源时,存在以下限制:
Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(64 字节)的部分将会丢失。
当使用 LOGUART 作为唤醒源时,存在以下限制:
Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(16 字节)的部分将会丢失。
对于需要特定时钟设置的外设,如 UART 和 LOGUART,其设置流程在以下章节中进行描述。
初始化 UART/LOGUART 并使能其中断。
设定唤醒源:在
sleep_wevent_config[]中设置唤醒源 (UART0/UART1/UART2/UART3/UART_LOG) 要唤醒的 CPU( WAKEUP_AP 或 WAKEUP_NP),并确保中断注册在要唤醒的 CPU 上。设定时钟源:在
ps_config[]中将 xtal_mode_in_sleep 设置为 XTAL_Normal。通过释放 KM4 上的睡眠锁进入睡眠模式(PMU_OS 需要被释放,因为系统启动时默认已获取)。
唤醒时清除 UART/LOGUART 中断。
备注
当使用 UART 作为唤醒源时,存在以下限制:
Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(64 字节)的部分将会丢失。
当使用 LOGUART 作为唤醒源时,存在以下限制:
Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
用于唤醒的命令中超出 FIFO 深度(16 字节)的部分将会丢失。
对于需要特定时钟设置的外设,如 UART 和 LOGUART,其设置流程在以下章节中进行描述。
初始化 UART/LOGUART 并使能其中断。
设定唤醒源:在
sleep_wevent_config[]中设置相关唤醒源(UART0/UART1/UART2/UART_LOG)要唤醒的 CPU(WAKEUP_AP/WAKEUP_NP/WAKEUP_LP),并确保中断注册在对应的 CPU 上。选择时钟源:
XTAL: 在
ps_config[]中将 xtal_mode_in_sleep 设置为 XTAL_Normal, 将 keep_OSC4M_on 设置为 TRUE。OSC2M: 在
ps_config[]中将 keep_OSC4M_on 设置为 TRUE。
通过释放 KM4 上的睡眠锁进入睡眠模式(PMU_OS 需要被释放,因为系统启动时默认已获取)。
唤醒时清除 UART/LOGUART 中断。
备注
当使用 UART 作为唤醒源时,存在以下限制:
如果 Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
如果 Rx 时钟源为 OSC2M,睡眠期间不要关闭 OSC4M。
睡前需要调用 API
RCC_PeriphClockSource_UART(UARTx_DEV, UART_RX_CLK_OSC_LP)将时钟切换到 OSC2M。醒后需要更高波特率,可通过 API
RCC_PeriphClockSource_UART(UARTx_DEV, UART_RX_CLK_XTAL_40M)切换为 XTAL40M Rx 时钟。
用于唤醒的命令中超出 FIFO 深度(64 字节)的部分将会丢失。
当使用 LOGUART 作为唤醒源时,存在以下限制:
如果 Rx 时钟源为 XTAL40M,睡眠期间不要关闭 XTAL。
如果 Rx 时钟源为 OSC2M,睡眠期间不要关闭 OSC4M。
睡前需要调用 API
RCC_PeriphClockSource_LOGUART(UARTLOG_CLK_OSC_LP)将时钟切换到 OSC2M。醒后需要更高波特率,可通过 API
RCC_PeriphClockSource_LOGUART(UARTLOG_CLK_XTAL_40M)切换为 XTAL40M Rx 时钟。
用于唤醒的命令中超出 FIFO 深度(16 字节)的部分将会丢失。