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

关于C6713B EMIF问题?

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到各自的地址上。

赞(0)
未经允许不得转载:TI中文支持网 » 关于C6713B EMIF问题?
分享到: 更多 (0)