1.C6713B 片外CE1空间,设置8bit EMIF;
2.unsigned int* p;
p=(unsigned Int*)0x90000000;
p[0x5555] = 0xaa;
想问一下,p应该是一个指向32bit的指针,然后赋值0xaa(我理解是赋值0x000000aa),对应外flash地址0x5555,但是外部flash是8bit。感觉有点矛盾,求解惑。
Tony Tang:
如果CE1接的是NOR flash,这样操作是不合理的,因为nor flash的写操作要按命令顺序操作,而不能顺序操作,如果是读是可以的。同时地址 0x5555是不是应该*4,因为是int型。
guixin sun:
回复 Tony Tang:
没有明白什么意思。
我在说一下我的意思吧。现在就是CE1外接一个8-bit FLASH,然后我想向FLASH里面0x5555写8bit数据0xaa,我觉得应该定义成8-bit的指针赋值,但是现在定义指针是int型的,结果也是对的,所以不是很明白。
Tony Tang:
回复 guixin sun:
写int型,会连续写出4个字节,第一个字节总会写进去的,后面的会被忽略,这就是你看到为什么也能写正确。
当然我觉得改成字节型指针更合理一些。
guixin sun:
回复 Tony Tang:
按照这样的话,连续写4次,那这样int指针写8bit是不是就不能按照我想的第一次字节写到0x5555,第二次字节写到0x2AA。而是第一次字节写到0x5555(有三次也写出,但是被忽略),然后第五次字节写到0x2AA。
但是程序中用int指针写8bit,确实是第一次字节写到0x5555,第二次字节写到0x2AA。
Tony Tang:
回复 guixin sun:
上面提供的代码里没有写第二次,不知道第二次是如何写的。
另外,改成字节型指针吧。
guixin sun:
回复 Tony Tang:
unsigned int* p;
p=(unsigned Int*)0x90000000;
p[0x5555] = 0xaa;
p[0x2AAA] = 0x55;
程序大概就是这样,就是想连续写0xaa和0x55到各自的地址上。