psram
PSRAM (Pseudo Static Random Access Memory) 提供伪静态随机存储器的初始化、挂起、恢复及状态等待功能,支持PHY/DMAC/AXI控制器配置与多厂商芯片适配。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| uapi_psram_init | 初始化PSRAM设备,完成PHY/DMAC/AXI控制器初始化及外设寄存器配置 |
| uapi_psram_suspend | 挂起PSRAM,进入半休眠模式 |
| uapi_psram_resume | 恢复PSRAM,从半休眠模式退出并重新初始化控制器 |
| uapi_psram_wait_hs_status | 等待PSRAM退出半休眠状态就绪 |
| uapi_psram_controller_init | 初始化PSRAM控制器(PHY/DMAC/AXI) |
Functions
uapi_psram_init
头文件清单
功能说明
- 初始化指定编号的PSRAM设备,完成PHY/DMAC/AXI控制器初始化
- 配置PSRAM外设寄存器(MR0/MR4/MR8等),并根据厂商ID优化设备配置
- 支持APMemory/DSGMemory/Winbond等不同厂商PSRAM芯片的自动识别与配置优化
前置条件
- 依赖关系:PSRAM硬件已正确连接且供电正常
- 依赖关系:系统时钟已配置完成,PSRAM相关时钟源已使能
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| id | uint8_t | PSRAM编号 | PSRAM_ID_0(0) / PSRAM_ID_1(1) |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x0) | 执行成功 | PSRAM初始化及配置完成 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
参考案例
uapi_psram_suspend
头文件清单
功能说明
- 挂起PSRAM设备,使其进入半休眠(half-sleep)模式
- 当CONFIG_PSRAM_SUPPORT_HALF_SLEEP宏开启时,向所有PSRAM发送半休眠进入请求
- 用于系统低功耗场景,配合PSRAM suspend/resume机制使用
前置条件
- 调用时序约束:当前接口必须在uapi_psram_init()成功返回后调用
- 依赖关系:PSRAM硬件已正确连接且控制器已初始化
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| arg | uintptr_t | PSRAM参数(当前未使用) | - |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x0) | 执行成功 | PSRAM挂起操作完成 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_PSRAM_SUPPORT_HALF_SLEEP | 特性宏 | 控制是否向所有PSRAM发送半休眠进入请求 | n |
uapi_psram_resume
头文件清单
功能说明
- 恢复PSRAM设备,从半休眠模式退出
- 重新设置频率标志、初始化所有PSRAM的PHY/DMAC/AXI控制器
- 当CONFIG_PSRAM_SUPPORT_HALF_SLEEP宏开启时,发送半休眠退出请求
- 当CONFIG_SUPPORT_DLYM_1宏开启时,执行PHY接收FIFO复位
前置条件
- 调用时序约束:当前接口必须在uapi_psram_init()成功返回后调用
- 依赖关系:PSRAM已通过uapi_psram_suspend()挂起
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| arg | uintptr_t | PSRAM参数(当前未使用) | - |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x0) | 执行成功 | PSRAM恢复操作完成 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_PSRAM_SUPPORT_HALF_SLEEP | 特性宏 | 控制是否发送半休眠退出请求 | n |
| CONFIG_SUPPORT_DLYM_1 | 特性宏 | 控制是否执行PHY接收FIFO复位 | n |
uapi_psram_wait_hs_status
头文件清单
功能说明
- 等待PSRAM退出半休眠状态就绪,通过轮询DMAC半休眠状态寄存器判断
- 若PSRAM当前未处于半休眠状态,立即返回成功
- 若PSRAM处于半休眠状态,以systick超时机制等待状态就绪,超时约1500us后返回失败
前置条件
- 调用时序约束:当前接口必须在uapi_psram_init()成功返回后调用
- 依赖关系:systick已初始化可用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| arg | uintptr_t | PSRAM参数(当前未使用) | - |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x0) | 执行成功 | PSRAM已退出半休眠状态或未处于半休眠状态 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
uapi_psram_controller_init
头文件清单
功能说明
- 初始化PSRAM控制器,依次初始化PHY、DMAC、AXI三个子模块
- 在PSRAM初始化流程和恢复流程中被调用
- 可重复调用,每次调用重新初始化指定编号的控制器
前置条件
- 依赖关系:PSRAM硬件已正确连接且供电正常
- 依赖关系:PSRAM寄存器基地址已通过hal_psram_init()设置完成
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| id | uint8_t | PSRAM编号 | PSRAM_ID_0(0) / PSRAM_ID_1(1) |
Type definitions
errcode_t
使用说明
- 作为uapi_psram_init、uapi_psram_suspend、uapi_psram_resume、uapi_psram_wait_hs_status的返回值类型
Enumerations
psram_id_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| PSRAM_ID_0 | 0 | PSRAM编号0 |
| PSRAM_ID_1 | 1 | PSRAM编号1 |
| PSRAM_ID_MAX | 1 | PSRAM编号最大值 |