PSRAM 使用注意事项
RTL8773EWE-VP 为 RTL8773EWE 的内置 PSRAM 版本,内置的 PSRAM 型号为 W955D8MBYA,通过 LDO_AUX2 供电。 PSRAM 对应的 Pin 为:P7_0~P7_6、SPIC1_WP#、SPIC1_SO、SPIC1_CSN、SPIC1_SI、SPIC_SCK、SPIC_HOLD#, 因此,使用 PSRAM 时请勿额外配置这些 Pin。
PSRAM 使用流程
SDK 为支持该 PSRAM,封装了一些 API 供开发人员使用。
PSRAM 初始化
调用
watch_wb_opi_psram_init()
。
PSRAM 模式配置设定和退出
在进出 DLPS 时,为满足不同程度的低功耗需求,可以对 PSRAM 进行如下三种模式的配置:
Standby:数据可以保存
Half Sleep:部分数据可以保存
Powerdown:数据不可以保存
在进入 DLPS 时可以在
app_dlps_enter_callback()
中调用接口:bool fmc_psram_enter_lpm(FMC_PSRAM_IDX_TYPE idx, FMC_PSRAM_LPM_TYPE mode);配置实例:
fmc_psram_enter_lpm(FMC_PSRAM_IDX1, FMC_PSRAM_LPM_STANDBY_MODE);fmc_psram_enter_lpm(FMC_PSRAM_IDX1, FMC_PSRAM_LPM_HALF_SLEEP_MODE);fmc_psram_enter_lpm(FMC_PSRAM_IDX1, FMC_PSRAM_LPM_DEEP_POWER_DOWN_MODE);在退出 DLPS 时可以在
app_dlps_exit_callback()
中调用接口:bool fmc_psram_exit_lpm(FMC_PSRAM_IDX_TYPE idx, FMC_PSRAM_LPM_TYPE mode);配置实例:
fmc_psram_exit_lpm(FMC_PSRAM_IDX1, FMC_PSRAM_LPM_STANDBY_MODE);fmc_psram_exit_lpm(FMC_PSRAM_IDX1, FMC_PSRAM_LPM_HALF_SLEEP_MODE);fmc_psram_exit_lpm(FMC_PSRAM_IDX1, FMC_PSRAM_LPM_DEEP_POWER_DOWN_MODE);
PSRAM 刷新区域设定
该 PSRAM 支持在 Standby 或 Half Sleep 模式下刷新不同区域,可以在进入 DLPS 之前配置要刷新的区域,接口为:
bool fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX_TYPE idx, FMC_PSRAM_WB_PARTIAL_ARRAY_REFRESH partial);配置实例:
fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX1, FMC_PSRAM_WB_REFRESH_FULL);fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX1, FMC_PSRAM_WB_REFRESH_BOTTOM_1_2);fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX1, FMC_PSRAM_WB_REFRESH_BOTTOM_1_4);fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX1, FMC_PSRAM_WB_REFRESH_BOTTOM_1_8);fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX1, FMC_PSRAM_WB_REFRESH_NONE);fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX1, FMC_PSRAM_WB_REFRESH_TOP_1_2);fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX1, FMC_PSRAM_WB_REFRESH_TOP_1_4);fmc_psram_wb_set_partial_refresh(FMC_PSRAM_IDX1, FMC_PSRAM_WB_REFRESH_TOP_1_8);
FMC_PSRAM_WB_REFRESH_BOTTOM_1_8
: 从下往上,零开始算的8分之1区域。
FMC_PSRAM_WB_REFRESH_TOP_1_8
: 从上往下,最高点往下减的8分之1区域。
FMC_PSRAM_WB_REFRESH_FULL
: SDK 默认配置。
PSRAM 完全掉电和上电
如果需要在进入 DLPS 下给 PSRAM 从电源处完全掉电,可以在需要掉电时(比如熄屏)使用如下接口,分别配置电源与 Pad:
void app_pmu_handle_ldo_aux2(bool enable); bool fmc_psram_set_pad_config_for_psram_power_off(FMC_PSRAM_IDX_TYPE idx, bool enter_lpm);备注
在恢复使用 PSRAM 时,需先给 Pad 上电再给 ldo_aux2 上电,最后在稳定电源的必要延时后,重新初始化 PSRAM。 这种方式和
FMC_PSRAM_LPM_DEEP_POWER_DOWN_MODE
的区别是初始化有严格的时间顺序要求,所以上电的显示会有时延。配置实例:
掉电:
app_pmu_handle_ldo_aux2(DISABLE); fmc_psram_set_pad_config_for_psram_power_off(FMC_PSRAM_IDX1, true);上电初始化:
fmc_psram_set_pad_config_for_psram_power_off(FMC_PSRAM_IDX1, false); app_pmu_handle_ldo_aux2(ENABLE); platform_delay_us(150); watch_wb_opi_psram_init();
功耗图表
DLPS 状态下测量 PSRAM 不同模式的功耗整理如下:
PSRAM 模式 |
刷新区域设定 |
电流(uA) |
PSRAM 模式 |
刷新区域设定 |
电流(uA) |
PSRAM 模式 |
电流(uA) |
---|---|---|---|---|---|---|---|
Standby |
Full Array |
40 |
Hybrid Sleep |
Full Array |
18 |
Deep power down |
0.2 |
Standby |
Bottom 1/2 Array |
37 |
Hybrid Sleep |
Bottom 1/2 Array |
15 |
ldo_aux2 power down |
0 |
Standby |
Bottom 1/4 Array |
35 |
Hybrid Sleep |
Bottom 1/4 Array |
13 |
||
Standby |
Bottom 1/8 Array |
34 |
Hybrid Sleep |
Bottom 1/8 Array |
12 |
||
Standby |
Top 1/2 Array |
37 |
Hybrid Sleep |
Top 1/2 Array |
14 |
||
Standby |
Top 1/4 Array |
35 |
Hybrid Sleep |
Top 1/4 Array |
13 |
||
Standby |
Top 1/8 Array |
34 |
Hybrid Sleep |
Top 1/8 Array |
12 |
ESD 环境 PSRAM 受干扰问题
-
HW 建议处理方法
确保单板 GND 和机壳金属可靠连接,建议使用导电布多点连接。
5V 输入需要加 TVS ,clamping voltage 建议选用 10V 以下。
5V 输入电路建议增加过压保护电路。
-
SW 建议恢复流程
ESD 静电测试时有一定几率会影响到芯片内置 PSRAM 的寄存器设定和数据,在数据异常后 (注意 “备注” 中的情况) 可以通过以下流程进行恢复:
调用
fmc_psram_wb_set_initial_latency(FMC_PSRAM_IDX_TYPE idx)
,对寄存器进行重新设定。 这个适用于静电只损坏到了寄存器,此时也会影响读出的数据,该情况下,重设寄存器后,可以读出正确数据。如果重设寄存器后数据仍然异常,则需要对PSRAM进行重写。