51单片机控制Nand Flash读写的两种方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机控制N a n d F l a s h读写的两种
方法
本文叙述了51单片机控制N a n d F l a s h读写的两种方法:总线方式和I/O模拟方式,并通过逻辑分析仪验证这两种方法均是符合N a n d F l a s h的读写时序的,最
后通过逻辑分析仪观察和汇编分析给出了这两种方法读效率的对比。
第一章 单片机与N a n d F l a s h总线连接 1N a n d F l a s h的总线时序分析
图1-1N a n d F l a s h总线操作要求
将N a n d F l a s h总线操作分为三类:写命令、写地址和数据操作(读数据与写数
据仅仅差别在n R和n W引脚,而且这两个引脚无法进行编址,故归为一类)。根
据这三类的时序要求,选出引脚在这三类中变化的进行编址,n E引脚总是要求
低电平,不符合要求;A L和C L在这三类操作中有时是低电平有时是高电平,符
合要求。
2单片机读写外部数据存储器的时序分析
由图2和图3可以知道,51单片机在进行外部数据读写操作时要求A L E信号为低电平,这与N a n d F l a s h总线操作片选信号n E要求相同,因此可以将A L E与
n E相连。为了能够利用N a n d F l a s h的保护功能,将n W P引脚与单片机的一个I/O 口相连。
3N a n d F l a s h与单片机的连接及编址
因为对于单片机仅仅M O V X 指令才能访问外部数据存储器,又因为单片机P 0口已经作为数据口与单片机相连,因此只能使用拥有高8位地址的P 2口。P 2口仅仅在16位地址操作中才有用,因此编址采用16位形式,用不到的补零。如表2所示,可知N a n d 的命令端口地址为:0×6000h ,地址端口地址为:o x A o o o h ,数据端口地址为:0×2000h 。在C 程序中声明如下:
第二章 单片机与N a n d F l a s h I /O 直接
相连
1.N a n d 与单片机的连接
图1-1描述了N a n d F l a s h 操作的时序要求,根据该要求可以采用单片机的I /O 口与N a n d F l a s h 直接相连,通过I /O 口模拟的方式来控制N a n d F l a s h 的操作。
2.访问N a n d的指令编码
单片机与N a n d连接如图2-1所示,再根据图1-1便可以得到N a n d操作的指令编
码。
(图2-5)、读数据(图2-6)的C语言代码。
第三章 两种方法的检测
1 N a n d 写入命令时序:
A376543210 N a n d C L E#C E#W E A L E#R E R n B#W P
100->10111
表3-1-1逻辑分析
悬空为0,则当逻辑分析仪A3上显示:8E->A E时 表示向N a n d写入命令,图3-1-2表示用总线方式写入命令10h,图3-1-3表示用I/O方式写入80h。
2N a n d写入地址时序:
N a n d C L E#C E#W E A L E#R E R n B#W P
000->11111
表 3-2-1逻辑分析
悬空为0,则当逻辑分析仪A3上显示:1E->3E时 表示向N a n d写入地址。图3-2-2与图3-2-3分表表示利用总线方式与I/O模拟方式写入地址50h的时序图。
3读取N a n d数据时序:
A376543210 N a n d C L E#C E#W E A L E#R E R n B#W P
00101->011
表3-3-1逻辑分析
悬空为0,则当逻辑分析仪A3上显示:2E->26时 表示读取N a n d中的数据。图3-3-2表示采用总线方式读取N a n d数据F F h,图3-3-3表示采用I/O方式读取N a n d数据B B h。
4向N a n d中写入数据时序:
N a n d C L E#C E#W E A L E#R E R n B#W P
000->10111
悬空为0,则当逻辑分析仪A3上显示:0E->2E时 表示向N a n d写入数据。图3-4-2表示用总线方式向N a n d中写入05h,图3-4-3表示用I/O方式向N a n d中写入B B h。
第四章 两种方法的比较—以读数为例 1.逻辑分析仪检测
图4-1-1逻辑分析仪检测结果
图4-1-1给出了读取一个字节时,两种方法所花的时钟周期数,可以明显看书采
用I/O方式要比采用总线方式快很多。
2.从汇编代码角度分析
图4-2-1总线读C语言代码
图4-2-2总线汇编语言源代码
图4-2-2的汇编代码是由图4-2-1C语言代码生成的。由该汇编代码可以得出理
论上循环一次所花的时钟周期数是:67个,实际测得是61个。
图4-2-3I/O方式C语言代码
图4-2-4I/O方式汇编语言代码
图4-2-3C语言所生成的汇编代码如图4-2-4所示。该汇编代码所需要的时钟周
期数是:43个时钟周期,实际测得是47个.