[STM32G0] STM32G030低功耗Stop模式唤醒后的时钟恢复延时问题

[复制链接]
185|24
onlycook 发表于 2026-8-20 11:30 | 显示全部楼层
你的“空跑NOP”方案其实是在等时钟稳定,但NOP的数量是固定的,没法自适应。更好的做法是轮询RCC_FLAG_HSI48RDY或RCC_FLAG_PLLRDY标志位,等标志置位后再做ADC,这样能保证最短等待时间。
powerantone 发表于 2026-8-20 13:15 | 显示全部楼层
如果使用了外部晶振(HSE)作为ADC时钟源,唤醒后HSE起振时间比HSI长得多(几百微秒很正常)。考虑把ADC时钟源固定为HSI16或独立的14MHz振荡器,不和系统时钟一起切换,这样ADC就不受系统时钟切换延迟影响。
probedog 发表于 2026-8-20 15:35 | 显示全部楼层
功耗和唤醒时间在G0系列上是个跷跷板:Stop 0模式用主稳压器,唤醒快(2µs)但功耗高(100µA);Stop 1用低功耗稳压器,唤醒慢(5µs)但功耗低(7.3µA)。如果你对功耗不是特别极致,改用Stop 0能让唤醒后的时钟恢复时间最短。
solty 发表于 2026-8-20 19:56 | 显示全部楼层
唤醒后执行的第一条用户指令之前,硬件已经自动完成了Flash的唤醒和SRAM的恢复。你感受到的“不稳定期”实际上是从用户指令开始执行,到你手动切换时钟并等待新时钟稳定这段时间,这部分完全由软件控制,优化空间就在这里
spicy 发表于 2026-8-20 21:10 | 显示全部楼层
G0系列的ADC转换时间最快可以达到0.4微秒(12位分辨率)。如果你的ADC采样时间设置得特别短(比如1.5个周期),而采样电路还没完全建立,误差会被放大。尝试把ADC采样时间(ADC_SAMPLETIME)设为最长的周期数(如160.5个周期),看数据是否稳定,排除采样保持电容充电不足的因素。
stormwind123 发表于 2026-8-20 22:57 | 显示全部楼层
可以考虑把ADC的校准因子在进入Stop前保存下来,唤醒后直接写入,跳过一次完整的ADC校准流程。虽然这不直接解决时钟恢复延时,但能减少ADC就绪的总时间。
香水城 发表于 2026-8-18 16:19 | 显示全部楼层
STM32G030么有内部HSI48,只能切换到HSE。

HSE从启动都稳定下来,是ms级别的,具体多长时间不好说几个ms甚至10几个ms都不好说,

不同的参数及不同厂家的晶振的稳定时间相差比较悬殊。

但代码里可以检查HSE稳定标志后再做后续操作,即查询HSERDY@RCC_CR.
xixi2017 发表于 2026-8-19 12:18 | 显示全部楼层
STM32G030 Stop 模式下:HSE、PLL 默认关闭;HSI16 也会关闭(Stop0 可配置外设请求唤醒时临时开启 HSI16),仅 LSI / LSE 可以保留运行;SRAM、寄存器全部保持,不是复位。
时光迷宫 发表于 2026-8-19 12:20 | 显示全部楼层
HSI直接采样,唤醒后轮询RDY标志,ADC读数稳定后再用,省电还省时。
风之呢喃 发表于 2026-8-19 22:05 | 显示全部楼层
直接用HSI48,省去晶振起振时间,ADC采样前轮询HSI48就绪标志位。
幻境之眼 发表于 2026-8-20 12:36 | 显示全部楼层
直接读PLL就绪位,稳定后再开ADC,比延时更省电,也适应不同工况。
深渊之海 发表于 2026-8-21 14:31 | 显示全部楼层
直接用HSI作为ADC时钟,省去切换时钟的延时,测试下来效果不错。
狄克爱老虎油 发表于 2026-8-22 17:36 | 显示全部楼层
用示波器测量HSI48或HSE的上升沿,根据波形调整RCC的HSI48/HSERDY或HSEBYPASS配置,看是否能进一步压缩不稳定窗口。
AloneKaven 发表于 2026-8-23 13:24 | 显示全部楼层
考虑用HSI48,如果HSE不适用,HSI48唤醒后稳定快,ADC先采样其他不关键数据,稳定后再采集关键数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0