请教一下合众达5509 访问sdram 的程序疑问?
dram 片选ce0,4M*16以下是部分程序:
main()
{
/*初始化CSL库*/
CSL_init();
/*EMIF为全EMIF接口*/
CHIP_RSET(XBSR,0x0a01);
/*设置系统的运行速度为144MHz*/
PLL_config(&myConfig);
/*初始化DSP的外部SDRAM*/
EMIF_config(&emiffig);
/*向SDRAM中写入数据*/
souraddr =(int *)0x40000;
deminaddr = (int *)0x41000;
while(souraddr<deminaddr)
{
*souraddr++ = datacount;
datacount++ ;
}
,,,,,,,,,,
.........
以上程序读写sdram 都是正确的 如图1
但是 如果我把字地址 改成
souraddr =(int *)0x200000;
deminaddr = (int *)0x201000;
memory空间数据 如图2
问题 1:请问这是什么原因呢,如上?
问题 2 :因为sdram是4M*16的 占用了 ce0 ce1空间(好像也占用了点ce2),硬件片选是接的ce0, 当读写占用的ce1空间地址的时候此刻emif的配置函数中 不用管ce1?ce0一直是使能的吗?
问题3:ce0,ce1,ce2是不是可以同时使能呢?
朋友好好看看《TMS320VC5509 DSP Extenal Memory Interface(EMIF) Reference Guide(SPRU670)》这个文档吧 你要确认SDRAM是外扩到那个CEx区的 然后确定他的起始地址和最大寻址范围
记得0x200000是不是已经到了下一个区了 这个基地址开始应该不是对SDRAM操作了吧
还有就是在CCS中要注意区分字地址和字节地址之分
页:
[1]