TI中文支持网
TI专业的中文技术问题搜集分享网站

现在flash和ddr2都可以读写了,但是都是八位的

现在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:

额,一个地址只能存八位的数据吗?迷糊了,嘿嘿

赞(0)
未经允许不得转载:TI中文支持网 » 现在flash和ddr2都可以读写了,但是都是八位的
分享到: 更多 (0)