现在flash和ddr2都可以读写了,但是都是八位的,每次都只改变最后八位数值,但是前面24位随机的,有什么函数是可以一次把32位都写成我想要的
Tony Tang:
flash只通了8位可以理解为可能配置错了,
但DDR2接口至少为16bit,怎么会只有8bit,莫非DQS1,DQM1接错了。
这跟函数没有任何关系。
我怀疑你是不是没搞清楚在程序里地址该如何递增啊?
lingming kong:
回复 Tony Tang:
额,晚上回去贴程序啊,不过我的flash是八位的,ddr2配的是16位的,看来ddr2估计是错了啊
lingming kong:
回复 lingming kong:
这是我的DDR2的程序,FLASH用的八位FLASH 是不是每次只能写八位?DDR2开的是16位的但是也是只能写8位,初始地址0XE0000000,可以在VIEW MEMORY直接修改值,是不是意味着已经初始化成功?请教大家
Tony Tang:
回复 lingming kong:
你定义的指针是char型,不是8位是那又该是多少呢?
你自己上面对寄存器的访问定义是 #define DMCSTAT ( *(int*)(0x78000004)),就不会比较为什么不同吗?
void test_ddr2(){ flash_ptr=(unsigned char *)ddr2_base;
for(i=0;i<10;i++) { write_ddr2(flash_ptr++,i); } flash_ptr=(unsigned char *)ddr2_base; for(i=0;i<10;i++) { read_data[i]=read_ddr2(flash_ptr++); if(read_data[i]!=i) { errnum++; } } printf("The error number of test is %d(word)\n",errnum);
lingming kong:
回复 Tony Tang:
此处用char的原因是希望地址每次加一个,如果定义无符号int型,能实现32位的写,但是地址每次加4,怎么样处理呢?
lingming kong:
回复 Tony Tang:
这样看memory改了32值感觉对了,但是每次都加四,怎么样使地址每次都加1?
Tony Tang:
回复 lingming kong:
这是基本的C语言编程,改成(unsigned int *)不就行了吗?
lingming kong:
回复 Tony Tang:
看到图片了吗?我改后地址不在是一次加1,是加四,因为改成int后,四个字节
Tony Tang:
回复 lingming kong:
一个32bit就是4字节,当然要加4,这不就是你要的一次写32bit吗?
lingming kong:
回复 Tony Tang:
额,一个地址只能存八位的数据吗?迷糊了,嘿嘿