Thread 中讨论的其他器件: SYSBIOS
大家好、
我对我们在基于 AM6548的定制电路板上使用的 LPDDR4存储器的读取模式寄存器内容有疑问。
目的是读取包含制造商 ID 信息的 MR5寄存器。
因此、我们可以使用多家制造商(例如 Micron、ISSI 等)提供的各种 DDR 模块(但具有相同特性)、并在需要时为其提供不同的 DDR 控制器配置。
我的配置为:
CCS 版本:9.2.0.00013
PDK - pdk_am65xx_1_0_7 (processor_sdk_rtos_am65xx_6_03_00_106)
SYSBIOS - 6.76.3.01
我想通过向 LPDDR4模块发出模式寄存器读取命令来执行 MR5模式寄存器的读取。
为此、我在 PDK 的\packages/ti\board\src\cbsKeystone3\board_DDR.c 文件中使用了对 DDRCTL_MRCTRL0、DDRCTL_MRCTRL1和 DDRCTL_MRSTAT 寄存器的写入/读取。
具体而言、我 在调用 Board_DDRInit (void)函数内的 DDR_Controller_PHY_Config ()后输入了以下行:
while(HW_RD_REG32(CSL_DDRSS0_CTL_CFG_BASE + CSL_EMIF_CTLCFG_MRSTAT) & 0x01) {}
HW_WR_REG32(CSL_DDRSS0_SS_CFG_BASE + CSL_EMIF_CTLCFG_MRCTRL0,0x00000011);
boardDDRDelay();
while(HW_RD_REG32(CSL_DDRSS0_CTL_CFG_BASE + CSL_EMIF_CTLCFG_MRSTAT) & 0x01) {}
HW_WR_REG32(CSL_DDRSS0_SS_CFG_BASE + CSL_EMIF_CTLCFG_MRCTRL1,0x00000500);
boardDDRDelay();
while(HW_RD_REG32(CSL_DDRSS0_CTL_CFG_BASE + CSL_EMIF_CTLCFG_MRSTAT) & 0x01) {}
HW_WR_REG32(CSL_DDRSS0_SS_CFG_BASE + CSL_EMIF_CTLCFG_MRCTRL0,0x80000011);
boardDDRDelay();
while(HW_RD_REG32(CSL_DDRSS0_CTL_CFG_BASE + CSL_EMIF_CTLCFG_MRSTAT) & 0x01) {}
s32DdrId = HW_RD_REG32(CSL_DDRSS0_CTL_CFG_BASE + CSL_EMIF_CTLCFG_MRCTRL1) & 0xFF;
在这里、我首先等待之前的模式寄存器读取命令完成、然后在命令被设定为 MRR 且列为零的情况下配置 MRCTRL0寄存器。
地址(0x5)被载入 MRCTRL1 (位[15:8])、然后我发出模式寄存器读取命令并从 MRCTRL1 寄存器读取结果。
在 Board_DDRInit (void)中成功完成 DDR 培训后、我还尝试插入了相同的行。
但是、我始终从 CSL_EMIF_CTLCFG_MRCTRL1寄存器中获取零值、读取数据位中的零值([7:0])。
我们当前使用的 Micron LPDDR4已正确配置、我们已成功执行内存测试、并且正在从 DDR 运行代码、不会出现任何问题。
有人能不能给我一个提示、我在这里做错了什么?
此致、
米兰