国产PSRAM选型与调试实战:嵌入式大容量内存的务实之选

发布时间:2026/9/30 4:39:48
国产PSRAM选型与调试实战:嵌入式大容量内存的务实之选 做嵌入式开发的朋友应该都有过这种纠结跑UI需要大容量内存可SRAM贵得要命还占PCB面积用SDRAM吧光是那套刷新逻辑和行/列地址复用就足够让新手喝一壶。这个矛盾在国产芯片方案里尤其突出因为很多国产MCU没有原生的SDRAM控制器或者引脚不够用。我这两年被逼着研究了一圈“被动”内存方案最后基本都落在了同一个东西上——国产PSRAM也就是伪SRAM。这名字听着像个山寨货但实际上它解决的是真问题大容量、低价格、SRAM接口三者不可兼得的时候PSRAM就是那个最务实的中间解。这篇文章我就把国产PSRAM的选型、硬件设计、时序调试和踩坑经验一次说清楚。1. 伪SRAM到底“伪”在哪跟真SRAM什么关系1.1 一句话拆开“伪”字PSRAM的全称是Pseudo Static Random Access Memory中文叫伪静态随机存储器。很多人第一次听到“伪”字就皱眉头总觉得带“伪”的产品不怎么正经。其实这里的“伪”没有贬义它指的是“伪装”或者“仿真”——用一块骨子里是DRAM的存储阵列在外部接口上模拟出标准SRAM的行为。拆开看PSRAM的两个关键特征正好一真一假。真的一面是DRAM内核存储单元是一个电容加一个晶体管靠电容上的电荷来保存数据所以它必须有刷新机制否则电荷泄漏数据就没了。假的一面是外部接口它完全复刻了异步SRAM的读时序和写时序CPU这边不知道也不关心它内部到底怎么刷新的只要按SRAM那套地址、数据、片选、读写使能的玩法来操作就能正常读写。这就好像一个人明明是中国人但他在国外一直用英文名生活周围邻居都以为他是老外。名字是假的但这个人本身是真的干活也不含糊。PSRAM本质上就是个内存容量是真金白银的DRAM容量只是穿了一件SRAM的接口外套。1.2 内核是DRAM外壳是SRAM好处在哪为什么要顶着DRAM的内核去装SRAM的壳不能直接一来就上SRAM吗答案都在成本和容量上。真SRAM用的是六管单元一个bit要六个晶体管来维持锁存状态不需要刷新速度极快接口极简单。但代价是密度上不去同样面积做出来的容量比DRAM低一个数量级还不止。市面上常见的并行SRAM容量做到1M到4M就已经算是大个子了价格还不便宜。一颗4M并口SRAM可以卖到十几块甚至二十几块人民币这在消费电子BOM里是相当肉疼的。DRAM这边就不一样单管加电容的结构决定了它的密度天然就高同样制程下容量可以做到SRAM的几倍甚至十几倍成本摊下来每兆字节便宜很多。它的毛病在于电容会漏电必须周期性地对每一行做刷新而且要暴露给控制器去管理。在MCU场景下很多国产MCU根本没有DDR控制器或者说引脚资源紧张没法按DRAM那套行地址、列地址分时复用的方式操作。PSRAM把这套麻烦全部消化在芯片内部自带刷新电路外部还是SRAM那种一条地址总线走天下的玩法。用户付出的代价是随机访问速度不如真SRAM以及内部刷新时会偶发插入等待周期。用大白话讲PSRAM是“花DRAM的钱买SRAM的省心”这是它在嵌入式市场这么多年一直没被淘汰的根本原因。1.3 PSRAM的“里子”和“面子”各是什么再看细一点。PSRAM的内部结构由三大部分组成DRAM存储阵列、刷新控制逻辑、接口时序转换逻辑。刷新这块又要注意PSRAM的刷新通常采用“全局刷新”和“分布刷新”两种策略芯片出厂后厂家已经配好了用户不需要甚至也不能干预这一点和SDRAM是完全不同的。接口时序转换逻辑做的事情是把CPU这边的每一次读/写访问拆成DRAM核心所需要的操作序列。举个例子CPU要读一个32位数据芯片内部可能先把行地址锁存到行译码器激活字线然后把列地址送进去等数据从感应放大器出来再通过输出缓冲送上数据总线。整个过程对CPU是透明的你看到的只是一次普通的SRAM读时序。这个设计最绝的地方在于PSRAM可以做到引脚对引脚兼容SRAM。很多老项目的硬件平台原本设计的是SRAM只要容量和封装一致直接换上PSRAM代码都不用大改甚至连PCB都不用改。这种“即插即用”的替换属性是PSRAM推广这么多年最厉害的一招。2. 国产PSRAM供应格局有哪些品牌能挑2.1 现在的国产PSRAM不是只有“能用”的水平聊国产芯片很多人第一反应是“价格便宜但性能一般”。放在几年前这种印象对PSRAM确实成立因为国产PSRAM起步晚、量小、工艺落后市面上大部分项目宁可用美系和台系的方案。但这两年情况变了物联网、可穿戴、TWS耳机、电子书阅读器这些赛道把国产小容量存储芯片的需求撑起来了几家公司纷纷切入PSRAM市场产品线也丰富起来了。目前做国产PSRAM的品牌主要包括普冉半导体PUYA、东芯半导体Dosilicon、恒烁半导体Zbit、中科芯CKS等。兆易创新在利基型DRAM领域也布局了产品线和其Flash、MCU产品形成组合拳个别项目中也会被拿来做PSRAM的替代或兼容方案。这里面我需要特别说明一下国产PSRAM的市场集中度不算高每家主打的方向也不一样。普冉的PSRAM产品在线路偏细、功耗偏低的消费级市场比较活跃东芯半导体的DRAM产品线覆盖了DDR和PSRAM工业级客户里能见度挺高恒烁的PSRAM主打小容量、低成本在音频缓冲、显示缓冲这类对容量要求不极端的场景里很有性价比。选型的时候不能光看品牌得具体到型号和数据手册上的电气参数。另一个不容忽视的事实是国产PSRAM的大多数型号是从利基型DRAM工艺线上下来的制程集中在55nm到65nm左右相比国际厂商的38nm或者更先进节点在功耗和密度上有差距但架不住价格实在。在消费类产品对成本极度敏感的当下这个差距是完全可以接受的。2.2 常见国产PSRAM型号参数一览我挑几个代表性的型号出来按容量、接口、电压、封装这几个维度做一个速查表方便大家选型时对号入座。型号品牌容量接口类型工作电压典型封装PY32系列配套PSRAM普冉1M~8M并行异步1.8V/3.3VSOP-8, DIP-8, WLCSPDS-PSRAM系列东芯4M~16M并行异步/QSPI1.8V/3.3VSOP-8, BGAZB-PSRAM系列恒烁1M~4M并行异步3.3VSOP-8CKS-PSRAM中科芯2M~8M并行异步3.3VSOP-8, DIP-8这个表只是一个粗略的参考具体型号要去对应官网查最新的选型指南因为国产存储芯片的型号迭代非常快可能每半年就有一批新封装、新容量的型号放出来。另外要留意的是八脚封装和并行接口的关系。很多人一看到SOP-8就觉得这是SPI接口的芯片其实PSRAM的并行接口在低容量1M~4M场合也会用SOP-8来封这时候地址线和数据线是怎么复用出去的答案是通过地址线和数据线分时复用引脚来实现的也就是和SDRAM类似的做法。但这种复用逻辑集成在芯片内部对外看起来仍然是异步SRAM的操作方式。2.3 选型不能只看容量四件事必须核对选国产PSRAM的时候我一般强制自己过四道关第一道是接口类型。你的MCU有没有外部并行总线是FSMC还是Flexible Memory Controller如果连并口总线都没有那就只能看QSPI PSRAM或者SPI PSRAM。别上来就想当然地买并口PSRAM结果MCU根本不支持白折腾。第二道是电压域。1.8V和3.3V选择错误轻则工作不稳定重则直接烧芯片。现在很多低功耗MCU的核心电压是1.8VI/O也是1.8V那么PSRAM就选1.8V版本。如果系统里有3.3V的外围器件就选3.3V版本。两边电压域不一致的时候还需要加电平转换电路千万别图省事直接把不同电压域的引脚连一起。第三道是刷新周期和刷新模式。不同芯片的刷新周期不一样典型值是64ms。这个参数影响的是输入到输出的潜伏期以及最坏情况下读写周期能不能满足你系统的帧率或者采样率要求。比如你要跑一个高刷新率的LCD显示缓冲PSRAM的刷新开销会直接影响帧渲染速度选错了会出现肉眼可见的闪烁。第四道是温度范围。工业级和商业级在国产PSRAM里的区分很明确-40℃到85℃和0℃到70℃价格差一截。如果你的产品要过车规或工规认证千万别用商业级的片子凑合省下来的几毛钱后面会在可靠性测试上成倍找回来。2.4 跟进口料比国产PSRAM的“同”与“不同”很多老工程师一听说国产替代第一反应是“管脚兼容就行”。这话大方向不差但细节上要留个心眼。国产PSRAM和进口PSRAM的管脚定义大部分能对上但时序参数可能不一样尤其是读周期里的地址建立时间、地址保持时间还有片选信号的有效电平。直接拿进口芯片的初始化代码跑国产芯片大概率能跑但跑得稳不稳、有没有偶发错误就得靠示波器和逻辑分析仪去验证。国产PSRAM还有一个比较典型的差异内置刷新逻辑的触发方式。有的芯片是纯自动刷新就是芯片自己定时刷新不需要外部干预有的芯片则是“自适应刷新”会偷偷检查你是不是频繁访问了某些行如果一段时间没访问它会把这些行刷新一遍。这个行为差异会体现在随机读的访问延迟上具体到应用层可能表现为缓冲区读数据的偶发小毛刺。好在国产厂商现在的技术文档和FAE水平比起前几年提升了不少拿到样片后直接发邮件或者打技术支持电话都能拿到比较详细的初始化配置和参考代码。这比起早期“只给一颗芯片其余自己悟”的情况体验好了太多。3. 硬件连接与电路设计怎么把它接到MCU上3.1 并行接口的连接方式把PSRAM接到MCU上最关键的是要理解MCU的外部总线控制器。以最常见的FSMCFlexible Static Memory Controller为例它把外部存储器空间分成几个Bank每个Bank可以独立配置时序参数。PSRAM接上去之后就需要把地址线、数据线、片选、读使能、写使能一一对应连到MCU的FSMC引脚组上。典型接线是这样的MCU的A[18:0]地址线连PSRAM的A[18:0]MCU的D[15:0]数据线连PSRAM的D[15:0]FSMC_NE1连片选CSFSMC_NOE连读使能OEFSMC_NWE连写使能WE。注意PSRAM的字节选择引脚比如上位字节UB和下位字节LB也要接到MCU的地址线低位或者FSMC的字节选择输出上否则你没法单独访问一个字节。这里有一个特别容易踩的坑如果MCU的FSMC数据总线是16位而你买的PSRAM是8位封装那你需要把两片8位PSRAM并联成16位用或者改用16位的PSRAM芯片。千万别直接拿8位片子接到16位总线上那样对不上地址总线映射程序里怎么配置都无法按预期工作。3.2 电源和去耦内存芯片的命根子PSRAM对电源质量的要求比普通逻辑芯片高原因很简单——内部DRAM阵列全靠电荷在电容上存着如果电荷在两次刷新之间因为电压跌落而丢掉了那数据就没了。虽然PSRAM有校验和刷新机制但当VDD波动超出规格时刷新效率会劣化某些行可能还没轮到刷新就已经电荷不足了。设计上我强烈建议这几点电源引脚附近至少放一个0.1μF的陶瓷电容最好再并联一个1μF到10μF的钽电容或大容值陶瓷电容VDD和VDDQ如果有分开供电的话要各自独立去耦不要共用一个电容PCB走线时电源线尽量加宽至少20mil以上避免在电流瞬变时产生压降。如果你板子上有DC-DC开关电源尤其要注意PSRAM不要直接挂在DC-DC的反馈采样点附近否则纹波会直接影响PSRAM的工作稳定性。还有一个经验之谈芯片底部的散热焊盘如果有的话尽量实现接地连接这样既能帮助散热也能给内部的地参考平面提供一个低阻抗路径。别小看这一点在高温环境下地弹噪声就是从这里钻进去干扰刷新时序的。3.3 QSPI PSRAM怎么选怎么连现在很多低功耗MCU和SOC芯片不支持并行外部总线但引出了一个QSPI控制器于是就有了QSPI接口的PSRAM。这类芯片把传统的并行总线精简成四线的SPI接口CLK、CS、DI、DO再加一个可选的DQS。比如某颗8Mbit QSPI PSRAM它的操作方式是主控先通过命令把要访问的地址发送给芯片芯片内部完成行激活、列读、数据输出整个过程全部由芯片内部的协议逻辑来调度。这种接口的优势是引脚占用极少PCB走线难度直线下降。代价是带宽相对并行接口低不少典型的情况25MHz时钟下的QSPI PSRAM理论带宽在12.5MB/s左右结合SPI的协议开销实际有效吞吐可能只有一半。如果只是做音频缓冲、键盘缓冲、日志存储这类低带宽场景那没问题如果要做显示缓冲得算算刷新率够不够。连接上要注意的是QSPI PSRAM的CS控制非常讲究必须在整条命令数据交流期间保持低电平不能像SPI Flash那样发完命令就去忙别的事情。因为PSRAM内部没有独立的“命令缓冲”CS一旦拉高外部就默认你放弃了对总线的占用本次操作就结束了。3.4 板级设计中的地弹、串扰与信号完整性PSRAM总线的速率不算快但它的上升沿和下降沿通常挺陡的哪怕只有10ns级别的翻转时间在长走线上也会产生反射和串扰。实测经验告诉我只要地址线和数据线之间保持至少一倍线宽的间距走线长度控制在不同组之间尽量一致就基本不会出大问题。不放心的话在关键引脚上串33Ω的源端匹配电阻牺牲一点点边沿速率换来整体信号质量的提升绝对是划算的事。地弹问题主要发生在总线上多个引脚同时翻转时瞬时电流在芯片地引脚和PCB地平面之间产生压降。你这边的PSRAM和MCU如果分布在板子的对角线上那总线环路面积会很大地弹会更明显。最好的办法就是尽量缩短总线走线并且保证MCU和PSRAM共用一个完整的地平面不要让总线跨过分割区。可能你会问这些信号完整性分析对低速内存是不是小题大做我的回答是如果你跑的是I2C、UART确实不必较劲但只要是外部存储器总线哪怕速率只有10MHz一旦产品过EMC测试总线走线乱了的板子通常会在这里翻车。提前花半小时把走线理规整后面省下的可不止半小时。4. 时序参数深度解析读得快不如读得稳4.1 一张时序图看懂PSRAM的读写过程先看读操作简化后的PSRAM异步读时序是这样走流程的地址有效后片选信号CS拉低读使能OE拉低经过地址建立时间t_AS后数据线上出现有效数据再经过输出使能时间t_OE后数据真正稳定。整个数据读取周期需要满足的最短时间是读周期时间t_RC。写操作稍有不同地址有效后CS拉低写使能WE拉低数据线在WE下降沿前要有足够的建立时间t_DS在WE上升沿后还要保持一段t_DH。这里特别容易出错的是很多人以为只要数据没上总线就能释放WE其实WE上升沿是数据写入的锁存时刻上升沿前后都留有窗口必须把数据稳稳踩在窗口内否则写进去就是错误数据。为了更直观我把核心参数列一个表并标注它们各自影响的性能维度参数含义典型值影响t_RC最小读周期时间60ns~90ns决定最大读频率t_AA地址访问时间50ns~70ns决定地址到数据延迟t_OE输出使能到有效数据20ns~30ns决定使能信号到数据延迟t_DS数据建立时间5ns~10ns写数据必须提前稳定t_DH数据保持时间0ns~5ns写使能后数据保持时长t_REF刷新周期64ms决定多长时间必须刷新所有行4.2 MCU侧时序参数配置公式用STM32的FSMC举例它的时序配置是通过地址建立时间ADDSET、地址保持时间ADDHLD和数据建立时间DATAST这几个寄存器来完成的。FSMC的读时序分为三段地址建立阶段、数据建立阶段、地址保持阶段。对于写得比较稳的PSRAM芯片我一般这样设ADDSET设为3个HCLK周期DATAST设为6个HCLK周期这样组合下来的读周期在72MHz主频下大约90ns能覆盖绝大多数PSRAM的t_RC。写时序则ADDSET设为2DATAST设为5写使能宽度写出来在70ns左右。当然这个配置不一定适合所有芯片特别是你用的是1.8V的低电压PSRAM它的内部逻辑速度会略慢数据建立时间要求更高建议DATAST再加1~2个周期。有条件的直接接上逻辑分析仪抓一下总线波形把写使能的脉宽和片选时序调一调比盯着数据手册猜要快得多。这里也要特别提醒寄存器配置的是MCU侧的时间参数不是芯片侧需求的直接映射。很多教程喜欢直接给公式但没告诉你FSMC还有一套读等待状态和外设等待状态机制。只能靠示波器抓波形来验证。4.3 刷新时序为什么你调整了时钟PSRAM反而更卡很多人不理解PSRAM既然号称“静态”为什么我超频MCU之后它反而变卡了原因是超频后FSMC的总线频率变高访问周期间隔变短PSRAM内部的自动刷新要插入到两次访问之间或访问过程中总要占掉几个周期的“窗口”。当访问密集的时候刷新操作和正常访问冲突的概率就大了芯片内部的仲裁逻辑会优先保证刷新于是对外表现为偶发的一个延长的访问周期。这个延长的访问会让CPU等待因为FSMC是同步握手本来算好的5个周期的访问突然变成7个甚至9个周期。如果你的程序是高频死循环读写缓冲区那每一个偶发等待都会被感知到表现出来就是“频率越高性能越不稳定”。排查方法很直接用逻辑分析仪长时间抓片选信号统计CS低电平持续时间的直方图。正常情况下所有访问时长应该集中在一个窄区间如果出现零星的大延迟点大概率就是碰到内部刷新了。这时候要么降低总线频率要么在软件上调整访问模式避免连续密集访问同一块区域。5. 实战调试记录第一次调国产PSRAM我踩了哪些坑5.1 调试环境与初始化步骤我这里用的是一个基于国产GD32F470 MCU的开发板MCU自带FSMC接口外挂一颗东芯半导体的DS-PSRAM容量4Mbit并行8位接口电压3.3V。整体目标是在PSRAM里开一个帧缓冲用于LCD显示分辨率480x320RGB565格式每帧需要480 * 320 * 2 307,200字节约300KB4Mbit换算过来512KB放两帧绰绰有余。初始化代码的关键思路是先把FSMC外设时钟使能然后配置Bank1的存储映射再把时序寄存器按前面说的方式填入参数最后写一个内存测试函数对每个地址都写入递增数据再读回来校验。我习惯用两种测试模式一种是walking 1的方式验证地址线和数据线有没有干扰另一种是填充递增数据验证存储体有没有坏块。调试过程里我最先做的是测量FSMC输出的波形。用示波器探头点到PSRAM的CS引脚看到一个规律性的低电平脉冲宽度大约在100ns左右频率和MCU主频对得上说明总线访问已经开始工作了。但读回来的数据却是不对的有些地址读出来全是0xFF有些又是随机数。这几乎是所有PSRAM调试都会遇到的第一道坎总线时序不匹配。5.2 故障1地址线错位全是0xFF排查地址线错位问题我一般用walking 1测试。做法是往地址0x0000写入0x01往0x0001写入0x02依此类推然后按顺序读回。如果读回的数据和写入时不匹配就要按二进制位去对照是哪个地址位偏了。这个项目里我发现往地址0x0000写0x01从地址0x0001读出来却是0x01也就是数据串位了。查了原理图发现MCU的地址总线A0没有接到PSRAM的A0而是接到了PSRAM的A1因为我在连FSMC的时候直接用FSMC_A0去连PSRAM_A0忽略了FSMC内部的地址线移位机制——FSMC的A0对应的是CPU地址的A1因为FSMC数据总线可能是16位宽。解决方式是在CubeMX或寄存器配置里把地址映射对齐或者直接硬件上跳过一根地址线。这个坑很经典几乎每换一颗新的并行存储器都会重新踩一次。教训就是连接并口存储器时先搞清楚MCU内部地址总线的最低有效位是几再决定地址线要移位多少。5.3 故障2写入数据偶发丢失和刷新“撞车”了在地址线问题修好之后数据读写大部分正常了但跑长时间压力测试时偶尔会读回个别错误字节。这个偶发性问题最让人头疼因为不是每次都复现凑巧碰上了也抓不到波形。后来用逻辑分析仪长时间抓访问波形发现CS低电平的时间有个别脉冲异常偏长比正常值大了200ns左右。原因验证了我的猜测那是PSRAM内部刷新和外部访问冲突器件自动延长了本次访问。如果我的MCU侧时序配置刚好卡的比较紧延长的访问就会超出FSMC的等待窗口导致数据总线上的数据在锁存时刻还没稳定于是读回错误数据。解决方案分两步第一步是在FSMC时序里把DATAST加宽让总线留出余量第二步是在软件上把对PSRAM的访问改成短小、分散的模式不要长时间连续访问同一页。这样硬软件双管齐下之后再跑72小时压力测试错误率为零。5.4 故障3这颗料跑不到数据手册标称速度国产PSRAM的数据手册上标的最大操作频率往往挺漂亮但实际用到系统里你会发现很难达到那个标称值。原因通常是用户侧MCU的FSMC配置没法提供那么紧的时序或者是PCB走线造成的信号劣化。实测下来如果你的PCB走线长度超过5cm、还没有做阻抗匹配那芯片的数据保持时间余量会被严重压缩。比如手册上t_OH最小是2ns但你示波器量出来数据线在时钟沿之后只维持了0.5ns才变化。这时候把总线频率降一档问题立刻消失。这种问题教我的道理是数据手册的极限参数是留给设计的理想上界不是给你死磕的目标。实际项目中留20%~30%的时序余量是整个系统稳定运行的标配没有余量的板子调试起来永远会有一堆玄学问题。5.5 常见问题速查表问题现象可能原因排查方法解决方案读回全部0xFF地址线错位或FSMC未使能检查地址映射、用walking 1测试修正地址线连接或FSMC配置偶发数据错误刷新与访问冲突逻辑分析仪长时间抓CS波形加宽时序参数分散访问写数据不生效WE上升沿时数据没保持示波器测量数据线与WE关系加长数据保持时间配置高电压域相连导致芯片发烫1.8V芯片接3.3V总线测芯片VDD和I/O电压加电平转换电路或换3.3V物料高温下数据丢电源纹波过大示波器AC耦合测VDD纹波加强去耦、走线调整6. 和其他存储器摆在一起什么时候该选PSRAM6.1 真SRAM、SDRAM、PSRAM、EEPROM/Flash放一起比很多初学者会把PSRAM、SRAM、SDRAM、EEPROM、Flash这几个概念混一起其实它们在存储器的大家庭里各有各的位置我用一张对比表把它们理清楚类型存储单元是否需要刷新接口复杂度容量/成本典型场景真SRAM6管不需要极简单小/高高速缓存、寄存器堆PSRAM1管1容需要但内置简单中/低嵌入式帧缓冲、音频缓冲SDRAM1管1容需要外部控制复杂大/低内存主存储器EEPROM浮栅管不需要简单极小/较贵参数存储、小数据非易失保存NOR/NAND Flash浮栅管不需要适中大/很低程序存储、大文件存储从这张表能看出来PSRAM的位置正好卡在一个空隙里它比SRAM大得多、便宜得多又没有SDRAM那套复杂控制器它不像Flash和EEPROM那样掉电不丢数据但比它们快得多、寿命也长得多Flash的擦写寿命是万级别PSRAM是无限次读写。需要特别提一下的是前面热词里出现过的“6116型存储器测试原理”就是早期对SRAM芯片的测试方法用地址线、数据线的全1全0、走步、棋盘格等算法来检测存储单元故障。这套测试思想放到PSRAM上照样适用只不过数据手册上的参数从以前那种独立SRAM芯片换成了集成在系统里的PSRAM模块测试原理万变不离其宗。6.2 三个最适合用PSRAM的场景第一个场景是可穿戴设备。手环、手表、TWS耳机对PCB面积和功耗极其敏感一个主控SoC往往不带SDRAM控制器但APP和固件升级又需要临时缓冲区。一颗QSPI PSRAM加在主控旁边引脚占用少、功耗低完美匹配。第二个场景是中小尺寸LCD显示缓冲。很多彩屏方案直接用MCU的GRAM作缓冲但分辨率一旦超过320x240MCU内部的RAM就不够用了。把显示缓冲搬到PSRAM里MCU通过DMA把图像数据推过去刷新率能稳住成本还低。第三个场景是IoT设备里的音频缓冲。比如蓝牙音箱、智能语音助手需要在录音和播放之间做环形缓冲。SPI PSRAM可以提供几百KB的缓冲空间而MCU几乎不需要为其操心刷新。只要你能接受几十毫秒的访问延迟这个方案相当舒服。6.3 什么时候千万别用PSRAM谁更适合替代PSRAM也不是万金油。如果应用对数据访问延迟极其敏感比如软件无线电里的I/Q采样数据缓存、工业控制的实时任务上下文存储真SRAM还是不可替代的第一选择。在这些场景里数据手册上那几百ns的偶发等待是不可接受的偶尔一个延迟抖动就可能让控制环路失稳。如果你需要的是大容量、高带宽的存储比如跑Linux的嵌入式系统那老老实实上DDR颗粒或者LPDDRPSRAM那几十MB/s的带宽完全不够看。PSRAM最怕的就是被当成SDRAM用跑去当系统主内存那基本就是一条路走到黑。还有一种情况也要避开你需要掉电保存数据。PSRAM和SRAM一样是易失性存储器一掉电全部清零。如果应用需要在断电后恢复现场就得在这个缓冲之外再挂一个Flash或者EEPROM做持久化存储。别指望靠PSRAM本身帮你保存任何东西。6.4 从应用层看PSRAM的选型路线图总结下来选PSRAM前先回答自己三个问题第一MCU或者SoC有没有外部总线控制器没有的话只能走QSPI/SPI PSRAM还要确认片子的QSPI控制器支持memory mapped模式否则每次访问都要发命令效率会低得离谱。第二应用对延迟的容忍度有多高真要做实时控制不如加钱买大容量SRAM反之做缓冲类应用PSRAM绰绰有余。第三系统的电压域和PCB空间是否合适1.8V的话找1.8V料3.3V的话找3.3V料引脚紧张就选QSPI封装引脚宽裕就选并口封装。走完这三步再去看具体型号你会发现选型这件事变得一点也不玄了。我自己这几年在项目里从最初对PSRAM的将信将疑到后来把它当成“默认选项”中间经历了不少反反复复的调试验证。国产PSRAM现在的成熟度已经足够支撑产品量产价格也在持续走低唯一要留意的就是每颗料的时序细节和温度特性都存在差异换料之后务必重新做一轮完整的压力测试。做硬件的稳字当头把时序余量留够比看再多品牌ppt都管用。