打印
[研电赛技术支持]

GD32L233低功耗串口唤醒

[复制链接]
1467|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-11-6 16:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
问题:参考官方的示例代码串口唤醒deep-sleep程序,串口接收后唤醒不了MCU。



疑问点,MCU进入Deep-sleep模式后,所有时钟是禁止关闭的,串口模块RX接受数据判断,肯定是需要时钟才能运行,它是如何唤醒的。

官方示例程序有一个地方可能会让人误导,或者说会让人理解困难,进入深度睡眠前,会设置一下串口的时钟源为内部IRC16M时钟。



实际本质上设置串口时钟为内部时钟,并不是说在deep-sleep时,串口模块是由IRC16M来提供时钟,这个设置是为了唤醒后做准备的,因为唤醒后系统默认的时钟源是IRC16M。

深度睡眠介绍中写得比较清楚,在该模式下所有时钟都禁用,包括内部时钟IRC16M。所以从深度睡眠中唤醒,实质上就是IO口电平唤醒。串口模块没有办法接受完一字节数据才唤醒,因为它没有时钟。所以在串口唤醒配置中,只能选择串口开始位电平唤醒。



字在usart_wakeup_mode_config函数中的第二个输入形参,只能选择USART_WUM_STARTB,虽然标准库中,有其他选项,但是对于Deep-sleep模式只能选开始位唤醒。当你不是进入deep-sleep,而是sleep模式时,串口接收唤醒才能使用,因为sleep模式没有关对应时钟。



把串口唤醒源从接收数据唤醒改为串口开始位唤醒,问题得以解决。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/miaozheChen/article/details/142315377

使用特权

评论回复
沙发
benjaminka| | 2024-11-8 08:45 | 只看该作者
在深度睡眠模式下,GD32L233系列MCU的电流降至极低水平(如2uA),以最大限度地节省电能。
在此模式下,大部分内部时钟和外设都被禁用,以降低功耗。

使用特权

评论回复
板凳
tabmone| | 2024-11-8 12:10 | 只看该作者
在 GD32L233 中,可以通过设置中断优先级寄存器来确定串口唤醒中断的优先级。确保将串口唤醒中断的优先级设置为适当的值,以便在需要时能够及时响应唤醒事件。

使用特权

评论回复
地板
maqianqu| | 2024-11-8 13:21 | 只看该作者
在进入深度睡眠模式前,需要配置串口模块以支持唤醒功能。
通常,这包括设置串口时钟源、波特率、数据位、停止位和校验位等参数。

使用特权

评论回复
5
1988020566| | 2024-11-8 15:08 | 只看该作者
虽然深度睡眠模式下所有时钟被禁用,但可以通过IO口电平变化来唤醒MCU。对于串口唤醒,实际上是通过检测串口开始位的电平变化来实现的。在usart_wakeup_mode_config函数中,第二个输入形参只能选择USART_WUM_STARTB,即使用串口开始位唤醒。

使用特权

评论回复
6
i1mcu| | 2024-11-8 20:40 | 只看该作者
配置GD32L233进入低功耗模式,并启用串口唤醒功能。

使用特权

评论回复
7
mnynt121| | 2024-11-8 22:54 | 只看该作者
在进入深度睡眠前,配置串口的时钟源为内部IRC16M时钟。这实际上是为了唤醒后做准备,因为唤醒后系统默认的时钟源是IRC16M。

使用特权

评论回复
8
belindagraham| | 2024-11-9 16:52 | 只看该作者
当MCU被串口唤醒后,通常会触发一个中断。在中断服务程序中,可以编写相应的代码来处理唤醒后的任务。

使用特权

评论回复
9
benjaminka| | 2024-11-10 10:40 | 只看该作者
在进入低功耗模式之前,需要根据具体的应用需求,对芯片的其他外设和功能进行适当的配置和关闭,以进一步降低功耗。

使用特权

评论回复
10
modesty3jonah| | 2024-11-10 16:03 | 只看该作者
GD32L233是一款基于ARM Cortex-M4内核的低功耗微控制器,具有多种低功耗模式。在低功耗模式下,可以通过串口唤醒功能来唤醒MCU

使用特权

评论回复
11
janewood| | 2024-11-10 18:04 | 只看该作者
GD32L233系列MCU支持多种唤醒源,包括低功耗定时器(Low power Timer)、低功耗UART(Low power UART)、RTC(实时时钟)、LCD以及标准I2C、USART等。

使用特权

评论回复
12
uytyu| | 2024-11-10 22:22 | 只看该作者
当外部事件触发这些唤醒源时,MCU将从深度睡眠模式中唤醒,并恢复内部时钟和外设的正常工作。

使用特权

评论回复
13
mnynt121| | 2024-11-13 09:44 | 只看该作者
在进入低功耗模式之前,需要使能LPUART的唤醒功能。这通常涉及到设置MCU的电源管理寄存器中的相关位。

使用特权

评论回复
14
xiaoyaodz| | 2024-11-13 12:33 | 只看该作者
首先需要配置系统时钟和串口时钟。确保在进入低功耗模式之前,串口时钟已经正确配置并保持开启状态。通常可以选择使用内部高速时钟或外部时钟源作为串口时钟,并根据需要设置相应的分频系数,以获得合适的串口通信波特率。

使用特权

评论回复
15
cashrwood| | 2024-11-13 15:45 | 只看该作者
需要注意的是,在深度睡眠模式下,串口模块无法接收完整的数据包进行唤醒。因此,通常选择串口开始位电平作为唤醒条件。

使用特权

评论回复
16
kmzuaz| | 2024-11-13 21:43 | 只看该作者
在唤醒后,MCU需要恢复内部时钟和外设的正常工作。这通常包括重新启用被禁用的时钟和外设,并配置它们的工作参数。

使用特权

评论回复
17
loutin| | 2024-11-13 22:27 | 只看该作者
将MCU配置为深度睡眠模式。在深度睡眠模式下,除了LPUART等特定外设外,MCU的其他部分都将停止工作,以达到最低的功耗

使用特权

评论回复
18
belindagraham| | 2024-11-17 15:54 | 只看该作者
GD32L233系列MCU基于Arm Cortex-M23内核,具有多种低功耗模式,包括深度睡眠模式(Deep-sleep)。在深度睡眠模式下,所有时钟都被禁用,以降低功耗。

使用特权

评论回复
19
youtome| | 2024-11-17 17:57 | 只看该作者
LPUART的中断信号将使MCU从深度睡眠模式中唤醒,恢复正常的运行状态。唤醒后,MCU可以处理LPUART接收到的数据,并继续执行其他任务。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2086

主题

16074

帖子

15

粉丝