停止模式下USART为什么可以唤醒MCU?

在MCU的停止模式下,USART之类的外设时钟是关闭的,但是USART章节有描述到在停止模式下可以用USART来对MCU进行唤醒:

大家是否会好奇在外设的时钟被关闭的情况下,USART怎么能通过接收中断或者唤醒事件对MCU进行唤醒的呢?

其实除了USART可以做到外,I2C同样也可以做到相同的唤醒功能。

为什么这两个外设可以呢?

它们有一个相同点就是支持双时钟域,简单来说,假如外设挂在APB总线上,一般它们的时钟就直接来自于总线时钟,但是I2C和USART,它们的时钟源选择可以来自于HSI,这就给它们提供了从停止模式唤醒的一个条件,但是即使是HSI作为时钟源,在stop mode下,HSI也是关闭的状态,好像也无法唤醒?

当I2C或者USART时钟源选择为HSI的时候,且配置了它们在Stop mode下唤醒MCU的功能,此时进入stop mode后,HSI的时钟关闭,当有信号进入外设时,HSI会先一步被唤醒,供给I2C或USART,使得两个外设开始工作,当它们接收到对应的信息后,确认是否是可以唤醒CPU的事件,例如I2C接收到的地址是否匹配,若不匹配,则不会生成对应的唤醒事件用于唤醒MCU,且HSI再次关闭,如果信息匹配,则会生成唤醒事件用于唤醒CPU。大致的时序图如下:

但是也不是所有的时钟源可以选择为HSI的外设都可以在stop mode下对MCU进行唤醒,具体的还得需要去啃芯片手册,只有设计时做了对应唤醒功能的外设才可以。

相关推荐
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11015 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元5 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133975 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315205 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
Alaso_shuang5 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
脚后跟5 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程
2501_918126915 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
z20348315205 天前
STM32F103系列单片机定时器介绍(一)
stm32·单片机
星马梦缘5 天前
驱动层开发——蜂鸣器驱动
stm32·单片机·嵌入式硬件·hal·驱动