跳转至

时钟与复位

1. 时钟系统

1.1 时钟树架构

                    ┌─────────────┐
  CLK_IN (25MHz) ──►│    PLL      │──► CLK_CPU (500MHz)
                    └─────────────┘──► CLK_AXI (500MHz)
                                    ┌─────────────┐
                                    │  分频器 /4  │──► CLK_APB (125MHz)
                                    └─────────────┘
                                    ┌─────────────┐
                                    │  分频器 /N  │──► CLK_UART (115.2kHz)
                                    └─────────────┘

1.2 时钟域

时钟域 时钟 频率 包含模块
CPU 域 clk_cpu 500MHz CPU Core, L1/L2 Cache
AXI 域 clk_axi 500MHz AXI Interconnect, DDR Controller
APB 域 clk_apb 125MHz UART, GPIO, Timer, SPI, I2C
低速域 clk_slow 32kHz Watchdog, RTC

1.3 时钟门控

每个模块支持独立时钟门控:

模块 门控信号 描述
CPU cg_cpu CPU 时钟门控
Cache cg_cache 缓存时钟门控
AXI cg_axi AXI 总线时钟门控
UART cg_uart UART 时钟门控
GPIO cg_gpio GPIO 时钟门控
Timer cg_timer 定时器时钟门控

2. 复位系统

2.1 复位类型

类型 信号 描述
全局复位 rst_n 系统上电复位,低有效
模块复位 mod_rst_n 单个模块复位
软件复位 sw_rst 通过寄存器触发
看门狗复位 wdt_rst 看门狗超时复位

2.2 复位序列

时间轴:
  ├─ rst_n asserted (外部复位)
  ├─ PLL 启动
  ├─ PLL 锁定 (PLL_LOCK = 1)
  ├─ 释放全局复位 (rst_n = 1)
  ├─ CPU 从 0x0000_0000 开始执行
  ├─ Boot ROM 初始化
  └─ 系统正常运行

2.3 复位域

复位域 复位信号 包含模块
全局域 rst_n 整个芯片
CPU 域 cpu_rst_n CPU Core, Cache
外设域 peri_rst_n UART, GPIO, Timer
低速域 slow_rst_n Watchdog, RTC

3. 电源管理

3.1 电源模式

模式 描述 功耗
活跃模式 全速运行 100mW
空闲模式 时钟门控 10mW
睡眠模式 关闭部分时钟 1mW
深度睡眠 仅 RTC 运行 0.1mW

3.2 电源切换

stateDiagram-v2
    [*] --> 活跃模式
    活跃模式 --> 空闲模式: 无任务
    空闲模式 --> 活跃模式: 中断唤醒
    空闲模式 --> 睡眠模式: 长时间空闲
    睡眠模式 --> 活跃模式: 中断唤醒
    睡眠模式 --> 深度睡眠: 超时
    深度睡眠 --> 活跃模式: RTC 唤醒

4. 时钟/复位寄存器

4.1 时钟控制寄存器

基地址: 0x2000_F000

偏移 名称 读写 描述
0x00 CLK_CTRL R/W 时钟控制
0x04 PLL_CTRL R/W PLL 控制
0x08 PLL_STATUS R PLL 状态
0x0C CLK_GATE R/W 时钟门控
0x10 CLK_DIV R/W 分频配置

4.2 复位控制寄存器

偏移 名称 读写 描述
0x00 RST_CTRL R/W 复位控制
0x04 RST_STATUS R 复位状态
0x08 RST_REQ R/W 复位请求