现象描述:
1、问题直接现象是设备在环境温度较低时第一次上电可能出现读取DDR数据异常导致DSP跑飞,预热一段时间后再运行就没问题了;
2、在低温箱(10℃左右)中使用仿真器调试发现DDR读取异常时,“System Reset”之后DDR读取可恢复正常;
3、在低温环境下只运行DDR读写检查程序,问题不复现;
4、将DDR工作频率从667MHz降到500MHz,问题不复现;
5、降频后出现另一个问题,使用仿真器下载代码运行正常,DSP自动Boot也能运行起来,但从DDR中的AIF缓存Buffer读取数据异常,为2048Byte循环的乱数据。
使用的高速数据接口只有EMIF和AIF,相关信息如下:
DDR参数:
芯片型号:MT47H64M16HR-3
时钟频率:66MHz
配置位宽:16bit
测试DDR相关时序和信号质量,没发现明显问题,相关寄存器配置如下:
DDR_SDCFG = 0x00D3CA32;
DDR_SDRFC = 0x00000a29;
DDR_SDTIM1 = 0x4D246C9A;
DDR_SDRIM2 = 0x00993c42;
DDR_DDRPHYC = 0x50001906;
DDR_SDCFG = 0x0053CA32;
附件是DDR相关部分电路原理图,供参考。
AIF配置:
只配置了一个上行链路,传输两路30.72M的数据,有效数据速率2Gbit/s。
请大家帮忙支招,谢谢!