FLASH烧录原理1.关键词:Accesstime:存取时间CE:CHIPENABLE片选使能OE:OUTPUTENABLE输出使能WE:WRITENABLE写使能RESET:复位WP:WRITEPROTECT写保护Sectoraddress:扇区地址tACCAddresstooutputdelay地址建立到数据输出的时间tCEChipenabletooutputdelay片选使能的建立到数据输出的时间tOEOutputenabletooutputdelay输出使能的建立到数据输出的时间tRCReadcycletime读周期的时间tCSCE#setuptime片选信号建立的时间tDSDatasetuptime数据建立的时间tASAddresssetuptime地址建立的时间tDHDataholdtime数据保持的时间tWCWritecycletime写周期的时间2.FLASH特性介绍NOR技术FlashMemory具有以下特点:(1)程序和数据可放存在同一芯片上,拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码,而无需先将代码下载至RAM中再执行。(2)可以单字节或单字编程,但不能单字节擦除,必须以块为单位或对整片执行擦除操作,在对存储器进行重新编程之前需要对块或整块进行预编程和擦除操作。由于NOR技术FlashMemory的擦除和编程速度较慢,而块尺寸较大,因此擦除和编程操作所要花费的时间很长。3.READFigure.1:ReadOperationTtimings根据CommandDefinitions(附录TABLE1)中,因为在芯片上电以后,直接进入读模式。因此,可以直接将地址送到IC的地址端口,然后从数据端口读出数据,时序参考READ时序(Figure.1)。如图所示:CE#为片选引脚,在为低时,选中IC。当地址端口送入地址数据以后,IC在CE#的下降沿时将地址端口的数据锁定;OE#为数据输出使能,并在CE#和OE#的都为低以后,输出数据出现在数据端口。4.ERASEFigure.2:Chip/SectorEraseOperationTimings根据CommandDefinitions(附录TABLE1)中,将CHIPERASE或者SECTORERASE的命令字送入芯片的命令寄存器,在命令寄存器收到指令后,对存储区域进行擦除操作,通过足够时间,使芯片相应的区域能够完全擦除。具体时序参考下图(Figure.2)。具体步骤:(1)分别送命令0x00aa到地址0x0555,送命令0x0055到地址0x02aa,前2个周期为解锁周期(unlockcycle)。送命令0x00a0到地址0x0555,该周期为一个擦除建立命令(setupcommand)。然后,又是2个解锁周期(unlockcycle),最后是送片擦命令(送命令0x0010到地址0x0555),或者扇区擦除命令(送0x0030到地址0x0555).(2)延时。CE#为片选引脚,在为低时,选中IC。WE#为写使能,当地址端口和数据端口分别送地址和命令字以后。在CE#的下降沿时,地址端口将地址数据锁入IC;在CE#、WE#的上升沿时,数据端口将命令字锁入IC。5.PROGRAMFigure.3:ProgramOperationFlowFigure.4:ProgramOperationTimings根据CommandDefinitions(附录TABLE1)中,先将wordprogram的命令字送入IC的命令寄存器;在命令寄存器接到命令后,再将编程地址和数据通过地址端口和数据端口送入命令寄存器,命令寄存器对存储区域中相应的地址进行编程操作,延时等待命令寄存器完成编程操作,具体流程参考图(Figure.3)具体步骤:(1)送命令0x00aa到地址0x0555,送命令0x0055到地址0x02aa,前2个周期为解锁周期(unlockcycle),通过这2个周期以后,再向命令寄存器送编程建立命令,即:送命令0x00a0到地址0x0555。(2)送编程数据到数据端口,编程地址到地址端口。(3)延时,并从数据端口读出数据,当读出的数据与编程数据相同时,编程操作完成。(4)检验编程地址是否是IC的最大地址,如果是,则编程完成。如果不是最大地址,则重复(1)~(4)。具体时序参考Figure4,CE#为片选引脚,在为低时,选中IC。WE#为写使能,当地址端口和数据端口分别送地址和命令字以后。在CE#的下降沿时,IC地址端口的数据被锁入;在CE#、WE#的上升沿时,数据端口将命令字锁入命令寄存器。6.PROTECT时序图Figure.5SectorGroupProtectAlgorithmandSectorUnprotectAlgorithmFigure6:SectorProtect/UnprotectTime根据SectorGroupProtectAlgorithmandSectorGroupUnprotectAlgorithm(Figure.5)提供的操作方式按照顺序送入IC,具体步骤:(1)在RESET脚升高压(2)在数据端口送入0x0060(3)在地址端口送入扇区地址(保护地址为扇区地址并上0x0002,解保护地址为扇区地址并上0x0042),同时数据端口送入0x0060。(4)然后延时(保护为15us/sector,解保护为15ms/chip)(5)送命令0x0040到IC,然后读出数据(0x0001为保护状态/0x0000为不保护状态),验证IC是否被保护。IC保护重复(3)~(5)IC解保护不再重复。具体时序参考sectorgroupprotectandsectorgroupunprotecttimingdiagram.(Figure.6)CE#为片选引脚,在为低时,选中IC。WE#为写使能,当地址端口和数据端口分别送地址和命令字以后。在CE#的下降沿时,地址端口将地址数据锁入IC;在WE#的上升沿时,数据端口将命令字锁入IC。在延时足够长时间以后,再送读扇区保护状态命令,当地址端口送入地址,在OE#的下降沿将地址锁入,并在OE#的上升沿数据端口锁住输出数据,即为扇区保护状态。当输出为0x0001时,芯片被保护。否则,芯片为未保护。7.附录Table.1:CommandDefinitionsTable.2:Am29LV160MDeviceBusOperations