一、前言

         树莓派RP2350芯片新增了对QSPI PSRAM(QSPI接口的PSRAM)支持,相较于前代RP2040芯片实现了重要升级。PSRAM的密度高于传统SRAM,允许RP2350在有限芯片面积下实现更大内存容量。这对于运行复杂应用(如图形处理、多任务操作系统)至关重要,同时避免了DRAM的复杂刷新电路需求。支持PSRAM后,RP2350可更灵活地应用于智能家居、穿戴设备、工业控制等领域。开发者能选择成本更低的大容量内存方案,同时保持设计简洁性。本文介绍RP2350芯片在rt-thread下PSRAM的使用方法。

二、硬件方面的说明

2.1 QSPI PSRAM本身

2.1.1 QSPI PSRAM的工作原理      

        QSPI PSRAM结合了DRAM的高密度和SRAM的易用性,通过QSPI接口实现高效数据交换。

        QSPI PSRAM存储器的核心是DRAM阵列,但通过内置刷新控制器模拟SRAM行为,无需外部刷新操作。内部结构包括:

  • 存储阵列:DRAM单元构成,密度高但需要定期刷新。
  • 刷新控制器:自动管理刷新周期,对用户透明。
  • 接口逻辑:处理QSPI协议,转换外部命令为内部操作。

        PSRAM芯片的外部通信接口——QSPI(Quad SPI)是一种高速串行通信接口,支持四线数据传输,它通过内部接口逻辑电路连接芯片内部的并行PSRAM(Pseudo SRAM)存储器。

        标准QSPI PSRAM通常支持以下核心命令(具体以器件手册为准):

命令名称 操作码(Hex) 功能描述
READ 0x03 标准读取数据
FAST_READ 0x0B 带时钟延迟的快速读取
WRITE 0x02 写入数据
EDIO 0x3B 进入/退出四线模式(部分型号支持)
RSTEN 0x66 复位使能
RESET 0x99 执行硬件复位
RDID 0x9F 读取器件ID

        由于QSPI PSRAM遵循统一的命令规范,外部控制程序能够通过这些标准指令识别和操作不同厂商的PSRAM芯片。

2.1.2 常见的QSPI PSRAM有哪些

        APMemory系列:如APM1604(16Mb),APM1604(64Mb),支持1.8V/3.3V(由型号后缀区分);

        乐鑫系列:如ESP-PSRAM64H(64Mb),支持3.3V;ESP-PSRAM64(64Mb),支持1.8V;

        Lyontek系列:如LY68L6400(64Mb),支持3.3V

2.1.3 QSPI PSRAM关键参数

        QSPI PSRAM参数有很多,比如容量、接口电平、QSPI接口时钟频率、时序特性、功耗等。        

        对软件开发者来说,QSPI PSRAM的关键参数是容量和QSPI接口时钟频率。

        QSPI PSRAM的容量直接影响软件设计方案,并制约产品功能的实现程度。目前市面上的QSPI PSRAM容量在16Mb~128Mb范围内,容量64Mb及64Mb以内的芯片比较常见。

        对于不跨页的内存访问,芯片支持的QSPI时钟频率通常为104MHz至133MHz,部分型号支持高达166MHz;对于跨页的内存访问,芯片支持的QSPI时钟频率会降至84MHz。软件开发者需要根据内存访问情况设置QSPI时钟频率。

2.2 RP2350芯片与QSPI PSRAM连接

2.2.1 RP2350芯片XIP子系统概述

        RP2350芯片通过XIP子系统访问外部QSPI存储器(QSPI Flash和QSPI PSRAM)。XIP子系统结构如下图:

        RP2350芯片通过XIP子系统实现了CPU对QSPI存储器的直接内存访问功能。具体实现细节请参阅RP2350 datasheet第4.4章节的说明。
        对于QSPI PSRAM,从XIP子系统结构图下往上看,QSPI PSRAM通过SCK、CSn[1]和SD[3:0]信号线接入QSPI Memory Interface(QMI)模块。QMI模块负责封装QSPI PSRAM的数据读写与控制命令,将上层传输的数据转换为底层操作指令,从而实现对QSPI PSRAM操作细节的透明化处理。从逻辑上讲,QSPI PSRAM实现了并行PSRAM访问的串行化处理,而QMI模块则负责将这些串行数据重新转换为并行的内存空间。QMI的上层负责管理这块内存空间,具体包括:AHB模块确定这块内存空间在整个系统中的内存地址,而cache和Streaming FIFO(一般情况下PSRAM用不到)则通过AHB仲裁器控制访问时机。

        XIP子系统的缓存机制确保PSRAM访问不会跨越页边界,理论上能使PSRAM能够以QSPI接口的最高速率运行。但实际QSPI接口速率受系统时钟影响,因为QMI输出的SCK速率是系统时钟的整数分频。RP2350的默认系统频率为150MHz。当PSRAM芯片支持166MHz通信速率时,QMI可以150MHz频率与其通信;若PSRAM芯片仅支持133MHz速率,则QMI将以75MHz频率进行通信。

2.2.2 RP2350芯片与QSPI PSRAM的引脚连接   

        RP2350的QSPI接口通常包含6个主要信号线,需与PSRAM对应引脚匹配:

  • SCLK(时钟):连接PSRAM的CLK引脚,提供同步时钟信号。
  • CSn[1](片选):连接PSRAM的CS#引脚,用于设备选择。
  • SD0(数据线0):连接PSRAM的D0引脚,用于双向数据传输。
  • SD1(数据线1):连接PSRAM的D1引脚。
  • SD2(数据线2):连接PSRAM的D2引脚。
  • SD3(数据线3):连接PSRAM的D3引脚。

        此6个信号除CSn[1]外,都是特定功能引脚,无需特殊配置。CSn[1]为GPIO第二功能脚(F9),默认不使能QMI CS1n功能。只有GPIO0、GPIO8、GPIO19和GPIO47具有QMI CS1n功能。

2.2.3 实际板子情况

        树莓派pico2不支持PSRAM,目前只有少数RP2350板子支持PSRAM。

        我的板子上的PSRAM芯片是LY68L6400,容量64Mb(8MB),CSn[1]引脚使用GPIO19。

三、rt-thread下的PSRAM软件驱动

        在软件层面,使用PSRAM只需完成初始化步骤。初始化完成后,直接访问内存地址空间0x11000000至0x11000000+PSRAM容量-1的范围即可实现对PSRAM的读写操作。

        工程board/board.c文件用于初始化硬件,加入以下代码初始化PSRAM。

#include "rp2_psram.h"
#include "boards/pico_plus_rp2350.h"

int rt_psram_init()
{
  psram_size = psram_init(PICO_PLUS_PSRAM_CS_PIN);
  rt_kprintf("PSRAM size: %d\r\n", psram_size);
  return 0;
}
INIT_DEVICE_EXPORT(rt_psram_init);

        board目录下的rp2_psram.h和rp2_psram.c根据开源代码修改。开源代码基于官方sdk开发,rt-thread下需修改才能正常使用。源码可以从这里下载RP2350芯片PSRAM在rt-thread系统下的初始化程序

        现在board目录是这样的。

        修改board目录下SConscript文件,加入rp2_psarm.c才能完整编译。

        编译的固件烧入板子启动后,能看到板上PSRAM的容量信息。

        

四、PSRAM性能评估与测试

4.1 PSRAM性能评估       

        由于RP2350芯片系统频率为150MHz,大于LY68L6400芯片支持的最大QSPI频率133MHz,RP2350芯片QSPI控制器的输出频率只能通过系统频率2分频——75MHz,来实现最快的LY68L6400芯片读写。

        则,LY68L6400 QSPI通信带宽:75Mx4T/s =300MT/s≈286Mb/s=35.75MB/s。

        根据二八定律,理想情况下,PSRAM读写应该能达到35.75MB/s的80%,即28.6MB/s。实际是这样吗?

4.2 PSRAM性能实测

        PSRAM性能测试使用rt-thread自带的MemoryPerf工具。     

        下图是4KB数据读写性能。

        这也太快了吧!!读写带宽怎么超过了QSPI总线带宽?因为XIP系统里有个16KB的cache,4KB数据的读写全在cache里完成了。实际测了个cache性能。

        下图是64KB数据读写性能。

        这次读性能就正常了,最大28.6MB/s。PSRAM写性能由于PSRAM内部机制的原因本身就比读性能低不少,一般只有读性能的40%左右,这里测得最大9.6MB/s,还算正常。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐