flash驱动编程及实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Norflash驱动编程及实验议程实验目的硬件原理软件原理问题与讨论实验目的学习Flash基本原理,熟悉对Flash的读写操作过程硬件原理Flash简介39VF160简介电路连接39VF160详细说明Flash简介Flash-ROM(闪存)已经成为了目前最成功、流行的一种固态内存,与EEPROM相比具有读写速度快,而与SRAM相比具有非易失、以及价廉等优势。而基于NOR和NAND结构的闪存是现在市场上两种主要的非易失闪存技术(本实验的对象是NORFLASH)。Intel于1988年首先开发出NORflash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。39VF160简介39VF160是SST公司推出的一种SuperFlash型的存储器芯片,属于SST公司并行闪速存储器系列产品中的多功能型闪速存储器(MultiPurposeFlash)。采用2.7—3.6V电源供电,可方便地应用于嵌入式系统的电路设计中。低功耗,在选通情况下是15mA,在非选通的情况下是4uA。SST39VF160由SST特有的高性能的SuperFlash技术制造而成,SuperFlash技术提供了固定的擦除和编程时间,与擦除/编程周期数无关。39VF160简介SST39VF160功能框图地址缓冲器和锁存器控制逻辑存储器Y-译码器I/O缓冲器和数据锁存器X-译码器WEOE#CE#储存器地址DQ15-DQ0电路连接SST39VF160的电路连接图电路连接SST39VF160引脚定义符号引脚名称功能A19~A0地址输入存储器地址。扇区擦除时,A19~A11用来选择扇区。块擦除时,A19~A15用来选择块。DQ15~DQ0数据输入/输出读周期内输出数据,写周期内输入数据。CE#片选为低电平时启动器件开始工作。OE#输出使能数据输出缓冲器的门控信号。WE#写使能控制写操作。Vdd电源供给电压。Vss地地NC不连接悬空引脚。其中,脚DQ6、DQ7为状态指示位。–DQ6:0与1转换是正在处于写入/擦除的算法周期,当停止转换时,内部操作完成。–DQ7:写入时,若读操作生成上次写入DQ7的数据的补码,编程完成后生成DQ7的真实数据;擦除时,DQ7产生“0”擦除后产生“1”。39VF160详细说明命令定义具体操作39VF160详细说明命令定义–SST39VF160的存储器操作由命令来启动。SST39VF160闪速存储器的读写时序与一般存储器的读写时序相同,当OE#和CE#信号同时为低电平时,可对芯片进行读操作;当WE#和CE#信号同时为低电平进行写操作。SST39VF160通过特定的指令代码可以完成字节、扇区或整体芯片的写入和擦除操作。操作命令定义如下表所示。39VF160详细说明命令指令定义命令时序第1个总线写周期第2个总线写周期第3个总线写周期第4个总线写周期第5个总线写周期第6个总线写周期地址数据地址数据地址数据地址数据地址数据地址数据写编程5555HAAH2AAAH55H5555HA0HWA数据扇区擦除5555HAAH2AAAH55H5555H80H5555HAAH2AAAH55HSax30H块擦除5555HAAH2AAAH55H5555H80H5555HAAH2AAAH55HBax50H芯片擦除5555HAAH2AAAH55H5555H80H5555HAAH2AAAH55H5555H10H软件ID入口5555HAAH2AAAH55H5555H90HCFI查询入口5555HAAH2AAAH55H5555H98H软件ID/CFI退出XXHF0h软件ID/CFI退出5555HAAH2AAAH55H5555HF0H•注:Sax用于扇区擦出,使用A19~A11地址线。Bax用于块擦出,使用A19~A15地址线。WA=编程字地址。39VF160详细说明具体操作–Flash存储器的操作包括对Flash的擦除和烧写,由前面所介绍的Flash存储器的工作原理可知,对Flash存储器的编程与擦除是与具体的器件型号紧密相关的,由于不同的厂商的Flash存储器在操作命令上可能会有一些细微的差别,Flash存储器的烧写、擦除程序一般不具有通用性,针对不同厂商、不同的型号的Flash存储器,程序应做相应的修改。本文以SST39VF160为例,其它的芯片编程方法与之类似。39VF160详细说明具体操作可以分为以下本个操作–擦除–烧写–状态检测39VF160详细说明–擦除oSST39VF160的存储空间为2MB,内部划分为块,每个块又分成16个扇区。SST39VF160的块大小为32K字,扇区大小为2K字。对于该芯片的擦除操作可以通过三种途径来实现。-整体擦除(ChipErase)-块擦除(BlockErase)-扇区擦除(SectorErase)39VF160详细说明-整体擦除(ChipErase)•SST39VF160包含芯片擦除功能,允许用户擦除整个存储器阵列,使其变为“1”状态。这在需要快速擦除整个器件时很有用。•芯片擦除操作通过在最新一个总线周期内执行一个6字节的命令---5555H地址处的芯片擦除命令(10H)时序来启动。在第6个WE#或CE#的上升沿(无论哪一个先出现上升沿)开始执行擦除操作。擦除过程中,只有触发位或数据查询位的读操作有效。芯片擦除过程中发布的任何命令都被忽略。39VF160详细说明-块擦除(BlockErase)•SST39VF160支持块擦除功能,统一对32K字的块执行擦除操作。块擦除操作通过在最新一个总线周期内执行一个6字节的命令时序---块擦除命令(50H)和块地址(BA)来启动。块地址在第6个WE#脉冲的下降沿锁存,命令50H在第6个WE#脉冲的上升沿锁存。内部擦除操作在第6个WE#脉冲后开始执行。擦除操作是否结束由数据查询位或触发位决定,块擦除操作过程中发布的任何命令都被忽略。39VF160详细说明-扇区擦除(SectorErase)•SST39VF160还支持片内的扇区擦除功能,其操作的单位为2K字的大小。扇区操作通过在最新一个总线周期内执行一个6字节的命令时序—扇区擦除命令(30H)和扇区地址(SA)来启动。扇区地址在第6个WE#脉冲的下降沿锁存,命令30H在第6个WE#脉冲的上升沿锁存。内部擦除操作在第6个WE#脉冲后开始执行。擦除操作是否结束由数据查询位或触发位决定,扇区擦除操作过程中发布的任何命令都被忽略。39VF160详细说明装载数据:AAH地址:5555H装载数据:55H地址:2AAAH装载数据:80H地址:5555H装载数据:AAH地址:5555H等待Tsce装载数据:55H地址:2AAAH装载数据:10H地址:5555H芯片擦除为FFFFH装载数据:AAH地址:5555H装载数据:55H地址:2AAAH装载数据:80H地址:5555H装载数据:AAH地址:5555H装载数据:55H地址:2AAAH装载数据:30H地址:SAX等待Tse扇区擦除为FFFFH装载数据:AAH地址:5555H装载数据:55H地址:2AAAH装载数据:80H地址:5555H装载数据:AAH地址:5555H装载数据:55H地址:2AAAH装载数据:50H地址:BAX等待Tbe块擦除为FFFFH芯片擦除流程扇区擦除流程块擦除流程39VF160详细说明–烧写oSST39VF160以字节形式进行编程。编程前,包含字的扇区必须完全擦除。首先执行三字节装载时序,用于软件数据保护。然后,装载字节地址和数据。在字节编程操作中,地址在CE#或WE#的下降沿(不论哪一个后产生下降沿)锁存。数据在CE#或WE#的上升沿(不论哪一个先产生上升沿)锁存。最后,执行内部编程操作,该操作在第4个CE#或WE#的上升沿出现(不论哪一个先产生上升沿)之后启动。编程操作一旦启动,将在20us内完成。o在编程操作过程中,只有数据查询位和触发位的读操作有效。在内部编程操作过程中,主机可以自由执行其他任务,该过程中,发送的任何命令都被忽略。39VF160详细说明烧写操作流程图开始装载数据:AAH地址:5555H装载数据:55H地址:2AAAH装载数据:A0H地址:5555H送入数据到目的单元等待查询位提示结束39VF160详细说明–状态检测oSST39VF160提供两种检测烧写和擦除操作的软件方法,以便优化系统的写周期。软件检测包括2个状态位:数据查询位(DQ7)和触发位(DQ6)。检测模式在WE#的上升沿后使能,WE#的上升沿用来启动内部的烧写或擦除操作。o非易失性写操作的结束与系统不同步,因此,数据查询位或触发位的读取可能与写周期结束同时发生。如果这样,系统就可能得到一个错误的结果,即有效数据与DQ7或DQ6发生冲突。为了防止错误的情况,当一个错误结果出现时,软件程序应当包含一个两次读被访问地址单元的循环。如果两次读取的值均有效,则器件已经完成了写周期,否则拒绝接收数据。39VF160详细说明–状态检测oSST39VF160提供两种检测烧写和擦除操作的软件方法,以便优化系统的写周期。软件检测包括2个状态位:-数据查询位(DQ7)-和触发位(DQ6)o检测模式在WE#的上升沿后使能,WE#的上升沿用来启动内部的烧写或擦除操作。39VF160详细说明-数据查询位(DQ7)•当SST39VF160正在执行内部烧写操作时,任何读DQ7的动作将得到真实数据的补码。一旦烧写操作结束,DQ7为真实的数据。•即使在内部烧写和擦除操作结束后紧接着出现在DQ7上的数据可能有效,其余的数据输出引脚上的数据也无效;只有在1us的时间间隔后执行了连续读周期,所得的整个数据总线上的数据才有效。在内部擦除操作过程中,读出的DQ7值为0。一旦内部擦除操作完成,DQ7的值为1。•对于烧写操作的第4个WE#(或CE#)脉冲的上升沿出现后,数据查询位有效。对于扇区/块擦除或芯片擦除,数据查询位在第6个WE#(或CE#)脉冲的上升沿出现后有效。39VF160详细说明数据查询状态检测流程图烧写/擦除启动读DQ7DQ7=真实数据?结束是否39VF160详细说明-和触发位(DQ6)•在内部烧写或擦除操作过程中,读取DQ6将得到1或0,即所得的DQ6在1和0之间变化。当内部烧写或擦除操作结束后,DQ6位的值不再变化。触发位在烧写操作的第4个WE#(或CE#)脉冲的上升沿后有效。对于扇区/块擦除或芯片擦除,触发位在第6个WE#(或CE#)脉冲的上升沿出现后有效。39VF160详细说明触发位状态检测流程图烧写/擦除启动读字节读相同的字节DQ6匹配?结束是否39VF160详细说明状态检测(补充)1.非易失性写操作的结束与系统不同步,因此,数据查询位或触发位的读取可能与写周期结束同时发生。如果这样,系统就可能得到一个错误的结果,即有效数据与DQ7或DQ6发生冲突。为了防止错误的情况,当一个错误结果出现时,软件程序应当包含一个两次读被访问地址单元的循环。如果两次读取的值均有效,则器件已经完成了写周期,否则拒绝接收数据。软件原理参考程序参考程序函数名称:sstSectorErase()函数功能:擦除指定的flash扇区.入口参数:扇区地址.返回值:OK擦除完全正确.ERROR有单元不能正确擦除.STATUSsstSectorErase(UINT16*pSector){inti;volatileUINT16*flashPtr=pSector;*((volatileUINT16*)SST_START_ADDR+SST_ADDR_UNLOCK1)=SST_DATA_UNLOCK1;//第1个总线写周期*((volatileUINT16*)SST_START_ADDR+SST_ADDR_UNLOCK2)=SST_DATA_UNLOCK2;//第2个总线写周期*((volatileUINT16*)SST_START_ADDR+SST_ADDR_UNLOCK1)=SST_SETUP_ERASE;//第3个总线写周期*((volatileUINT16*)SST_START_ADDR+SST_ADDR_UN

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功