预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共39页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

FLASHIntroduction 目录FLASH作为一种非易失性存储器,在原理、技术和结构上,与ROM、PROM、EPROM和EEPROM存储器有着显著不同。它是一种可快速擦除可现场编程的快擦写存储器。这种特性决定了FLASH作为BIOS、在线擦写和掉电保护数据和分区保护数据等场合有着广泛的应用。 FLASH是由一个带浮栅的晶体管构成,该晶体管的阈值电压可通过在其栅极上施加电场而被反复改变(编程),结合了EPROM编程机制和EEPROM擦除特点。 非易失性:掉电数据不会丢失--ROM特性 在线更改数据:--RAM特性 兼有ROM和RAM的特点: 块结构:Flash按块操作的特点 命令接口:可编程特性 编程特点:编程之前必须擦除 寿命限制:一般的Flash为10万次的擦写循环,20年的数据保持时间 容量: 1Mbit(128K×8bit),4Mbit(512K×8bit/256K×16bit) 16Mbit(2M×8bit/1M×16bit),32Mbit(2M×16bit) 64Mbit(4M×16bit),128Mbit(16M×8bit/8M×16bit) 数据宽度: 有2种数据总线宽度,byte、word(一般可配置)FlashIC 几乎每块单板上都有它的身影 单板的BIOS载体都是Flash 单板软件,主机软件的载体也是Flash FlashCard 由Flash芯片和一些外围控制电路组合而成 可以存储大量的数据,我司所用的容量为:128\256\512MB 在我司应用越来越广泛FLASH应用场合保留(不可CACHE)FLASH硬件设计—管脚分布FLASH硬件设计—数据地址管脚STS:STS用于指示芯片内部状态,有效时可以是低电平输出或脉冲输出,一般接控制器的中断输入管脚。配置为缺省模式时功能与RY/BY脚功能相同,当内部进行擦除、编程或加锁操作时,输出低电平。因其为开漏输出,设计中应该加上拉电阻。 /RP:复位/深度低功耗控制输入线,低电平有效,可以使芯片处于深度低功耗状态,锁定自举模块,同时停止模块擦除和字节编程操作以及使写状态机WSM复位,用以防止储存单元被擦除或编程。这样在电源变化的过渡期提供数据保护功能。一般用CPU的复位输出控制该管脚。 /BYTE:字节选通信号,逻辑低表示工作在×8模式,逻辑高表示工作在×16模式。在通常的×16模式设计中,该管脚接电阻上拉。FLASH硬件设计—状态控制管脚FLASH硬件设计—状态控制管脚VCC:器件电源电压,电源电压<Vlko(Lock-OutVoltage)时,所有的写操作都会被禁止。电源电源在Vcc(min)和Vlko或者大于Vcc(max)时写操作不可靠。 VCCQ:输出BUFFER电源电压。如SST39VF160Q和INTEL的28F160/320C3/J3系列,前者VCCQ可以在2.7V-5.5V范围内调整以提高器件的灵活接口能力;而后者在3.3Vcc时的调整范围为2.7V-3.6V。需要注意的是,如果端口电平无需调整,VCCQ必须连接Vcc而不能悬空。 VPEN:擦除、写、块保护的电压使能管脚。当Vpen<Vpenlk时,以上操作被禁止,只允许读状态寄存器,厂商及器件ID,Query数据库。因此设计中应上拉或直接与电源电压接在一起。FLASH硬件设计—内部结构FLASH硬件设计—读写操作FLASH软件设计—指令序列FLASH软件设计—内部状态FLASH软件设计—Toggle检测法FLASH软件设计—Polling检测法FLASH软件设计—Read/Reset指令LA采样的MBM29LV400TC器件Read/Reset指令周期: FLASH软件设计—Autoselect指令FLASH软件设计—Erase指令FLASH软件设计—Erase指令FLASH软件设计—Program指令FLASH软件设计—Suspend&Resume指令FLASH测试指标—信号质量FLASH测试指标—读时序FLASH测试指标—写时序FLASH测试指标—复位时序ESR_Block_Erase(_US*flash_addr) {。。。 /*PollCSRuntilCSR.7oftargetaddress=1(WSMready.)*/ while(!(BIT_7&byte)&&loop++<ESR_POLLING_TIMEOUT) byte=Read_from_Flash(flash_addr); if(loop>=ESR_POLLING_TIMEOUT)return0; Write_to_Flash(flash_addr,CLEAR_STATUS_REGISTERS); Write_to_Flash(flash_addr,READ_FLASH_ARRAY); return