跳转至

psram

PSRAM (Pseudo Static Random Access Memory) 提供伪静态随机存储器的初始化、挂起、恢复及状态等待功能,支持PHY/DMAC/AXI控制器配置与多厂商芯片适配。

头文件清单

#include "include/driver/psram_v2.h"

接口清单

接口名称 功能简述
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

errcode_t uapi_psram_init(uint8_t id)

头文件清单

#include "include/driver/psram_v2.h"

功能说明

  • 初始化指定编号的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

errcode_t uapi_psram_suspend(uintptr_t arg)

头文件清单

#include "include/driver/psram_v2.h"

功能说明

  • 挂起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

errcode_t uapi_psram_resume(uintptr_t arg)

头文件清单

#include "include/driver/psram_v2.h"

功能说明

  • 恢复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

errcode_t uapi_psram_wait_hs_status(uintptr_t arg)

头文件清单

#include "include/driver/psram_v2.h"

功能说明

  • 等待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

void uapi_psram_controller_init(uint8_t id)

头文件清单

#include "include/driver/psram_v2.h"

功能说明

  • 初始化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

typedef uint32_t errcode_t;

使用说明

  • 作为uapi_psram_init、uapi_psram_suspend、uapi_psram_resume、uapi_psram_wait_hs_status的返回值类型

Enumerations

psram_id_t

typedef enum {
    PSRAM_ID_0,
    PSRAM_ID_1,
    PSRAM_ID_MAX = PSRAM_ID_1,
} psram_id_t;
枚举成员 取值 描述
PSRAM_ID_0 0 PSRAM编号0
PSRAM_ID_1 1 PSRAM编号1
PSRAM_ID_MAX 1 PSRAM编号最大值

Macros

ERRCODE_SUCC [SDK公共共享宏]

#define ERRCODE_SUCC                                        0UL

ERRCODE_FAIL [SDK公共共享宏]

#define ERRCODE_FAIL                                        0xFFFFFFFF