本文档描述在 STM32MP1 系列 MPU 上配置 DDR 子系统(DDRSS)所需的流程和步骤。
通过设定 DDR 控制器(DDRCTRL)、PHY 接口(DDRPHYC)和 SDRAM 模式寄存器的多个参数和设置完成 DDRSS 配置。
根据 DDR 类型、DDR 大小、DRAM 拓扑、运行时间频率和 SDRAM 器件数据手册参数确定这些参数。所有这些参数必须在初始化序列期间设定。
STM32CubeMX DDR 测试套件使用直观的面板和菜单隐藏了与确定正确参数和初始化启动相关的复杂性。为了快速设置要运行的 DDRSS,用户只需提供很少几个输入即可完成配置。可以使用一些高级用户模式和特殊功能(当它们对于应用
而言十分重要时)。
在系统启动阶段,为了优化时序裕量,支持多种 PHY 调谐。可以使用 STM32CubeMX 启动这些调谐。PHY 调谐结果可以保存并在后续冷复位时恢复。
在启动阶段,用户可以运行大量测试套件。这些测试可以使用 STM32CubeMX 启动,并用于确认 DDR 配置的稳健性。
本文档适用于 STM32MP1 系列基于 Arm®的 MPU。
DDR 子系统初始化和配置
DDR 子系统包括 DDRCTRL 和 DDRPHYC。
DDRCTRL 支持在正常操作期间通过命令和刷新调度进行 DDR 命令调度。
DDRPHYC 是一种 DDR PHY 接口,具有连接 DDRCTL 的 DFI 接口[7]和字节通道架构,适合连接频率不超过 533MHz 的 DDR3/3L 和 LPDDR2/3。
DDRPHYC 完全支持具有多个 PHY 调谐选项(内置)的 DDR 初始化。DDRPYC 包含 BIST 引擎,用于支持软件驱动的调谐。
DDRSS 和 SDRAM 初始化
器件根据 SDRAM 启动序列对电源、时钟和复位进行内部排序。
PHY 初始化序列由 DDRPHYC 物理实用模块(PUB)控制。这一基于 PUB 的初始化序列在
DDRPHYC 从复位状态释放后启动,并根据 DDRPHYC.PIR 寄存器进行排序。
初始化序列包括以下步骤:
- DDRCTRL 和 DDRPHYC 初始化包括内部时序模块(ITM)复位以及 DLL 复位和锁定
- DDRPHYC I/O 初始校准(ZCAL),与 DLL 锁定同时启动
- 通过模式寄存器写入和校准命令执行 SDRAM 初始化
- 内置 DQS 门控训练(DQSTRN)
DDRCTRL 配置
大多数 DDRCTRL 寄存器是静态的,并在 DDRCTRL 从复位状态释放和 AXI 端口使能前加载。这是在 DDR 软件驱动器的支持下实现的。
在 DDRPHYC 和 DDCTRL 完成初始化后,DDR 子系统就绪,使能 AXI 端口是最后一个步骤。
通过从 STM32CubeMX DDR 面板选择的菜单/选项提供的极少信息确定 DDRCTRL 和 DDRPHYC 寄存器的配置。
然后,DDRSS 配置被保存并恢复到 DDRCTRL 和 DDRPHYC 寄存器,用于后续的复位和正常操作。