从 RP2040 看 MCU 上电:上电状态机如何按序唤醒硬件模块

📅 2026/7/29 11:02:44
从 RP2040 看 MCU 上电:上电状态机如何按序唤醒硬件模块
上电状态机上电状态机可以理解为芯片上电 / 复位后的自动启动向导 它是一个纯硬件的自动程序负责按固定顺序 “唤醒” 芯片里的各个硬件模块比如时钟、存储、处理器。就像电脑开机时要先启动电源、再启动主板、硬盘、显卡最后启动 CPU芯片的硬件也得按顺序启动才不会出问题上电状态机就是干这个 “按序唤醒” 活儿的全程自动不用软件插手。开机状态机按特定的顺序从各种硬件块中去除重置 Reset 状态。每个在上电状态机中的外围设备由由内部 rst_n/复位信号控制并产生内部 rst_done 高电平有效复位完成信号。上电状态机对每个外设取消 reset 复位等待该外设产生 rst_done 信号后对下一个外设取消 reset 复位。当芯片的复位子系统确认数字核心电源DVDD供电稳定且 RUN 高电平时上电状态机自身退出复位。上电状态机通过 rst_n_run 输出退出许多其他块。这通常用于需要在初始化启动时重启但是不能在上电状态机重启时重置的应用即需要持续运行的模块例如环形振荡器和晶体振荡器中的逻辑通电在上电状态机重启期间必须继续运行的时钟分频器clk_ref 和 clk_sys看门狗定时器这些模块在状态机重启时不会被重置保证基础功能一直工作。上电状态机重启顺序如下图 2.36 芯片上电状态机启动流程框图我们可以看到它的唤醒顺序是从 “最基础的硬件” 到 “核心部件”流程如下先启动​环形振荡器​提供最基础的初始时钟相当于先有 “心跳”再启动​晶体振荡器​提供更精准的时钟替换基础时钟接着启动​时钟发生器​把时钟分配给各个模块然后是​复位控制器​管理后续模块的复位状态之后启动​总线结构​各个模块之间传输数据的 “通道”再唤醒​ROM/SRAM​存储程序和数据的地方然后是​XIP​外部 Flash 的访问功能让芯片能读外部存储接着是​芯片级复位和电压调节器寄存器​管理电源和复位的配置最后唤醒​处理器核心​CPU芯片的 “大脑”。上电状态机是一个完全自动化的硬件部件。它不需要来自用户的输入就可以工作。有一些寄存器控件可用于覆盖和查看开机状态机的状态。这允许在必要时通过软件重置开机状态机中的硬件块。上电状态机的 PSM 寄存器的基本地址为 0x40010000。图 2.37 RP2040 芯片时钟系统架构图