请教 怎么对地址总线的某一位赋值???

turtle_haha   2010-5-22 10:56 楼主
我的硬件是PXA270 通过16位数据总线连接到64MBYTE的FLASH P33,地址总线是26位

p33是由两块32M的flash组成的,在程序中不能同时访问上下两块FLASH的地址

而是需要有一个地址总线,即最高位的A25作为内部片选,选择当前访问的是BOTTOM 还是top flash

当地址总线A25为高电平时,访问TOP FLASH
当地址总线A25为低电平时,访问BOTTOM FLASH

请问,我怎么对地址总线赋值??地址总线A25的地址是多少??

我的FLASH 的物理地址是0x00000000
那么按照这样来算我的A25的地址是不是应该是 B: 0010 0000 0000 0000 0000 0000 0000
即0x2000000  

假设以上推断成立的话
那么我对该地址赋值
(*(VUINT16 *)(0x2000000 )) |= (0x01);

(*(VUINT16 *)(0x2000000 )) &= ~(0x01);
应该是正确的吧????

回复评论 (6)

要分的快进来啊
我要结贴了
点赞  2010-5-23 21:54
照着楼主的情况,
(*(VUINT16 *)(0x2000000 ))=0x01; //就是对TOP FLASH的0x00000000地址赋0x01
(*(VUINT16 *)(0x0000000 ))=0x01; //就是对BOTTOM FLASH的0x00000000地址赋0x01

不知道楼主明白没。
另外
(*(VUINT16 *)(0x2000000 )) |= (0x01);

(*(VUINT16 *)(0x2000000 )) &= ~(0x01);
这样赋值当然可以,不过你自己应该知道这是什么意思吧?
点赞  2010-5-24 09:28
你的A25是处理器的A25还是FLASH的A25?

一般来说,总会分配一个片选线给一个存储器.
像你所说的"A25",一般也是分配一条地址线. 这样你在访问对应地址范围时,自然会实现你说的"内部片选"逻辑.
点赞  2010-5-24 09:59
#define rNFDATATOP  (*(VUINT16 *)(0x2000000 ))
#define rNFDATABOTTOM (*(VUINT16 *)(0x0000000 ))

rNFDATATOP=0X01;
rNFDATATOP=0X01;
FLASH的读写,擦出是按行地址和列地址根据一定的时序进行的。LZ要看看具体的datasheet上面的说明。


点赞  2010-5-24 10:12
打酱油路过,接分
点赞  2010-5-24 11:15
引用: 引用 2 楼 sherlock_lai 的回复:
照着楼主的情况,
(*(VUINT16 *)(0x2000000 ))=0x01; //就是对TOP FLASH的0x00000000地址赋0x01
(*(VUINT16 *)(0x0000000 ))=0x01; //就是对BOTTOM FLASH的0x00000000地址赋0x01

不知道楼主明白没。
另外
(*(VUINT16 *)(0x2000000 )) |= (0x01)……

知道了
我理解错了
这个是对该地址的值进行赋值
点赞  2010-5-25 10:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复