什么是PSRAM

Pesudo Static Random Access Memory 伪静态随机内存

这样看,它是一个内存,和我们熟悉的DRAM,SRAM是一回事。但是,它是伪静态的。说明它不需要像DRAM那样,需要自刷新。

DRAM是完全用电容构造的,因此存在漏电流,要持续保存数据的话,需要不断地自刷新,一般要求32ms或者64ms刷新一次。

PSRAM使用了晶体管和电容来构造,因此可以不需要自刷新,没有DSRAM这个矫情的毛病!它使用一个晶体管和一个电容来存储一个bit的数据。而SRAM需要六个晶体管来存储一个bit的数据。因此,PSRAM有成本低,或者相同成本比SRAM有更大容量的优势。

PSRAM具有SRAM接口协议,外部只要给地址,发读写命令,就可以实现存取,无需DRAM那样要memory controller来控制refresh。

下面这些都可以当作内存使用:

SRAM读取速度快,容量小,可读写,无需自刷新,掉电后数据丢失
PSRAM读取速度稍慢,容量稍大,可读写,无需自刷新,掉电后数据丢失
DRAM 读取速度慢,容量大,可读写,需自刷新,掉电后数据丢失
FLASH(XIP模式)读取速度最慢,容量最大,仅可读,无需自刷新,掉电后数据不丢失

这里说下,Flash闪存的1个存储单元存储多位数据,这是DRAM和SRAM都做不到的。根据浮栅层中电子的多少,每个存储单元可以表达1比特(SLC)、2比特(MLC)、3比特(TLC)或4比特(QLC)数据。

很多PSRAM芯片是SPI接口的(串口),支持QSPI四倍速或者更高,以提升访问速度。也有并口的的。

使用SPI接口的PSRAM芯片,需要SOC有PSRAM控制器。

当CPU访问一个地址的时候,会通过自己的地址映射表,判断是访问哪块设备的。如果这个地址是PSRAM区域的,那么CPU是直接访问PSRAM控制器,然后控制器再通过SPI与PSRAM芯片交互,拿到数据。最后控制器再给出数据到CPU。在CPU眼里,就和直接访问SRAM是一样的。

PSRAM控制器把SPI的交互细节隐藏起来了。

使用PSRAM控制器,一般要先初始化,会有如下一些参数,要提前设置好:

unsigned int base; ///< SPI 接口基地址unsigned int cs_base; ///< SPI 接口基地址unsigned int rcmd; ///< 读操作命令unsigned int rcmd_len; ///< 读操作命令长度(bit)unsigned int rcmd_line; ///< 读操作命令总线宽度unsigned int raddr_len; ///< 读操作地址长度(bit)unsigned int raddr_line; ///< 读操作地址总线宽度unsigned int rwait_cycles; ///< 读操作等待时钟数unsigned int rspi_mode; ///< 读 SPI 操作模式 unsigned int wcmd; ///< 写操作命令unsigned int wcmd_len; ///< 写操作命令长度(bit)unsigned int wcmd_line; ///< 写操作命令总线宽度unsigned int waddr_len; ///< 写操作地址长度(bit)unsigned int waddr_line; ///< 写操作总线宽度unsigned int wwait_cycles; ///< 写操作等待时钟数unsigned int wspi_mode; ///< 写 SPI 操作模式unsigned int qpi_en; ///< QPI 作模式使能unsigned short clk_div; ///< 时钟分频
// 读操作,0x30000000地址是PSRAM区域 volatile uint8_t *data_8 = (uint8_t *)0x30000000; uint8_t n = data_8[0];​​​​
// 写操作,0x30000000地址是PSRAM区域volatile uint8_t *data_8 = (uint8_t *)0x30000000;   data_8[0] = 0xa5;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值