PSRAM 伪静态随机存储器 电路设计指南
Pseudo Static RAM · SPI / Quad / OPI x8 DDR · HyperBus HyperRAM · 并行 ADMUX CellularRAM · 自刷新与延迟设计 | 编制日期 2026-09-23 | 版本号 Rev 1.0
0 · 文档说明
适用范围
- 本文针对伪静态随机存储器(PSRAM)的硬件电路设计,覆盖 4 Mb ~ 512 Mb 常见容量段,接口含 SPI / Quad SPI、OPI x8 DDR、HyperBus(HyperRAM)、并行 ADMUX(CellularRAM 类)。
- 适用对象:MCU / SoC / FPGA 的外扩 RAM,用于 XIP 代码执行、GUI 帧缓存、音频缓冲、AI 模型权重缓存、协议栈与网络缓冲、日志环形缓冲等。
- 内容包含:选型对比、封装引脚、电气参数、四类接口的协议与命令、延迟与刷新机制、电源与低功耗、典型电路(内联原理图)、200 MHz DDR 级 Layout、SI 与端接、可靠性、生产、排查与检查清单。
- 不包含:控制器驱动实现、Cache 一致性策略、内存分配算法。所有寄存器位定义、命令字与时序数值一律以目标型号 datasheet 为准,本文给出的是工程范围值与设计方法。
本系列其他文档
| 文档 | 器件类型 | 关注重点 |
|---|---|---|
| SPI NOR 电路设计指南 | 串行 NOR Flash | Quad/QPI 提速、dummy cycles、XIP、DPD 低功耗 |
| SPI NAND 电路设计指南 | 串行 NAND Flash | 页/块管理、片内 ECC、坏块表、主机 FTL |
| 并行NAND (PPI NAND) 电路设计指南 | 8/16 位并行 NAND | 宽总线时序、ECC 引擎、40+ 引脚 Layout |
| eMMC 电路设计指南 | eMMC 5.0/5.1 | HS200/HS400、1.8 V VCCQ、DS 选通与等长 |
| SD NAND 电路设计指南 | 贴片式 SD NAND | SPI/SDIO 双模式、无休眠指令、VCC 负载开关断电 |
| NAND MCP 电路设计指南 | 多芯片合封存储 | 多 die 与多 CE、双电源轨、HDI 扇出 |
| 并行NOR (PPI NOR) 电路设计指南 | 并行 NOR Flash | 异步读时序、XIP、等待周期、总线扩展 |
| PSRAM 电路设计指南 本文 | 伪静态 RAM | OPI/HyperBus、刷新与延迟周期、XIP 与帧缓存 |
| DDR2 电路设计指南 | DDR2 SDRAM | SSTL_18、T 分支拓扑、VTT 端接、ODT |
| DDR3 电路设计指南 | DDR3 / DDR3L | Fly-by 拓扑、write leveling、动态 ODT |
| DDR4 电路设计指南 | DDR4 SDRAM | POD12、bank group、DBI、2D 训练 |
| DDR5 电路设计指南 | DDR5 SDRAM | 双子通道、On-DIMM PMIC、DFE、同帧 ECC |
| EEPROM 电路设计指南 | EEPROM | I²C/SPI 接口、上拉电阻与总线电容、页写与写保护 |
需要 MB 级易失 RAM(1 MB ~ 128 MB)、引脚数极少、单价低、且不想接 SDRAM 控制器 → PSRAM。需要 < 1 MB 且要极低延迟 / 无限次写 → 片内 SRAM 或外挂并行 SRAM。需要 GB 级、GHz 级带宽、且主控有 DDR 控制器 → DDR3 / DDR4。需要 掉电保存代码 → SPI NOR / eMMC(PSRAM 掉电即丢数据)。
PSRAM 的长板是单元面积小、每 MB 成本低、引脚少、内部自带刷新而无需主机管理;短板是读延迟高于 SRAM、必须周期性释放 CS# 供内部刷新、高温下刷新开销翻倍。
① 把它当 SRAM 用:CS# 长时间拉低(超过 tCEM,典型 4 µs)会阻断内部刷新,高温下直接丢数据;长事务必须分片。
② 把它当 SPI NOR 用:SOP-8 封装下两者引脚高度重合,贴错料后 ID 读不出来、电压还可能不匹配,必须做防呆。
③ 把 200 MHz DDR 当 50 MHz SPI 走线:OPI / HyperBus 的 DQ 组等长与 CK 差分对不控,表现为高温、低压下偶发校验错或死机。
1 · 器件基础
1.1 定位与选型对比
工作原理:DRAM 内核 + 片内自刷新控制器 + SRAM 兼容接口
PSRAM 的存储内核是 DRAM(1T1C:一个选择晶体管 + 一个存储电容),单元面积约为 SRAM(6T)的 1/4 ~ 1/6,因此每 MB 成本远低于 SRAM;同时芯片内部集成了刷新控制器、地址锁存器、刷新仲裁器与时序发生器,对外呈现的是 SRAM 风格的接口。主机只需给出地址和读/写命令,不需要像 SDRAM 那样发 ACTIVE / PRECHARGE / REFRESH,也不用管理行地址复用与 Bank。"伪静态(Pseudo Static)"正是指"外表静态、内核动态"。
- 自刷新是"透明"的,但不是"免费"的:内部刷新要占用阵列周期,主机在刷新窗口内访问会被拉长(表现为可变延迟、RWDS 拉高),且主机必须周期性释放 CS#(见 5.3)。
- 数据易失:掉电即失;部分型号在 Deep Power-Down 模式下不保证数据保持,唤醒后需重新初始化并重载数据(以 datasheet 为准)。
- 无擦写寿命限制:DRAM 单元没有 P/E 次数概念,可无限次随机写,不需要 ECC、坏块表、磨损均衡,软件模型与 SRAM 基本一致。
- 密度/成本定位:介于 SRAM 与 DRAM 之间——比 SRAM 便宜、密度高;比 DDR 慢、容量小、但接口简单得多。
与同类存储器的横向对比
| 对比项 | PSRAM(本文) | 异步 SRAM | SDRAM / DDR | HyperRAM | SPI NOR Flash |
|---|---|---|---|---|---|
| 存储单元 | 1T1C DRAM | 6T SRAM | 1T1C DRAM | 1T1C DRAM | 浮栅 NOR |
| 常见容量 | 4 Mb ~ 512 Mb (512 KB ~ 64 MB) | 256 Kb ~ 64 Mb | 256 Mb ~ 32 Gb | 32 Mb ~ 512 Mb | 512 Kb ~ 2 Gb |
| 系统常见配置 | 8 MB / 32 MB / 64 MB / 128 MB | ≤ 8 MB | 512 MB ~ 8 GB | 8 MB / 16 MB / 32 MB / 64 MB | 4 MB ~ 32 MB |
| 接口 | SPI / Quad / OPI / HyperBus / 并行 ADMUX | 并行,地址数据分离 | 并行 + 命令总线 | HyperBus x8 DDR | SPI 1/2/4 线 |
| 主机引脚数 | 6 ~ 13 | 30 ~ 50 | 60 ~ 120(含地址) | 12 ~ 13 | 4 ~ 6 |
| 首字节读延迟 | 60 ~ 200 ns | 10 ~ 70 ns | 80 ~ 150 ns(含行激活) | 80 ~ 200 ns | 60 ~ 120 ns |
| 持续带宽 | 50 ~ 400 MB/s | 20 ~ 200 MB/s | 1.6 ~ 51 GB/s | 200 ~ 400 MB/s | 6 ~ 104 MB/s |
| 主机需管理刷新 | 否(片内自刷新) | 否 | 是 | 否 | — |
| 主机需管理 ECC / 坏块 | 否 | 否 | 部分需 ECC | 否 | NOR 不需要 / NAND 需要 |
| 写操作 | 直接写,无擦除 | 直接写 | 直接写 | 直接写 | 先擦后写,ms 级 |
| 掉电数据 | 丢失 | 丢失 | 丢失 | 丢失 | 保持 |
| 待机电流(1.8 V) | 20 ~ 300 µA | 5 ~ 50 µA | mA 级(自刷新) | 20 ~ 200 µA | 1 ~ 10 µA |
| 每 MB 成本 | 低 | 高 | 最低 | 低 | 中 |
| 典型用途 | MCU 外扩 RAM、帧缓存、XIP、AI 权重 | 高速缓存、小量暂存 | 系统主存 | 高带宽外扩 RAM | 启动代码、字库、参数 |
主控没有 DDR 控制器(Cortex-M 系列 MCU、多数 IoT SoC、FPGA 软核)却需要 1 MB 以上 RAM 时,PSRAM 是唯一能同时兼顾引脚数、带宽与成本的选择。若主控带 OPI / HyperBus 专用控制器且有 Cache,优先走 OPI / HyperBus 做 memory-mapped XIP;若只有普通 QSPI 控制器,则走 Quad SPI,接受 ~50 MB/s 的带宽上限;若只需几百 KB 且要求确定性延迟,回到片内 SRAM。
主要厂商与型号
| 厂商 | 典型系列 / 型号 | 接口 | 电压 | 备注 |
|---|---|---|---|---|
| AP Memory 爱普 | APS1604 / APS6404(Quad SPI) APS6408 / APS12808 / APS256XX(OPI x8 DDR) | Quad SPI / OPI DDR | 1.8 V / 3.0 V | IoT 领域出货量最大,SOP-8 与 WSON-8 为主流封装,被大量 MCU 平台原生支持 |
| Infineon(原 Cypress) | S27KS0641 / S27KS1281 / S27KS2561(1.8 V) S27KL0642 / S27KL1282(3.0 V) | HyperBus x8 DDR | 1.8 V / 3.0 V | HyperRAM 规范定义者,寄存器定义最完整,BGA-24 为主 |
| ISSI 芯成 | IS66WVS(Quad SPI) IS66WVO(OPI) IS66WV(并行) | Quad SPI / OPI / 并行 | 1.8 V / 3.0 V | 车规与工规型号齐全,支持 −40 ~ +105 °C |
| Winbond 华邦 | W956 系列 HyperRAM OPI / Quad PSRAM 系列 | HyperBus / OPI / Quad | 1.8 V / 3.0 V | 与自家 NOR Flash 生态配套,常见 MCU + NOR + RAM 套片 |
| Micron 美光 | CellularRAM MT45W 系列 (如 MT45W8MW16) | 并行 ADMUX(异步 / 页 / 突发) | 1.8 V / 3.0 V | 并行 PSRAM 的事实标准,BGA-48,老平台与 FPGA 常用 |
| GigaDevice 兆易创新 | SPI / OPI PSRAM 系列 | Quad SPI / OPI | 1.8 V / 3.0 V | 与自家 GD25 NOR 组成套片方案 |
| ESMT 晶豪 | SPI / 并行 PSRAM | SPI / 并行 ADMUX | 1.8 V / 3.0 V | 成本导向,工控与消费类常见 |
| Dosilicon 东芯 | SPI / OPI PSRAM | Quad / OPI | 1.8 V / 3.0 V | 国产替代,可与主流型号做 pin-to-pin 评估 |
| Fudan Micro 复旦微 | SPI / 并行 PSRAM | SPI / 并行 | 1.8 V / 3.0 V / 宽压 | 国产替代,部分型号支持宽压与高低温 |
同一厂商不同代次的命名规则可能变化(例如 AP Memory 中 APS6404 与 APS6408 的数字后缀分别对应 Quad 与 Octal 接口,APS256XX 表示 256 Mb 级 OPI 家族),容量、位宽、最高频率、封装与电压全部以后缀码 + datasheet 为准。选型评审时建议把「型号全称 + 封装代码 + 温度等级代码 + datasheet 版本号」四项写进 BOM,并在原理图符号里标注。
1.2 封装与引脚定义
PSRAM 有三种物理形态,对应三种完全不同的系统设计复杂度:串行 8 脚(最易用,Quad 接口)、BGA-24(HyperBus,带宽最高)、BGA-48(并行 ADMUX,引脚最多,仅用于老平台或 FPGA)。
封装与机械参数
| 封装 | 典型本体尺寸 | 引脚/球距 | 特点与适用 | 焊接/检测 |
|---|---|---|---|---|
| SOP-8(150 mil) | 约 3.9 × 4.9 mm | 1.27 mm | 最常用,手焊返修友好,样机首选;与 SPI NOR 完全同封装,防呆风险最高 | AOI + 目视 |
| WSON-8 / USON-8 | 6 × 5 mm / 4 × 4 mm / 3 × 2 mm | 1.27 mm | 底面散热焊盘,厚度低,适合穿戴与小型模组 | AOI + X-Ray 抽检 |
| WLCSP(部分小容量) | 约 2.5 × 3 mm | 0.4 ~ 0.5 mm | 极小体积,需 HDI 板与激光盲孔 | X-Ray 必检 |
| BGA-24(HyperBus) | 约 5 × 6 mm | 0.8 mm | 12 根有效信号,带宽最高;需 4 层以上板与 BGA 扇出 | X-Ray 必检 |
| BGA-48(并行 ADMUX) | 约 6 × 8 mm | 0.75 mm | 引脚最多,多用于 FPGA / 老平台替换 | X-Ray 必检 |
| TSOP-44 / 48(并行) | 约 12 × 18 mm | 0.8 mm | 老式并行 PSRAM,占板面积大,已逐步淘汰 | AOI |
上图球位为示意性排布,不可直接用于建库。实际差异至少包括:
· SPI/Quad 8 脚型号中,部分厂商把第 3 脚定义为 SIO2,也有把第 3/7 脚做成 NC 或 RESET# 的(Quad 模式下无剩余脚位时只能靠命令软复位);
· HyperRAM 的 NC 球位置、INT# 是否存在、VDDQ 与 VDD 是否可在外部短接,各厂不同;部分型号 NC 脚必须悬空,接地会导致异常电流;
· 并行 ADMUX 的地址位宽(A[22:16] 还是 A[20:16])、字节掩码脚名(UB#/LB# 或 BHE#/BLE#)、WAIT 极性,各厂不同。
规则:每个新型号必须逐脚核对目标 datasheet 的 Pin/Ball Configuration 章节,并在原理图符号属性中写入型号全称、封装代码与文档版本号。
关键引脚说明(按接口分类)
| 信号 | 适用接口 | 方向 | 说明与设计要求 |
|---|---|---|---|
CS#(CE#) | 全部 | 输入 | 片选,低有效。必须 10 kΩ 上拉到 VDDQ,保证上电与主控 IO 未初始化期间不被误选中;同时承担"刷新窗口"职责(见 5.3) |
SCK / CK CK# | SPI / OPI / HyperBus | 输入 | 时钟。SPI 为单端;OPI/HyperBus 多为差分 CK/CK#(部分 OPI 为单端)。禁止上拉/下拉;空闲应停在确定电平(通常 CK 低) |
SIO0..3 / DQ0..7 | SPI/Quad / OPI / HyperBus | 双向 | 数据总线。DDR 模式下每时钟传 2 个数据。组内必须等长(见 6.4) |
RWDS(DQS / DM) | HyperBus / OPI | 双向 | 读写数据选通。读时由 PSRAM 输出随路选通;延迟期间被驱动,用于指示可变延迟与刷新。必须 10 kΩ 上拉或下拉(按 datasheet)避免浮空 |
RESET# | HyperBus / 部分 OPI / 并行 | 输入 | 硬件复位,低有效。建议 10 kΩ 上拉 + 100 nF 对地(复位端可加 RC),并由 GPIO 或复位芯片驱动;未使用时不得悬空 |
INT# | HyperBus(部分型号) | 输出 | 中断/事件指示,开漏,需 10 kΩ 上拉;不用时可悬空(按 datasheet) |
VDD | 全部 | 电源 | 内核电源(阵列与逻辑)。1.8 V 或 3.0 V,见 3.1 |
VDDQ | OPI / HyperBus / 并行 | 电源 | IO 电源。与主控 IO 电平必须一致;部分型号允许与 VDD 外部短接,部分要求独立(以 datasheet 为准) |
VSS / VSSQ | 全部 | 地 | 地,短粗走线直连地平面;BGA 下建议每个地球独立过孔 |
ADV#(地址有效) | 并行 ADMUX | 输入 | 地址锁存指示,下降沿锁存复用地址 |
WAIT | 并行 ADMUX | 输出 | 突发模式下插入等待周期,需主控支持;上拉 |
ZZ# | 并行 ADMUX | 输入 | 休眠/掉电模式使能;建议由 GPIO 控制并带上拉 |
CRE | 并行 ADMUX | 输入 | 配置寄存器使能(总线配置寄存器访问) |
1.3 关键电气参数
下表为工程常用范围值,用于前期方案评估与原理图设计;正式设计必须以目标型号 datasheet 的 Electrical Characteristics 与 AC Timing 表为准。
| 参数 | 典型范围 / 值 | 说明与设计影响 |
|---|---|---|
| 容量 | 4 Mb ~ 512 Mb(512 KB ~ 64 MB) 系统常见 8 / 32 / 64 / 128 MB | 更大容量需多 die、MCP 或多片并联实现 |
| 内核电源电压 VDD | 1.8 V(1.70 ~ 1.95 V)为主流 3.0 V(2.70 ~ 3.60 V) 部分宽压 1.7 ~ 3.6 V | 决定 LDO/PMIC 选型与容差;1.8 V 型号不可直接接 3.3 V |
| IO 电源电压 VDDQ | 1.8 V / 3.0 V,部分支持 1.2 V | 必须与主控 IO 电平一致;与 VDD 可分离或合并(按型号) |
| 最高时钟频率 | SPI/Quad:104 ~ 133 MHz OPI DDR:166 ~ 200 MHz HyperBus DDR:166 ~ 200 MHz 并行突发:66 ~ 133 MHz | 频率越高,Layout 等长与端接要求越严;超过 133 MHz 必须按 DDR 级处理 |
| 峰值带宽 | Quad SPI DDR@133 MHz:133 MB/s OPI x8 DDR@200 MHz:400 MB/s HyperBus x8 DDR@166 MHz:332 MB/s | 理论值,实际有效带宽见 2.6 与 5.5 |
| 初始读延迟(latency) | 固定 3 ~ 7 个 CK;可变模式 +1 ~ +2 CK | 延迟周期数 × 时钟周期 = 首字节延迟,直接影响 XIP 命中率 |
| 页 / 突发长度 | 页 512 B / 1 KB / 2 KB;突发 16 / 32 / 64 / 128 B,可配置为包封或线性 | 突发越长,命令开销占比越低,有效带宽越高 |
| 最大 CS# 低电平时间 tCEM | 典型 4 µs(部分型号 5 µs) | 硬约束超时会阻断内部刷新导致数据丢失 |
| 最小 CS# 高电平时间 tCPH | 15 ~ 22 ns | 两次事务之间必须满足,刷新窗口也在此区间 |
| 刷新机制 | 片内自刷新;高温(> 85 °C)刷新率加倍 | 主机需周期性释放 CS#(见 5.3) |
| 工作电流(读 @200 MHz) | 15 ~ 40 mA(1.8 V) | 决定电源轨电流预算与去耦 |
| 待机 / 休眠电流 | Standby 100 ~ 300 µA Deep Sleep 20 ~ 80 µA DPD 1 ~ 10 µA | 电池产品的主要优化对象 |
| 输入高/低电平(1.8 V) | VIH ≥ 0.8×VDDQ,VIL ≤ 0.2×VDDQ | 与主控 IO 的 VIL/VIH 需交叉校验裕量 |
| 输出驱动强度 | 可配 20 / 33 / 50 / 100 Ω 等(寄存器配置) | 驱动过强引起过冲与 EMI,过弱导致边沿缓慢;见第 7 章 |
| ESD 等级 | HBM ±2 ~ ±4 kV;CDM ±500 V ~ ±1 kV | 见第 8 章;BGA 封装 CDM 风险更需关注 |
| 工作温度 | 商规 0 ~ +70 °C 工规 −40 ~ +85 °C 车规/宽温 −40 ~ +105 °C | 高温档刷新率加倍,需在控制器配置中体现 |
| 数据保持 | 在规定刷新条件下无限保持;掉电即失 | 与 EEPROM/Flash 的本质区别 |
同封装、同容量的 PSRAM 常有 1.8 V 与 3.0 V 两个版本(例如 AP Memory 的 -3SQR 与 -1SQR、Infineon 的 KL 与 KS 前缀)。若 BOM 只写"64 Mb PSRAM"而不写电压代码,采购可能买到 3.0 V 版本并直接烧毁 1.8 V 主控 IO。建议在原理图符号旁用文字标注"VDD=1.8 V ONLY",并在 BOM 中把电压代码写进型号字段。
2 · 接口与协议
2.1 四类接口对比
| 接口 | SPI / Quad SPI | OPI(x8 DDR) | HyperBus(HyperRAM) | 并行 ADMUX |
|---|---|---|---|---|
| 数据位宽 | 1 / 2 / 4 | 8(DDR) | 8(DDR) | 8 / 16 |
| 时钟 | 单端 SCK | 单端 CK 或差分 CK/CK# | 差分 CK / CK# | 异步无时钟 / 突发模式 CLK |
| 最高频率 | 104 ~ 133 MHz | 166 ~ 200 MHz DDR | 166 ~ 200 MHz DDR | 突发 66 ~ 133 MHz |
| 峰值带宽 | 52 ~ 133 MB/s | ~400 MB/s | 332 ~ 400 MB/s | 100 ~ 266 MB/s |
| 有效信号数 | 6(CS# SCK SIO0-3) | 11 ~ 12(+RWDS,+CK#,+RESET#) | 12 ~ 13(+INT# +RESET#) | 30 ~ 40 |
| 命令/地址传输 | 串行,8 bit/周期 | 8 bit/边沿(DDR) | 48 bit CA,8 bit/边沿 | 地址与数据复用 ADQ |
| 事务开销 | 命令 1 B + 地址 3 B + dummy | 命令 1~2 CK + 地址 4 CK | 固定 6 字节 CA(3 CK DDR) | 地址锁存 1~2 周期 |
| 延迟可配置 | dummy cycles(读)/ 无(写) | 模式寄存器配置延迟周期 | CR0 配置初始延迟 3~7 CK | 固定等待状态数 |
| 选通信号 | 无(主机用 SCK 采样) | RWDS / DQS | RWDS(兼延迟与刷新指示) | 无 / WAIT |
| 主机 IP 要求 | 普通 QSPI 控制器即可 | OPI 专用控制器(多含 Cache/MMU) | HyperBus 控制器 | FSMC / EBI / 外部总线接口 |
| Layout 难度 | 低 | 高(DDR 级) | 高(DDR 级) | 中(走线多) |
| 典型型号 | APS6404、IS66WVS | APS6408 / APS12808 / APS256XX | S27KS0641、W956 | MT45W8MW16 |
2.2 SPI / Quad PSRAM 命令集与初始化
Quad SPI PSRAM 的软件模型与 SPI NOR 高度相似(命令 + 地址 + 数据),但没有状态寄存器的忙标志,也没有擦除/编程等待——写操作是立即完成的,软件上不需要轮询"忙",这一点是新工程师最容易惯性犯错的地方(照抄 NOR 的 wait_busy() 会死等)。
常用命令表
| 命令字 | 名称 | 地址/空周期 | 说明 |
|---|---|---|---|
0x9F | Read ID / JEDEC ID | 0 B 地址 + 0 dummy | 读出厂商 ID、密度码、KGD、EID;上电自检与防呆的第一道关 |
0x03 | Read(低速) | 3 B 地址 | 单线读,无 dummy,速率受限(常见 ≤ 33 MHz),用于极低速率与调试 |
0x0B | Fast Read | 3 B 地址 + 8 dummy | 单线读,带空周期,可到标称最高频率 |
0xEB | Quad I/O Fast Read | 3 B 地址 + 模式字节 + dummy | 主力读命令;地址与数据均走 4 线;dummy 数随频率变化(常见 4~8) |
0x38 | Quad Write | 3 B 地址 | 主力写命令;地址与数据均走 4 线;无 dummy |
0x02 | Write / Page Program | 3 B 地址 | 单线写,部分型号称为线性突发写 |
0x35 | Enter Quad Mode | 无 | 进入 QPI/Quad 模式;部分型号无需此命令,靠 0xEB 自动进入 |
0xF5 | Exit Quad Mode | 无 | 退出 Quad,回到单线 SPI;用于兼容启动与救砖 |
0x66 / 0x99 | Reset Enable / Reset | 无 | 软复位序列,8 脚封装无 RESET# 时的唯一复位手段 |
| 模式寄存器读/写 | 各厂不同 | — | 配置突发长度、驱动强度、延迟、休眠;命令字与位定义必须查 datasheet |
① 没有"忙"状态:PSRAM 写完即完成,不需要轮询状态寄存器,也不存在页编程超时。
② 没有扇区/块擦除:任意地址可直接覆盖写,最小写粒度为字节(受总线宽度影响)。
③ 没有写使能(WREN)概念:多数 PSRAM 不需要每次写前发 0x06;若驱动里残留了 NOR 的 WREN 逻辑,会被 PSRAM 当成未知命令而忽略或进入异常状态。
初始化序列(伪代码)
/* ===== Quad SPI PSRAM 初始化序列(命令字以目标 datasheet 为准) ===== */
1) 上电
VDD / VDDQ 单调上升至容差范围内;
CS# 由外部 10 kΩ 上拉保持高电平;
延时 tPU(VDD 稳定 → 首次访问,典型 150 ~ 500 µs)。
2) 软复位(8 脚封装无 RESET# 时)
CS#↓ → 发 0x66 → CS#↑ /* Reset Enable */
CS#↓ → 发 0x99 → CS#↑ /* Reset Memory */
延时 tRST(典型 10 ~ 200 µs,以 datasheet 为准)。
3) 读 ID 并校验(防呆关键步骤)
CS#↓ → 发 0x9F → 读 3 ~ 8 字节 → CS#↑
校验:MF ID 是否等于期望厂商(如 AP Memory 0x5D);
密度码是否等于 BOM 型号对应密度;
不一致 → 记录错误码、禁止进入 memory-mapped,并打印 ID。
4) 进入 Quad 模式
CS#↓ → 发 0x35 → CS#↑
5) 配置模式寄存器
突发长度(16 / 32 / 64 / 128 B,包封或线性);
读延迟 / dummy cycles(按目标频率,见 5.4);
驱动强度(默认中间档,见第 7 章)。
6) 提速
SCK 切到目标频率(如 104 MHz)→ 重新按频率配置 dummy cycles。
7) 自检(建议量产必做)
末地址写 0xAA55AA55 / 0x55AA55AA / 0x00000000 / 0xFFFFFFFF 回读比较;
再按 1 KB 步进做地址行走位(walking 1)抽检;
全片读写校验耗时较长,可只在研发与首件执行。
2.3 OPI x8 DDR 事务结构
OPI(Octal Peripheral Interface)把命令、地址、数据全部放到 8 条 DQ 线上,并在时钟的上升沿与下降沿都传数据(DDR)。200 MHz × 2 边沿 × 8 bit = 3.2 Gbps = 400 MB/s 理论峰值,是目前 MCU 外扩 PSRAM 的主流高速方案。
| 阶段 | 占用时钟(典型) | 内容 | 设计要点 |
|---|---|---|---|
| 命令 | 1 ~ 2 CK | 命令字节(读/写/寄存器/复位) | 命令字由厂商定义,量产前必须对照 datasheet 核对 |
| 地址 | 2 ~ 4 CK | 24 位或 32 位行/列地址 | 32 位地址型号需确认控制器地址模式配置 |
| 延迟周期(Latency) | 6 ~ 8 CK | 器件内部取数 | 频率越高所需延迟周期越多(见 5.4) |
| 总线转向(写事务) | 0 ~ 2 CK | DQ 由主机驱动切到器件驱动 | 转向周期不足会出现首字节冲突 |
| 数据 | 突发长度 / 2 CK | 64 B 突发 = 32 CK;128 B = 64 CK | 突发越长效率越高(见 2.6) |
| 片选恢复 | tCPH ≥ 15 ~ 22 ns | CS# 拉高 | 必须周期性释放,保证刷新窗口 |
/* ===== OPI PSRAM 读事务的时间构成(示例:200 MHz DDR,突发 64 B) ===== */
tCK = 1 / 200 MHz = 5.00 ns
N_cmd = 2 CK /* 命令 */
N_addr = 4 CK /* 32 位地址,8 bit/边沿 */
N_latency = 8 CK /* 由模式寄存器按频率配置 */
N_turn = 1 CK /* 总线转向 */
N_data = 32 CK /* 64 B / (2 B per CK) */
─────────────────────────────────────────────────
N_total = 47 CK = 235 ns
有效带宽 = 64 B / 235 ns ≈ 272 MB/s (峰值利用率 68 %)
/* ===== OPI 初始化要点 ===== */
1) 多数 OPI PSRAM 上电后默认处于 SPI/Quad 单线模式,
必须先以低速 SPI 完成识别与模式寄存器配置,再切到 OPI x8 DDR。
2) 切换命令与切换后的首条命令之间要留足 tCPH,且切换后
第一次访问建议用低速(≤ 50 MHz)验证读写正常再提速。
3) 控制器侧需同时配置:CK 差分/单端、延迟周期数、突发类型、
RWDS 采样沿、驱动强度、采样时钟相位(多数需做 read strobe 训练)。
200 MHz DDR 下每 bit 窗口只有 5 ns,扣除器件输出抖动、PCB 传播延迟、控制器采样不确定性后,实际采样窗口往往只剩 1.5 ~ 2.5 ns。因此控制器通常提供 DQS/RWDS 延迟链(delay line)与读训练流程(发送已知 pattern,扫描延迟档位找窗口中心)。训练必须在每个板型、每批器件、全温度范围内验证,不能只跑常温。
2.4 HyperBus / HyperRAM 协议
HyperBus 用 48 位命令-地址包(CA)在 DQ[7:0] 上以 DDR 方式传输(6 字节 / 3 个 CK),随后是可配置的初始延迟,再进入数据阶段;RWDS 是双向选通,同时承担延迟扩展与刷新指示。
CA(Command-Address)位定义
| 位域 | 名称 | 取值 | 说明 |
|---|---|---|---|
| CA[47] | R/W# | 1 = 读,0 = 写 | 决定事务方向 |
| CA[46] | 寄存器/存储器选择(AS) | 1 = 寄存器空间,0 = 存储器空间 | 访问 CR0/CR1/IDR 时置 1 |
| CA[45] | 突发类型(Burst Type) | 1 = 线性,0 = 包封(Wrapped) | Cache 行填充分推荐包封;大数据块搬运用线性 |
| CA[44] | 保留 | 0 | 部分型号用于扩展地址 |
| CA[43:16] | 行地址 + 列地址高位 | — | 寄存器访问时,寄存器地址也放在该位域(如 CR0 = 0x000800) |
| CA[15:3] | 保留 | 0 | 必须写 0,否则行为未定义 |
| CA[2:0] | 列地址低位 | — | 决定突发起始列,包封模式下用于行内回绕 |
寄存器空间(地址与位定义以 datasheet 为准)
| 寄存器地址 | 名称 | 主要内容 |
|---|---|---|
0x000000 | IDR0 识别寄存器 0 | 器件类型、密度、行/列地址位数 |
0x000001 | IDR1 识别寄存器 1 | 厂商 ID、版本、特性位 |
0x000800 | CR0 配置寄存器 0 | 初始延迟(Initial Latency)、固定/可变延迟选择、驱动强度、深度休眠使能 |
0x000801 | CR1 配置寄存器 1 | 刷新配置(温度补偿刷新 TCSR)、阵列刷新范围、混合/半休眠使能 |
/* ===== HyperBus 寄存器读(以读 CR0 @ 0x000800 为例,位域以 datasheet 为准) ===== */
uint64_t ca = 0;
ca |= (1ULL << 47); /* R/W# = 1 : 读 */
ca |= (1ULL << 46); /* AS = 1 : 寄存器空间 */
ca |= (1ULL << 45); /* Burst = 1 : 线性突发 */
ca |= ((uint64_t)(0x000800ULL & 0xFFFFFF) << 16); /* 寄存器地址 → CA[39:16] */
/* CA[15:3] 保留写 0;CA[2:0] 保留写 0 */
发送 6 字节 CA(DDR,8 bit/边沿,3 个 CK)→ 等待初始延迟 → 读 2 字节数据
/* ===== HyperBus 初始化序列 ===== */
1) 上电:VDD / VDDQ 单调上升;RESET# 保持低 ≥ tRST(10 ~ 200 µs)
→ 释放 RESET# → 等待 tPU(150 ~ 500 µs);CS# 全程由上拉保持高。
2) 读 IDR0 / IDR1,校验厂商 ID 与密度码。
3) 写 CR0:初始延迟按目标频率选取(见 5.4 表);
选择固定延迟(时序确定,推荐)或可变延迟(性能略高、时序可变);
配置驱动强度(默认中档)与输出压摆率。
4) 写 CR1:使能温度补偿刷新(TCSR),配置阵列刷新范围(全阵列 / 半阵列)。
5) 读回 CR0 / CR1 校验写入生效(回读不一致 → 判定焊接或电源异常)。
6) 切换到目标时钟频率,执行读选通训练,然后开始正常访问。
2.5 延迟周期、RWDS 与刷新指示
延迟机制要点
| 项目 | 固定延迟(Fixed Latency) | 可变延迟(Variable Latency) |
|---|---|---|
| 延迟周期数 | 由 CR0 静态配置,恒定不变 | 基础延迟 + 由 RWDS 动态追加 0 / 1 个周期 |
| 主机要求 | 只需按配置计数,控制器实现简单 | 必须能采样 RWDS 并动态改变采样时刻 |
| 时序确定性 | 确定,XIP 与 DMA 友好 | 不确定,最坏情况需按 +1 周期预算 |
| 性能 | 略低(需按最坏情况配置延迟数) | 略高(平均延迟更短) |
| 刷新冲突处理 | 拉长内部时序,主机无感(延迟已足够) | 通过 RWDS 追加周期告知主机 |
| 推荐场景 | 推荐默认:XIP、DMA 帧缓冲、RTOS 确定性要求 | 带宽敏感且控制器支持 RWDS 训练的场景 |
2.6 带宽与吞吐计算
/* ===== 1) 理论峰值带宽 ===== */
BW_peak = f_CK × DDR倍数 × 位宽 / 8 (单位:MB/s)
Quad SPI SDR @104 MHz ×4 : 104e6 × 1 × 4 / 8 = 52 MB/s
Quad SPI DDR @133 MHz ×4 : 133e6 × 2 × 4 / 8 = 133 MB/s
HyperBus DDR @166 MHz ×8 : 166e6 × 2 × 8 / 8 = 332 MB/s
OPI DDR @200 MHz ×8 : 200e6 × 2 × 8 / 8 = 400 MB/s
/* ===== 2) 有效带宽(计入事务开销) ===== */
突发数据字节数
BW_eff = ─────────────────────────────────
(N_cmd + N_addr + N_lat + N_data) × tCK
N_data = 突发长度 / (位宽字节 × DDR倍数) /* OPI: 64 B 突发 → 32 CK */
/* ===== 3) 计算示例:OPI @200 MHz DDR,突发 64 B ===== */
tCK = 5 ns;N_cmd+N_addr = 6 CK;N_lat = 8 CK;N_data = 32 CK
总时间 = (6 + 8 + 32) × 5 ns = 230 ns
BW_eff = 64 B / 230 ns = 278 MB/s → 峰值利用率 69.6 %
/* ===== 4) 同一配置改为 128 B 突发 ===== */
总时间 = (6 + 8 + 64) × 5 ns = 390 ns
BW_eff = 128 B / 390 ns = 328 MB/s → 峰值利用率 82.1 %
/* ===== 5) 首字节延迟(影响 XIP 与随机访问性能) ===== */
T_first = (N_cmd + N_addr + N_lat) × tCK
OPI @200 MHz,延迟 8 CK : (6 + 8) × 5.0 ns = 70 ns
HyperBus @166 MHz,延迟 6 CK : (3 + 6) × 6.0 ns = 54 ns
| 接口 / 频率 | 峰值带宽 | 16 B 突发 | 64 B 突发 | 128 B 突发 | 首字节延迟 |
|---|---|---|---|---|---|
| Quad SPI SDR 104 MHz | 52 MB/s | 28 MB/s | 42 MB/s | 46 MB/s | ~120 ns |
| Quad SPI DDR 133 MHz | 133 MB/s | 66 MB/s | 100 MB/s | 113 MB/s | ~105 ns |
| HyperBus DDR 166 MHz | 332 MB/s | 121 MB/s | 252 MB/s | 284 MB/s | ~54 ns |
| OPI DDR 200 MHz | 400 MB/s | 145 MB/s | 278 MB/s | 328 MB/s | ~70 ns |
| 并行 ADMUX 突发 100 MHz ×16 | 200 MB/s | 120 MB/s | 170 MB/s | 185 MB/s | ~90 ns |
注:表中有效带宽为按典型事务开销(命令+地址 6 CK、延迟 6~8 CK)计算的理论估计,未计入 CS# 释放、刷新插入与总线竞争,实测值通常再低 10 % ~ 20 %。另外,PSRAM 硬件突发上限为 1 KB(wrap),软件驱动通常按 64 B 页缓存管理单次事务,64 B 封顶属于驱动策略而非硬件限制。
例:800 × 480 RGB565 显示屏,60 fps,需持续带宽 = 800 × 480 × 2 B × 60 = 46 MB/s;若叠加 UI 合成的双缓冲与 30 % 刷新开销(约 120 MB/s),Quad SPI(52 MB/s)已明显不足,需上 HyperBus / OPI。
例:16 bit / 48 kHz 立体声环形缓冲 = 48000 × 2 B × 2 ch = 192 KB/s,任意接口都无压力,此时应优先优化休眠电流而非带宽。
2.7 并行 ADMUX PSRAM(CellularRAM)
并行 PSRAM 采用地址数据复用(ADMUX):低 16 位地址与 16 位数据共用 ADQ[15:0],靠 ADV# 的下降沿锁存地址,高位地址由 A[22:16] 提供。支持三种访问模式。
| 模式 | 信号使用 | 特点 | 适用 |
|---|---|---|---|
| 异步(Asynchronous) | CE# OE# WE# ADV# UB#/LB# | 无需时钟,每次访问重新送地址;访问时间 60 ~ 90 ns | 简单 MCU、低速随机访问 |
| 页模式(Page) | 同上,页内只送一次行地址 | 页内连续访问 20 ~ 30 ns/次;页大小常见 8 / 16 / 32 B | 中速连续访问 |
| 突发(Burst / 同步) | 额外需要 CLK、WAIT、ADV# | 首地址锁存后按 CLK 连续输出;CLK 最高 66 ~ 133 MHz | FPGA / 带 FSMC 的主控 |
| 信号 | 方向 | 设计要点 |
|---|---|---|
| ADQ[15:0] | 双向 | 16 位组内等长 ±0.5 mm;与地址锁存时序强相关,禁止在中途加缓冲器 |
| A[22:16] | 输入 | 仅在地址锁存沿有效;可与 ADQ 不等长,但需满足地址建立/保持 |
| CE# / OE# / WE# | 输入 | CE# 上拉;OE#/WE# 建议上拉防止上电期间误写 |
| ADV# | 输入 | 下降沿锁存地址;走线需与 ADQ 组满足地址建立时间 |
| UB# / LB# | 输入 | 高/低字节掩码;8 位总线时 LB# 可固定有效 |
| CLK | 输入 | 突发模式时钟;可串联 22 ~ 33 Ω 源端电阻 |
| WAIT | 输出 | 开漏或推挽(按型号);需上拉,主控必须支持等待插入 |
| CRE | 输入 | 配置寄存器访问使能;不使用时按 datasheet 处理(通常下拉) |
| ZZ# | 输入 | 休眠使能;建议 GPIO 控制 + 上拉,进入后需 tZZ 唤醒时间 |
3 · 电源设计
3.1 供电轨与去耦
| 电源轨 | 标称值 | 典型容差 | 电流(读 @最高频) | 设计要点 |
|---|---|---|---|---|
| VDD(内核) | 1.8 V / 3.0 V | ±5 %(1.70 ~ 1.95 V) 3.0 V 档 2.70 ~ 3.60 V | 15 ~ 40 mA | 与 VDDQ 是否可合并取决于型号;必须核对 datasheet 的 Power Supply 章节 |
| VDDQ(IO) | 1.8 V / 3.0 V / 1.2 V | ±5 % | 5 ~ 20 mA(IO 充放电) | 必须与主控 IO 电平一致;电平不匹配会直接损坏 IO |
| VSS / VSSQ | 0 V | — | — | BGA 封装每个地球建议独立过孔;地平面完整 |
· 单电源型号:芯片内部把 VDD 与 VDDQ 连在一起,外部只需一路电源,两个引脚都接到同一网络并各自去耦。
· 双电源型号:VDD 与 VDDQ 是独立电源域,可以按不同电压供电(例如 VDD=1.8 V、VDDQ=1.8 V 或 3.0 V)。此时要满足 |VDD − VDDQ| 的额定差值限制(常见 ≤ 0.5 V ~ 1.0 V,或明确要求上电顺序),违反会导致闩锁或 IO 漏电。
· 若 datasheet 明确"VDDQ 不得先于 VDD 上电",则用同一电源轨 + 磁珠隔离,或用带使能时序的 PMIC;不要用两个独立 LDO 各控一路而放任上电顺序。
去耦电容配置(推荐基线)
| 位号 | 容值 | 封装 | 数量 | 位置要求 | 作用 |
|---|---|---|---|---|---|
| C1(高频) | 100 nF | 0402 / 0201 | 每路电源 1 ~ 2 只 | 紧靠 VDD/VDDQ 引脚,回流路径总长 ≤ 3 mm | 抑制 10 ~ 100 MHz 高频噪声 |
| C2(中频) | 1 µF | 0603 / 0402 | 每路电源 1 只 | 距器件 ≤ 10 mm | 补充突发电流,抑制 1 ~ 10 MHz |
| C3(体电容) | 4.7 ~ 10 µF | 0603 / 0805 | 整板共享 1 只 | 电源输出端或器件附近 | 稳压与低频纹波 |
| C4(VDDQ 专属) | 100 nF + 1 µF | 0402 / 0603 | 各 1 只 | 紧靠 VDDQ | DDR 高速 IO 的瞬态电流(200 MHz 下最关键) |
| 可选:磁珠/0 Ω | — | 0603 | 按需 | 隔离 VDD 与 VDDQ(双电源型号) | 降低 IO 噪声耦合到内核 |
① 去耦电容的接地过孔必须打在电容焊盘侧面,与电源过孔紧邻(孔间距 1 ~ 2 mm),形成最小回流环路;不要拉长走线到远处过孔。
② 200 MHz DDR 器件,VDDQ 的瞬态电流可达数十 mA/ns,VDDQ 去耦不足是"高温下偶发数据错"的高频根因。
③ 电容材质优先 X5R / X7R,避免使用 Y5V(容值随电压与温度大幅衰减);1 µF 0402 在 1.8 V 偏置下的有效容值可能只有标称的 40 %,需按 DC bias 曲线降额。
3.2 上电 / 掉电时序
上电 / 掉电约束(写入设计文件的检查项)
/* ===== 上电时序约束模板(数值需替换为目标 datasheet 值) ===== */
tVR : VDD 上升时间 ≤ 规定值(常见 ≤ 20 ms,部分型号要求 ≤ 500 µs)
tVQ : VDDQ 上升时间 ≤ 规定值
|VDD − VDDQ| ≤ 额定差值(常见 0.5 V ~ 1.0 V),全程不得超出
VDD/VDDQ 单调性 : 上升沿不得回勾或跌落(回勾 > 100 mV 需重做电源)
tRST : RESET# 低脉冲宽度 ≥ 10 ~ 200 µs(按型号)
tPU : 电源稳定 → 首次访问 ≥ 150 ~ 500 µs
CS# 状态: 上电全过程必须由上拉保持为高(主控 IO 默认高阻时尤其重要)
SCK/CK : 上电期间必须处于确定电平(禁止浮空或振荡)
/* ===== 掉电与异常断电 ===== */
· 掉电时 VDD 与 VDDQ 应同时或 VDDQ 先于 VDD 下降到 0.5 V 以下(按型号);
· 任何时刻若 VDD 跌出容差,必须重新执行完整上电复位流程,
不可仅靠软复位恢复——低压下内部刷新控制器状态可能已紊乱;
· 电池供电产品建议给 PSRAM 电源加欠压锁定(UVLO)或由 PMIC 统一断电,
避免"慢速掉电"导致阵列进入未知状态。
3.3 低功耗模式
PSRAM 的数据保持依赖内部刷新,因此"休眠越深、刷新越少、功耗越低、但唤醒越慢且风险越高"。下表按深度排序(模式名称、进入命令、电流与唤醒时间各厂不同,必须查 datasheet)。
| 模式 | 数据保持 | 典型电流(1.8 V, 25 °C) | 进入方式 | 唤醒 / 退出 | 适用 |
|---|---|---|---|---|---|
| Active(读/写) | — | 15 ~ 40 mA | CS# 低 + 时钟 | — | 正常访问 |
| Standby(待机) | 保持 | 100 ~ 300 µA | CS# 高且时钟停止 | 即时(下一次 CS#↓) | 两次访问之间 |
| Partial Array Refresh (半阵列 / 部分阵列刷新) | 仅保留指定区域 | 60 ~ 120 µA | CR1 / 模式寄存器配置刷新范围 | 需重新配置才能访问其余区域 | 只保留少量关键数据的超低功耗场景 |
| Hybrid Sleep (混合休眠) | 保持 | 30 ~ 80 µA | CR0 / CR1 配置 | tXHS:数十 µs(以 datasheet 为准) | 间歇唤醒的物联网终端 |
| Deep Sleep (深度休眠) | 保持 | 20 ~ 70 µA | CR0 / 模式寄存器配置 | tXHS:数十 ~ 150 µs | 长时间待机,要求数据不丢 |
| Deep Power-Down (DPD) | 多数型号不保持 | 1 ~ 10 µA | CR0 / 专用命令 | 需完整重新初始化 | 长期断电存放、可接受数据重载 |
① 数据是否真的保持:Deep Sleep 与 DPD 常被混为一谈。前者带自刷新、数据保持;后者多数型号会丢失数据。若软件把缓存的 AI 权重或帧缓冲放在 PSRAM 里却进了 DPD,唤醒后读到的是乱码,且不会有任何报错。
② 高温下刷新电流显著上升:同一器件在 85 °C 的待机电流可能是 25 °C 时的 3 ~ 10 倍(刷新率加倍 + 结漏电)。电池产品做续航估算时,必须按最高工作温度下的电流值计算,不能用常温值。
/* ===== 低功耗进入/退出流程(伪代码,命令与位定义以 datasheet 为准) ===== */
进入 Deep Sleep:
1) 等待所有进行中的 DMA / XIP 访问结束(否则会丢事务);
2) 确保 CS# 已拉高且满足 tCPH;
3) 写 CR0/模式寄存器使能 Deep Sleep;
4) 主控可将 PSRAM 的时钟关闭(停止 CK 输出)以进一步省电;
5) 若主控 IO 会在休眠中变高阻 → 必须靠外部上拉保持 CS# 为高。
退出 Deep Sleep:
1) 恢复时钟输出,等待时钟稳定;
2) CS#↓ → 等待 tXHS(唤醒时间,数十 ~ 150 µs)→ 再发起正常命令;
3) 建议读一次 ID 或模式寄存器确认器件已就绪;
4) 若之前进入的是 DPD → 走完整初始化流程(复位 → 配置 → 读选通训练);
5) 恢复 DMA / Cache / XIP 配置。
周期性刷新释放(非休眠场景也必须做):
每笔事务结束后释放 CS#,保证在任意 tCEM(4 µs)窗口内
至少有一次 CS# 高电平(≥ tCPH),否则高温下有丢数据风险。
4 · 典型应用电路
4.1 SoC ↔ OPI PSRAM(推荐主方案)
逐网络说明(OPI PSRAM)
| 网络 | 连接 | 串接 / 上下拉 | 设计要求 |
|---|---|---|---|
PSRAM_CS# | SoC OPI_CS# ↔ PSRAM CS# | 10 kΩ 上拉至 VDDQ | 上电与主控高阻期间必须保持高;避免与 DQ 长距离平行;多片时每片独立 |
PSRAM_CK / PSRAM_CK# | SoC OPI_CK(P/N) ↔ PSRAM CK/CK# | 各串 33 Ω(靠近 SoC) | 100 Ω 差分阻抗;对内等长 ≤ 5 mil(0.13 mm);禁止上下拉;单端时钟型号除外 |
PSRAM_DQ[7:0] | SoC OPI_DQ0-7 ↔ PSRAM DQ0-7 | 可选 22 ~ 33 Ω(双向,靠近主控) | 50 Ω 单端;组内等长 ≤ 25 mil(0.64 mm);不得换序(OPI 一般不支持位交换) |
PSRAM_RWDS | SoC OPI_DQS ↔ PSRAM RWDS | 10 kΩ 上拉(部分型号要求下拉) | 与 DQ 组等长;两侧加地线屏蔽;不得与其他信号共用电阻排 |
PSRAM_RST# | SoC GPIO / 复位芯片 ↔ PSRAM RESET# | 10 kΩ 上拉 + 可选 100 nF 对地 | 低电平 ≥ tRST(10 ~ 200 µs);未使用时按 datasheet 上拉,禁止悬空 |
PSRAM_INT# | SoC GPIO(中断输入)↔ PSRAM INT# | 10 kΩ 上拉 | 开漏输出,仅部分型号具备;不用时可悬空(按 datasheet)或接测试点 |
VDD_1V8 | PMIC / LDO ↔ PSRAM VDD | C1 100 nF + C2 1 µF + C3 10 µF | 容差 ±5 %,纹波 ≤ ±3 %;C1 最靠近引脚 |
VDDQ_1V8 | 主控 IO 同电源域 ↔ PSRAM VDDQ | 100 nF + 1 µF(专属) | 必须与主控 OPI IO 电源同域;双电源型号需满足 |VDD − VDDQ| 限制 |
GND | PSRAM VSS / VSSQ ↔ 地平面 | — | BGA 每个地球至少一个过孔;顶层铺地并密集打地孔 |
4.2 SPI / Quad PSRAM(低引脚数方案)
逐网络说明(SPI / Quad PSRAM)
| 脚位 | 网络 | 串接 / 上下拉 | 设计要求 |
|---|---|---|---|
| 1 | PSRAM_CS# | 10 kΩ 上拉至 VDD | 禁止浮空;多片时每片独立 GPIO 或经译码器驱动 |
| 2 | PSRAM_SIO1 | 可选 22 Ω(双向,靠近主控) | Quad 数据线 1;单线模式下为 SO / MISO |
| 3 | PSRAM_SIO2 | 可选 22 Ω | Quad 数据线 2;不再是 WP# |
| 4 | GND | — | 直连地平面,短粗走线 |
| 5 | PSRAM_SIO0 | 可选 22 Ω | Quad 数据线 0;单线模式下为 SI / MOSI |
| 6 | PSRAM_SCK | 串 22 ~ 33 Ω(靠近主控) | 禁止上下拉;空闲电平由主控 SPI 模式(CPOL)决定 |
| 7 | PSRAM_SIO3 | 可选 22 Ω | Quad 数据线 3;不再是 HOLD# / RESET# |
| 8 | VDD | C1 100 nF + C2 1 µF | 1.8 V 或 3.0 V,必须与主控 IO 电平一致 |
4.3 HyperRAM(HyperBus)电路
HyperRAM 的电气连接与 OPI 高度相似(拓扑同见图 4-1),差异集中在以下几点:
| 差异项 | HyperRAM(HyperBus) | OPI PSRAM | 设计影响 |
|---|---|---|---|
| 时钟 | 必须使用差分 CK / CK# | 差分或单端(部分型号) | HyperRAM 漏接 CK# 直接无法工作 |
| 命令 / 地址 | 固定 48 bit CA(6 字节 DDR = 3 CK) | 命令 1~2 CK + 地址 2~4 CK | HyperBus 事务开销固定,效率略高 |
| 选通 | RWDS(双向,兼延迟与刷新指示) | RWDS / DQS(同) | 两者都需 10 kΩ 上拉防浮空 |
| 复位 | 有专用 RESET# 引脚(BGA-24) | 多数 8 脚型号无 | HyperRAM 可由 GPIO 硬件复位,救砖更容易 |
| 中断 | 部分型号有 INT#(开漏) | 少见 | 需 10 kΩ 上拉;不用时按 datasheet 悬空 |
| 寄存器 | CR0 / CR1 / IDR0 / IDR1(地址较统一) | 各厂私有模式寄存器 | HyperBus 跨厂移植成本较低 |
| 封装 | BGA-24(0.8 mm 球距) | WSON-8 / BGA-24 | HyperRAM 需要 BGA 扇出能力与 X-Ray 检测 |
| NC 球 | NC 球必须悬空(按 datasheet) | — | NC 球接地或接电源会导致异常电流甚至损坏 |
逐网络说明(HyperRAM,BGA-24)
| 网络 | 串接 / 上下拉 | 设计要求 |
|---|---|---|
CS# | 10 kΩ 上拉至 VDDQ | 与 CK 满足 tCSS / tCSH 建立保持;每事务后必须释放以保证刷新 |
CK / CK# | 各串 22 ~ 33 Ω(靠近主控) | 100 Ω 差分;对内等长 ≤ 5 mil;两条线全程等长 |
DQ[7:0] | 可选 22 ~ 33 Ω | 50 Ω 单端;组内等长 ≤ 25 mil;禁止位交换 |
RWDS | 10 kΩ 上拉(部分型号要求下拉) | 与 DQ 同组等长;两侧加地线屏蔽 |
RESET# | 10 kΩ 上拉 + 100 nF 对地(可选) | 由 GPIO 或复位芯片驱动;低电平 ≥ tRST;上电期间保持低 |
INT# | 10 kΩ 上拉 | 开漏;接到主控可唤醒 GPIO 或测试点 |
VDD / VDDQ | 各 100 nF + 共享 1 µF / 10 µF | 双电源型号需核对是否允许外部短接 |
| NC 球 | — | 按 datasheet 悬空;钢网禁止开孔;PCB 焊盘按 datasheet 处理 |
4.4 并行 ADMUX PSRAM 电路
| 网络组 | 位宽 | 串接 / 上下拉 | 设计要求 |
|---|---|---|---|
ADQ[15:0] | 16 | 可选 22 ~ 33 Ω | 组内等长 ≤ 20 mil(0.5 mm);与主控 FSMC / EBI 数据脚一一对应,允许位交换(与 OPI 不同) |
A[22:16] | 7 | — | 仅在 ADV# 锁存沿有效;组内等长 ≤ 50 mil |
CE# | 1 | 10 kΩ 上拉 | 可与主控片选直连;多片时由高位地址译码 |
OE# / WE# | 2 | 10 kΩ 上拉 | 上拉防止上电期间误写;与 CE# 满足读写时序 |
ADV# | 1 | — | 下降沿锁存地址;与 ADQ 组满足地址建立 / 保持 |
UB# / LB# | 2 | 按需上拉 / 下拉 | 8 位总线时,未使用的一侧按 datasheet 固定为有效或无效 |
CLK | 1 | 串 22 ~ 33 Ω | 突发模式时钟;66 ~ 133 MHz 时按时钟线处理,避免分支 |
WAIT | 1 | 10 kΩ 上拉 | 主控必须支持等待插入;不支持则只能跑异步 / 页模式 |
CRE / ZZ# | 2 | CRE 下拉、ZZ# 上拉(按 datasheet) | 由 GPIO 控制;ZZ# 进入休眠后需满足唤醒时间 |
并行接口中 ADQ 组必须严格等长,地址组可放宽;但 ADV# 与 ADQ 之间要满足地址锁存的建立 / 保持,两者不能相差过大(建议 ≤ 100 mil)。很多工程师把 ADV# 当作普通控制信号随意走线,结果在高频突发模式下首地址锁错,表现为"连续读时第一拍数据错位"。
4.5 多片 SPI PSRAM 共总线与 CS 译码拓扑
当单片容量不足(例如需要 4 × 64 Mb = 32 MB)时有两种做法:共总线多片选(本节)与直接选用更大容量单片(优先推荐——共总线会显著增加负载与 Layout 难度)。
多片设计规则
| 项目 | 规则 | 原因 |
|---|---|---|
| 片数上限 | 共总线建议 ≤ 2 片(@133 MHz)或 ≤ 4 片(≤ 80 MHz) | 负载电容叠加,边沿变缓,时序裕量不足 |
| 总线电容预算 | ΣCIN + CPCB ≤ 主控驱动能力(常见 ≤ 30 ~ 50 pF) | 超出后上升 / 下降时间超标,采样失败 |
| 分支长度 | ≤ 10 mm,且分支尽量对称 | 长分支形成 stub,引起反射与振铃 |
| 片选方式 | ≤ 4 片用 MCU 直接 GPIO;更多用 74LVC138 / 74LVC139 | 译码器传播延迟(3 ~ 5 ns)需计入时序预算 |
| 片选上拉 | 每片独立 10 kΩ 上拉 | 避免上电期间多片同时响应造成总线冲突 |
| 去耦 | 每片独立 100 nF,靠近各自 VDD | 共享去耦会在并发切换时造成电源塌陷 |
| 频率降额 | 每多 1 片,建议频率降 10 % ~ 20 % | 留出负载与串扰裕量 |
| 片选切换间隔 | 两片切换之间满足 tCPH(15 ~ 22 ns) | 防止总线竞争与刷新窗口丢失 |
多片并联看似"容量翻倍、成本相近",实际带来负载电容翻倍、Layout 拓扑复杂、频率降额、软件需做地址分片管理、故障率翻倍等问题。若目标容量有对应单片型号(如 256 Mb / 512 Mb OPI PSRAM),优先选单片;多片方案只在"单片买不到 / 供应不合法 / 需要物理隔离"时才使用。