用C5509A读写外部SDRAM,例程里面souraddr = (int *)0x40000;deminaddr = (int *)0x41000;我把目的地址改为0x50000,发现从0x40000到0x50000只有最后一个数据,也就是地址为0x50000的数据是错的,后来发现不管怎么修改起始地址和目的地址,只要跨越128页数据页边界,就会出现这个问题,是地址指针(int *souraddr,*deminaddr;)定义有问题吗?
main()
{
unsigned int error=0,i;
/*初始化CSL库*/
CSL_init();
puts("Start SDRAM test");
/*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++ ;
//for(i=0;i<100;i++);
}
/*读出SRAM中的数据*/
souraddr = (int *)0x40000;
datacount = 0;
while(souraddr<deminaddr)
{
databuffer[datacount++] = *souraddr++;
if(databuffer[datacount-1]!=(datacount-1))
{
error++;
//printf("%d ",datacount-1);
}
//for(i=0;i<100;i++);
}
if(error==0)
printf("SDRAM test completed! No Error!");
i=0;
while(1);
}