打印

C6747使用AISgen生成工具配置 EMIFB SDRAM,不能访问。

[复制链接]
3956|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
按照C6747 BOOTLODER文档中的相关介绍,使用AIS BIN文件格式,可以通过配置EMIF CFG/TIM1/TIM2/RFC四个寄存器,正确配置后,即可通过开机引导方式完成SDRAM的初始化工作。
但是现在我已经按照C6747手册及SDRAM芯片手册配置好时序,但是SDRAM访问不成功。求教大侠指点一二啊。
使用的是美光的MT48LC2M32B2 6A3型号SDRAM,最高支持167MHz,目前我们硬件上是通过EMIFB与SDRAM连接,其中EMIFB时钟频率配置为100MHz.

芯片共4个Bank,2K行地址,256列地址,

相关时序如下图:




根据上图中时序的描述和我EMIFB频率为100MHz,我配置寄存器参数如下:
SDRAM SDCFG Reg:
[31--24] [23--16] [15--08] [07--00]
00000000 00000001 10000100 00100000 == 0x00018420
IBANK_POS:0x00, MSDRAM_ENABLE:0x00, BOOT_UNLOCK:0x00, SDREN:0x01, TIMUNLOCK:0x01,
NM:0x00, CL:0x02, IBANK:0x02, EBANK:0x00, PAGESIZE:0x00
--------------------------------------------------------------------
SDRAM SDTIM1 Reg:
[31--24] [23--16] [15--08] [07--00]
00001010 01001001 00100001 01001000 == 0x0A492148
T_RFC:0x05, T_RP:0x01, T_RCD:0x01, T_WR:0x01, T_RAS:0x04, T_RC:0x05, T_RRD:0x01
--------------------------------------------------------------------
SDRAM SDTIM2 Reg:
[31--24] [23--16] [15--08] [07--00]
00111000 00000110 00000000 00000100 == 0x38060004
T_RAS_MAX:0x07, T_XSR:0x06, T_CKE:0x04
//T_RAS_MAX = (tRAS_MAX/ SDRAM refresh rate) - 1) = 120k ns / 15.625us = 7.68 -1 = 7
--------------------------------------------------------------------
SDRAM SDRFC Reg:
[31--24] [23--16] [15--08] [07--00]
00000000 00000000 00000110 00011011 == 0x0000061B
LP_MODE:0x00, MCLKSTOP_EN:0x00, SR_PD:0x00, REFRESH_RATE:0x61B
//REFRESH_RATE=EClk*Tref/4096(rows) = 100Mhz*64/4096 = 1562.5 = 1563

AISgen中,ROMID检查后,读取后为D800K005,CPU输入时钟为25MHz,我配置的DSP工作频率为300MHz,SDRAM连接在EMIFB上面,配置频率为100MHz,其它LPSC、PINMUX主要是配置了一下SPI0、SPI1、EMIFA、EMIFB、GIOP5器件的相关引脚及电源打开。
硬件引导方式为SPI0 NorFlash,已经验证Boot引导成功,在线Debug读取PLL、EMIF等器件寄存器,已经按引导方式配置完成。
EMIB寄存器各参数与AISgen中参数一致。现在通过地址直接访问的方式发现SDRAM读写不正确,通过CCS memory browser发现SDRAM地址中数据为零,直接在CCS memory browser中修改SDRAM地址也不成功。
通过将EMIB地址线等等配置成GPIO方式,拉高拉低的方式验证,CPU与SDRAM管脚连接没有问题。



求教各位,是我在AISgen中参数EMIFB寄存器参数配置不正确?还是什么原因导致SDRAM访问不正确的?还有什么办法可以排查问题出在哪里?

谢谢大家的帮忙!!!



相关帖子

沙发
zhangmangui| | 2015-1-21 23:22 | 只看该作者
你好   你先在线调试  看看能不能正常访问外扩SDRAM
确定可以了之后   看看上电引导启动后能不能将代码搬移到外扩SDRAM中运行
是不是还要修改一下GEL文件呢

使用特权

评论回复
板凳
一叶飘飞|  楼主 | 2015-1-22 22:19 | 只看该作者
zhangmangui 发表于 2015-1-21 23:22
你好   你先在线调试  看看能不能正常访问外扩SDRAM
确定可以了之后   看看上电引导启动后能不能将代码搬移 ...

在线访问是有问题的。SDRAM不是需要初始化吗?我在线调试,使用寄存器方法初始化它的话,还是一样的效果,没有什么响应。这两天我们用示波器测量了读写时序,感觉问题不大,和文档描述一致。

另外的话,GEL文件?这个我没用过。难道有可以初始化SDRAM的GEL文件?

使用特权

评论回复
地板
zhangmangui| | 2015-1-22 22:38 | 只看该作者
一叶飘飞 发表于 2015-1-22 22:19
在线访问是有问题的。SDRAM不是需要初始化吗?我在线调试,使用寄存器方法初始化它的话,还是一样的效果 ...

只需要配置一下EMIF接口就可以啦   但是你如果看到了时序
那就说明EMIF配置没问题了    重点看看cs脚是不是片选了
关于GEL  工程中添加了就可以啦   

使用特权

评论回复
5
一叶飘飞|  楼主 | 2015-1-23 19:13 | 只看该作者
zhangmangui 发表于 2015-1-22 22:38
只需要配置一下EMIF接口就可以啦   但是你如果看到了时序
那就说明EMIF配置没问题了    重点看看cs脚是 ...

嗯,今天发现硬件连线的时候,CAS,RAS,WE三个信号线连接错位了……,然后导致SDRAM访问不正常。

今天飞线后,到是可以访问了,只剩下时序问题了。

使用特权

评论回复
6
一叶飘飞|  楼主 | 2015-1-23 19:34 | 只看该作者
有个问题还需要请教一下啊,芯片手册里写着Refresh count是4k,Row addressing是2K,Refresh period(4096 rows)最大时间是64ms.



看C6747里的话,我的连接方法,寻址空间是32MB(上图标黄的那条),但是我的SDRAM实际范围是8MB,那我要计算Refresh Rate的话应该如何计算?

The value of this field may be calculated using the following equation:
REFRESH_RATE = SDRAM clock frequency × SDRAM refresh rate
Assuming 64 ms (tREF), 8192 rows (213; 13 address lines), SDRAM refresh rate = 64/8192 = 7.8 μs.
Therefore, the following results assuming 133-MHz SDRAM clock frequency.
REFRESH_RATE = 133 MHz × 7.8 μs = 1037.4 Therefore, REFRESH_RATE = 1038 = 40Eh
是应该按照:REFRESH_RATE = 100MHz * (64ms/4096)= 1562.5 = 1562 = 61B?
还是说因为我的SDRAM只有2K行地址,刷新4K需要64ms,CPU实际上会自动刷新8K行地址的?我的实际刷新率应当至少是1562/2?

使用特权

评论回复
7
一叶飘飞|  楼主 | 2015-1-24 17:38 | 只看该作者
现在的问题有点奇葩了,Refersh_rate要配成2*TRFC了,其它时序参数需要在正确参数的基础上延迟三个CLK才能在某些时候读写成功。



难道使用SDRAM给定参数值配置后是不可用的?还是因为我们的CAS,RAS,WE是飞线的原因导致信号质量太差?或额干扰?或者因为各引脚上的排阻不合适导致的。



不知道仁兄硬件电路上,EMIF与SDRAM之间加排阻了吗?还是直连的?不知道排阻或飞线会对数据传送有多大影响?

使用特权

评论回复
8
edishen| | 2015-1-27 23:11 | 只看该作者
一叶飘飞 发表于 2015-1-24 17:38
现在的问题有点奇葩了,Refersh_rate要配成2*TRFC了,其它时序参数需要在正确参数的基础上延迟三个CLK才能 ...

高手来救你了  楼主    快快来交流

使用特权

评论回复
9
edishen| | 2015-1-27 23:12 | 只看该作者
一叶飘飞 发表于 2015-1-24 17:38
现在的问题有点奇葩了,Refersh_rate要配成2*TRFC了,其它时序参数需要在正确参数的基础上延迟三个CLK才能 ...

我觉得加排阻不是必要的吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝