好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

flash驱动编程及实验.ppt

32页
  • 卖家[上传人]:豆浆
  • 文档编号:2019264
  • 上传时间:2017-07-18
  • 文档格式:PPT
  • 文档大小:292KB
  • / 32 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Nor flash驱动编程及实验,议程,实验目的硬件原理软件原理问题与讨论,实验目的,学习Flash基本原理,熟悉对Flash的读写操作过程,硬件原理,Flash简介39VF160简介电路连接39VF160详细说明,Flash简介,Flash-ROM(闪存)已经成为了目前最成功、流行的一种固态内存,与 EEPROM 相比具有读写速度快,而与 SRAM 相比具有非易失、以及价廉等优势而基于 NOR 和 NAND 结构的闪存是现在市场上两种主要的非易失闪存技术(本实验的对象是NOR FLASH) Intel 于 1988 年首先开发出 NOR flash 技术,彻底改变了原先由 EPROM 和 EEPROM 一统天下的局面39VF160简介,39VF160是SST公司推出的一种Super Flash型的存储器芯片, 属于SST公司并行闪速存储器系列产品中的多功能型闪速存储器(MultiPurpose Flash)采用2.7—3.6V电源供电,可方便地应用于嵌入式系统的电路设计中低功耗,在选通情况下是15mA,在非选通的情况下是4uASST39VF160由SST特有的高性能的SuperFlash技术制造而成,SuperFlash技术提供了固定的擦除和编程时间,与擦除/编程周期数无关。

      39VF160简介,SST39VF160功能框图,电路连接,SST39VF160的电路连接图,电路连接,SST39VF160引脚定义,其中,脚DQ6、DQ7为状态指示位DQ6:0与1转换是正在处于写入/擦除的算法周期,当停止转换时,内部操作完成DQ7:写入时,若读操作生成上次写入DQ7的数据的补码,编程完成后生成DQ7的真实数据;擦除时,DQ7产生“0”擦除后产生“1”39VF160详细说明,命令定义具体操作,39VF160详细说明,命令定义SST39VF160的存储器操作由命令来启动SST39VF160闪速存储器的读写时序与一般存储器的读写时序相同,当OE#和CE#信号同时为低电平时,可对芯片进行读操作;当WE#和CE#信号同时为低电平进行写操作SST39VF160通过特定的指令代码可以完成字节、扇区或整体芯片的写入和擦除操作操作命令定义如下表所示39VF160详细说明,命令指令定义,注:Sax用于扇区擦出,使用A19~A11地址线Bax用于块擦出,使用 A19~A15地址线WA=编程字地址39VF160详细说明,具体操作Flash存储器的操作包括对Flash的擦除和烧写,由前面所介绍的Flash存储器的工作原理可知,对Flash存储器的编程与擦除是与具体的器件型号紧密相关的,由于不同的厂商的Flash存储器在操作命令上可能会有一些细微的差别,Flash存储器的烧写、擦除程序一般不具有通用性,针对不同厂商、不同的型号的Flash存储器,程序应做相应的修改。

      本文以SST 39VF160为例,其它的芯片编程方法与之类似39VF160详细说明,具体操作可以分为以下本个操作擦除烧写状态检测,39VF160详细说明,擦除SST39VF160的存储空间为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详细说明,39VF160详细说明,烧写SST39VF160以字节形式进行编程编程前,包含字的扇区必须完全擦除首先执行三字节装载时序,用于软件数据保护然后,装载字节地址和数据在字节编程操作中,地址在CE#或WE#的下降沿(不论哪一个后产生下降沿)锁存数据在CE#或WE#的上升沿(不论哪一个先产生上升沿)锁存最后,执行内部编程操作,该操作在第4个CE#或WE#的上升沿出现(不论哪一个先产生上升沿)之后启动。

      编程操作一旦启动,将在20us内完成在编程操作过程中,只有数据查询位和触发位的读操作有效在内部编程操作过程中,主机可以自由执行其他任务,该过程中,发送的任何命令都被忽略39VF160详细说明,烧写操作流程图,39VF160详细说明,状态检测SST39VF160提供两种检测烧写和擦除操作的软件方法,以便优化系统的写周期软件检测包括2个状态位:数据查询位(DQ7)和触发位(DQ6)检测模式在WE#的上升沿后使能,WE#的上升沿用来启动内部的烧写或擦除操作非易失性写操作的结束与系统不同步,因此,数据查询位或触发位的读取可能与写周期结束同时发生如果这样,系统就可能得到一个错误的结果,即有效数据与DQ7或DQ6发生冲突为了防止错误的情况,当一个错误结果出现时,软件程序应当包含一个两次读被访问地址单元的循环如果两次读取的值均有效,则器件已经完成了写周期,否则拒绝接收数据39VF160详细说明,状态检测SST39VF160提供两种检测烧写和擦除操作的软件方法,以便优化系统的写周期软件检测包括2个状态位:数据查询位 (DQ7)和触发位 (DQ6)检测模式在WE#的上升沿后使能,WE#的上升沿用来启动内部的烧写或擦除操作。

      39VF160详细说明,数据查询位 (DQ7)当SST39VF160正在执行内部烧写操作时,任何读DQ7的动作将得到真实数据的补码一旦烧写操作结束,DQ7为真实的数据即使在内部烧写和擦除操作结束后紧接着出现在DQ7上的数据可能有效,其余的数据输出引脚上的数据也无效;只有在1us的时间间隔后执行了连续读周期,所得的整个数据总线上的数据才有效在内部擦除操作过程中,读出的DQ7值为0一旦内部擦除操作完成,DQ7的值为1对于烧写操作的第4个WE#(或CE#)脉冲的上升沿出现后,数据查询位有效对于扇区/块擦除或芯片擦除,数据查询位在第6个WE#(或CE#)脉冲的上升沿出现后有效39VF160详细说明,数据查询状态检测流程图,39VF160详细说明,和触发位 (DQ6)在内部烧写或擦除操作过程中,读取DQ6将得到1或0,即所得的DQ6在1和0之间变化当内部烧写或擦除操作结束后,DQ6位的值不再变化触发位在烧写操作的第4个WE#(或CE#)脉冲的上升沿后有效对于扇区/块擦除或芯片擦除,触发位在第6个WE#(或CE#)脉冲的上升沿出现后有效39VF160详细说明,触发位状态检测流程图,39VF160详细说明,状态检测(补充)非易失性写操作的结束与系统不同步,因此,数据查询位或触发位的读取可能与写周期结束同时发生。

      如果这样,系统就可能得到一个错误的结果,即有效数据与DQ7或DQ6发生冲突为了防止错误的情况,当一个错误结果出现时,软件程序应当包含一个两次读被访问地址单元的循环如果两次读取的值均有效,则器件已经完成了写周期,否则拒绝接收数据软件原理,参考程序,参考程序,函数名称: sstSectorErase()函数功能: 擦除指定的flash扇区.入口参数: 扇区地址.返 回 值: OK 擦除完全正确. ERROR 有单元不能正确擦除.STATUS sstSectorErase(UINT16 *pSector){ int i; volatile UINT16 *flashPtr = pSector; *((volatile UINT16 *)SST_START_ADDR + SST_ADDR_UNLOCK1) = SST_DATA_UNLOCK1; // 第1个总线写周期 *((volatile UINT16 *)SST_START_ADDR + SST_ADDR_UNLOCK2) = SST_DATA_UNLOCK2; // 第2个总线写周期 *((volatile UINT16 *)SST_START_ADDR + SST_ADDR_UNLOCK1) = SST_SETUP_ERASE; // 第3个总线写周期 *((volatile UINT16 *)SST_START_ADDR + SST_ADDR_UNLOCK1) = SST_DATA_UNLOCK1; // 第4个总线写周期 *((volatile UINT16 *)SST_START_ADDR + SST_ADDR_UNLOCK2) = SST_DATA_UNLOCK2; // 第5个总线写周期 *(volatile UINT16 *)flashPtr = SST_SECTOR_ERASE; // 第6个总线写周期(擦除指定扇区). for(i=0; i 0) { *((volatile UINT16 *)SST_START_ADDR + SST_ADDR_UNLOCK1) = SST_DATA_UNLOCK1; // 第1个总线写周期 *((volatile UINT16 *)SST_START_ADDR + SST_ADDR_UNLOCK2) = SST_DATA_UNLOCK2; // 第2个总线写周期 *((volatile UINT16 *)SST_START_ADDR + SST_ADDR_UNLOCK1) = SST_SETUP_WRITE; // 第3个总线写周期 *flashPtr = *gBuffer; // 第4个总线写周期(写入数据) cLength--; flashPtr++; gBuffer++; } ….(省略部分),。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.