打印
[研电赛技术支持]

GD32L233低功耗串口唤醒

[复制链接]
80|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

使用特权

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

本版积分规则

1897

主题

15568

帖子

11

粉丝