关于单片机XBYTE和NAND FLASH地址问题综述

在一般的读写外部RAM的程序中,经常看到这样的句子:

   XBYTE[address]=data   写数据

   data=XBYTE[address]   读数据

采用XBYTE后,就不用顾及其时序,就是说,读写数据的时候,WR和RD怎么都不用用程序去控制。

读写外部RAM的程序,不需关注WR和RD端口的控制。

#define W_DATA XBYTE[0x1000]

W_DATA=0X55;

上面语句转为汇编表示如下:

mov  dptr,#1000h

mov  a,#55h

movx @dptr,a

因为对于单片机仅仅MOVX指令(16位指令)才能访问外部数据存储器,又因为单片机P0口已经作为数据口与单片机相连,因此只能使用拥有高8位地址的P2口,且P2口仅仅在16位地址操作中才有用,因此编址采用16位形式,用不到的补零。

而对于Nandflash访存操作XBYTE[1000]中的地址是由硬件电路的连线所决定的,一般来说flash的操作分为命令、地址、数据,而这三个操作是由ALE、CLE信号(引脚)来区别的,一般这两个引脚会与单片机P2口相连接。ALE、CLE信号如下:(0,1)写命令、(1,0)写地址、(0,0)写数据,因此ALE、CLE与P2口连接情况决定了Nand的命令端口、地址端口和数据端口。

例如若ALE与P2.7,CLE与P2.6,WP与P2.5相连,且由于P2口对应XBYTE的高位,因此可知Nand的命令端口地址为:0x6000(01100000),地址端口地址为:0xA000(10100000),数据端口地址为:0x2000(00100000)。

 

Nandflash 的存储结构如下(不同的flash的行、列数不同):
(上传不了图片。。)

 

Flash共分位64K个行(页),2K+64个列。其中每页含2K+64个字节,每列1个字节。下图Flash容量为64K*(2112)= 132MB。

其访存时的4个地址序列中,A0-A11(2048)个地址确定列,A12-A27(65536)确定页也就是行,这样就能确定所要访问的字节地址了。

例如,若想访问第3页的第1列的数据,则4个地址序列分别为:0x80(A0-A7),0x00(A8-A11),0xc0,0x00

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值