AT45DB161D的中文资料_第1页
AT45DB161D的中文资料_第2页
AT45DB161D的中文资料_第3页
AT45DB161D的中文资料_第4页
AT45DB161D的中文资料_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SPI接口的FLASH ROM AT45DB161D的驱动方法(1)芯片介绍AT45DB161D是串行接口的闪存芯片,可工作在2.5V2.7V,可广泛应用于数据语音、图像、程序代码数据存储中。AT45DB161D支持RapidS串行接口,适用于高速场合。RapidS串行接口是与SPI相兼容的,速度可达到66MHz。它包含有17,301,504个位,被组织为4096个页,每个页512或528个字节。除了主存储器,AT45DB161D还包括两个SRAM数据缓冲区,每个缓冲区512/528个字节。在主存储器正在编程时,缓冲区是允许接收数据的,并且支持数据流式写入。与并行FLASH储存器不同,它采用R

2、apidS串行接口,从而大大减少了可用引脚数量,同时也提高了系统可靠性,降低了开关噪声,缩小了封装体积。可以应用于商业、工业等需要高密度、低引脚数、低电压与低功耗的应用场合。AT45DB161D允许简单的在系统重新编程,而无需输入高编程电压。芯片可以采用2.5V3.6V或2.7V3.6V单电源供电,进行编程与读取操作。它可以通过#CS来进行使能,并通过三线接口(SI、SO、SCK)进行数据通信。(2)引脚配置与封装1.芯片封装图2.引脚功能详述符号名称与功能有效电平类型#CS片选:#CS用以选中芯片。当#CS被设置为无效状态时,芯片则不被选中,并且处于闲置状态(不是深度睡眠状态),输出引脚SO

3、处于高阻态。当芯片未被选中时,从输入引脚SI输入的数据将不被接受。#CS引脚上的下降沿将会启动一个操作,而上跳沿则会结束一个操作。在一个内部操作如芯片内部的编程或擦除周期内,芯片不会进入闲置状态,直到操作完毕。LOW输入SCK串行时钟:此引脚用来向芯片提供时钟信号,有来控制数据流的出入。SI引脚上的命令、地址与输入数据在时钟SCK的上升沿被写入,而SO引脚上的输出数据则在时钟的下降沿变化。-输入SI串行输入:SI引脚用来向芯片以移位方式写入数据。SI引脚上的所有数据输入包括命令与地址。SI上的数据在时钟的上升沿写入芯片。-输入SO串行输出:SO引脚用来从芯片以移位方式输出数据。SI上的数据在时

4、钟的下降沿变化。-输出 #WP写保护:当#WP被设置为有效时芯片的扇区将被保护起来,以防止编程与擦除对数据的破坏。但是扇区保护使能与扇区死锁命令仍然可以被芯片识别。#WP引脚在内部被拉高,可以悬空。但是仍然建议在外部接到VCC。LOW输入#RESET复位:#RESET引脚上的低电平会终止正在处理的操作并复位内部状态机到闲置状态。#RESET引脚上的低电平会使芯片一直处于复位状态。当#RESET上转为高电平后,才能进行正常的操作。芯片内部设置上电复位电路。当此引脚不用时,外部接到高电平。LOW输入RDY/#BUSY就绪/忙碌状态指示:此引脚是漏极开路的输出引脚。当芯片处于忙状态时(内部操作过程中

5、)此引脚为低电平,此引脚在正常状态下为高电平(外部接上拉电阻)。当正在进行编程/擦除操作,比较操作与页-缓冲区传送时,被拉低。忙状态指示FLASH储存阵列与某一个缓冲区不能被操作,而对另一个缓冲区的读与写操作仍然可以进行。-输出VCC芯片电源供给-电源GND地:此引脚应与系统地接在一起。-地(3)AT45DB161D的功能框图:(4)存储器阵列:AT45DB161D的储存器阵列被分为3个级别的粒度,分别为扇区、块与页。下面的“存储器结构图”对各个级别进行了分析,详细说明了每个扇区与块的页数。所有的编程操作都是针对于页的。擦除操作可以作用于芯片、扇区、块或页。 扇区结构:(扇区 0A)8页 40

6、96 /4224 字节(扇区 0B)248页 126,976/130,944字节(扇区 1 )256页 131,072/135,168字节(扇区 2 )256页 131,072/135,168字节 (扇区 14)256页 131,072/135,168字节(扇区 15)256页 131,072/135,168字节 块结构:块0扇区0块1扇区1块2块30块31块32块33扇区2块62块63块64块65块510块511 页结构:页0块0页1页6页7页8块1页9页14页15页16页17页18页4093页4094页4095(5)芯片操作:芯片的操作是通过单片机的指令来完成的。指令列表与指令操作码在后面

7、的“指令表”中有详细的说明。一个有效的指令由#CS的下降沿来指示它的开始,随后是一个有意义的8位操作码与缓存区或主存储器的地址。当#CS为低时,由时钟SCK引脚来控制由SI引脚写入的操作码与缓存区或主存储器的地址。所有的指令、地址与数据在传输时都是高位在前的。528字节模式下,缓冲区中数据的地址由BFA9BFA0来表示。主存储器中数据的地址由PA11PA0与BA9BA0来表示,PA11PA0用来表示12位页地址,BA9BA0表示10位的页内字节地址。在512字节模式下,缓冲区中数据地址由BFA8BFA0来表示。主存储器中数据的地址由A20A0来表示,其中A20A9是12位的页地址,A8A0为9

8、位的页内字节地址。(6)读命令 使用相应的操作码,数据可以从主存储器或某一个SRAM缓冲区中读出。1. 连续读(命令码:E8H):可以达到66MHz在提供了主存储器阵列的开始地址后,在时钟信号的作用下连续读命令可以从芯片中以数据流方式进行数据读取,而无需额外的地址信息或控制信号。芯片内部的地址计数器会在每一个时钟周期后自动自增,因而可以在不用写入新的地址的情况下继续读取下一个字节。要进行一次对页(528字节)的连续读操作,操作码E8H必须要写入芯片中,随后是3个字节的地址(22位的页与字节地址序列)与4个无关字节。开始的12位(PA11PA0)来用表示将要读取的数据在主存储器中的页地址。后10

9、位(BA9BA0)用来表示字节在页中的地址。而要进行一次对页(512字节)的连续读时,操作码E8H同样也要先写入到芯片中,随后是三个字节的地址与4个无关字节。21位序列中前12位(A20A9)表示要读的数据在主存储器的页地址,后9位(A8A0)是页内的字节地址。那些无关字节在读操作初始化时是必需的。在无关字节后,SCK引脚上的时钟信号使数据从SO引脚输出。在操作写入地址字节、无关字节与数据读取的过程中,#CS引脚上要保持低电平。连续读到达一个页的结尾时,芯片会从下个页的开头继续读取,页间的跨越是没有延时的。当主存储器的最后一个位被读出后,芯片会自动返回到第一页的开头继续读取。与页间跨越相同的,

10、从存储器阵列结尾转到开头也是无延时的。2. 连续读(命令码:0BH 高速模式):可以达到66MHz此命令可以在最高频率以下的任意时钟频率下通过串行接口对主存储器进行高速读取。要进行一次连续读(页容量为528字节),#CS必须处于有效状态,然后操作码0BH必须写入到芯片中,随后是3字节地址与一个字节。22位地址序列中的前12位(PA11PA0)表示将要读取的数据在主存储器中的页地址,后10位(BA9BA0)表示页内的字节地址。要进行一次连续读(页容量为512字节),同样地,操作码OBH也要先写入芯片中,随后是3字节地址(A20A0)与一个字节。在此字节后数据将在SCK引脚上的时钟信号作用下从SO

11、引脚输出。同1中的内容。3. 连续读(命令码:03H 低速模式):可以达到33MHz大部分与高速模式下的连续读是相同的。不同的在于3字节地址写入后无需再写入一个字节。4. 主存储器页读(操作码:D2H)主存储器页读允许直接从4096个页中某一个页中读取数据,而不影响缓冲区中的数据。其它的内容与1相同。5. 缓存区读(操作码:缓冲区1 D4H或D1H 缓冲区2 D6H或D3H)主存储阵列中的数据可以放在SRAM数据缓存区内,使用缓存区读命令允许直接从缓冲区中读取数据。操作码的选用要根据时钟频率而定。D4H、D6H与D1H、D3H可以分别使用在频率低于66MHz与33MHz的情况下。要进行一次缓冲

12、区读(528字节),操作码必须先写入芯片,随后是3字节地址(14个无关位与10位缓冲区地址)。要进行一次缓冲区读(512字节),操作同样也要先写入芯片,随后是3字节地址(15个无关位与9位缓冲区地址)。在地址字节后,一个无关字节必须要写入芯片以初始化读操作。在操作码、地址字节、无关字节写入的过程中,#CS引脚必须保持低电平。当到达缓冲区的结尾时,芯片会自动返回到缓冲区的开始。#CS的上跳沿将终止读操作。(7)编程与擦除命令1. 缓冲区写(操作码:缓冲区1 84H 缓冲区2 87H) 数据可以通过SI引脚写入缓冲区1或2中。要将数据写入缓冲区(528字节),操作码必须先写入芯片,随后是3字节地址

13、(14位无关位与10位缓冲区地址 BFA9BFA0)。这10位地址表示要写入的数据的第一个字节的缓冲区地址。李将数据写入缓冲区(512字节),操作码同样也要先写入芯片,随后是3字节地址(15个无关位与9位缓冲区地址 BFA8BFA0)。这9位缓冲区地址表示要写入的每个字节的地址。在最后一个地址位写入后,就可以开始向其写入数据了。如果到达了缓冲区的结尾,则芯片会自动返回到缓冲区的开头。数据会继续写入到缓冲区中,直到#CS引脚上产生上跳沿为止。2. 缓冲向主存储器页编程(带预擦除 操作码:缓冲区1 83H 缓冲区2 86H)被写入到缓冲中的数据可以被编程到主存储器中。先写入操作码,对于页容量为52

14、8字节的情况,随后是3字节地址(2个无关位,12位页地址 PA11PA0 与10个无关位)。而对于容量为512字节的情况,操作码写入后,随后是3字节地址(3个无关位,12位的地址位 A20A9 与9个无关位)。当#CS引脚的上跳沿时,芯片会先擦除主存储器中所选中的页(擦除后都为逻辑1),然后将缓冲区中的数据编程到页中。擦除与编程操作都是内部进行的,并会在一定时间内完成。在这期间,状态寄存器与RDY/#BUSY都会指示芯片处于忙状态。3. 缓冲区向主存储器页编程(无预擦除 操作码:缓冲区1 88H 缓冲区2 89H) 主存储器中已经被擦除的页可以通过此操作由缓冲区向其编程。与有预擦除的操作不同就

15、在于它是无预擦除的。4. 页擦除(操作码:81H)页擦除操作可以独立对主存储阵列中某一个页进行擦除,随后可以对该页进行缓冲区向主存储器页编程(无预擦除)操作。对于页容量为528字节的情况,先要写入操作码,随后是3字节地址(2个无关位,12位页地址 PA11P10 与10个无关位)。对于页容量512字节的情况,也要先写入操作码,随后是3字节地址(3个无关位,12位页地址 A20A9 与9个无关位)。当#CS引脚上产生上跳沿时,芯片会擦除所选中的页(擦除后都为逻辑1)。擦除操作是内部进行的,并会在一定时间内完成。在这期间,状态寄存器与RDY/#BUSY都会指示芯片处于忙状态。5. 块擦除(操作码:

16、50H) 块擦除操作可以使块内的8个页一次全部擦除。这个命令可以用在有大量数据需要写入的时候,可以避免多次调用写擦除命令。在页容量为528字节时,操作码先要写入芯片,随后是3字节地址(2个无关位,9位页地址 PA11PA3 ,13个无关位)。要进行一次块擦除操作(页容量512字节),也要先写入操作码,随后是3字节地址(3个无关位,9位页地址 A20A12与12个无关位)。当#CS上产生上跳沿时,芯片将擦除选中的块。擦除操作是内部进行的,并会在一定时间内完成。在这期间,状态寄存器与RDY/#BUSY都会指示芯片处于忙状态。 块擦除地址如下表所示:PA11/A20PA10/A19PA9/A18PA

17、8/A17PA7/A16PA6/A15PA5/A14PA4/A13PA3/A12PA2/A11PA1/A10PA0/A9BLOCK000000000XXX0000000001XXX1000000010XXX2000000011XXX311111100XXX50811111101XXX50911111110XXX51011111111XXX5116. 扇区擦除(操作码:7CH)扇区擦除命令可以独立对主存储器中的某一个扇区进行擦除。一共有16个扇区,每次扇区擦除操作只能对一个扇区进行擦除。页容量为528字节时,要对扇区0A或扇区0B进行擦除,需要先写入操作码,随后是3字节地址(2个无关位,9位页地

18、址 PA11PA3 与13个无关位)。要擦除扇区115,也要先写入操作码,随后是3字节地址(2个无关位,4位页地址 PA11PA8 与18个无关位)。页容量为512字节时,要对扇区0A或扇区0B进行擦除,先写入操作码,随后是3字节地址(3个无关位,9位页地址 A20A12 与12个无关位)。要擦除扇区115,也要先写入操作码,随后是4字节地址(3个无关位,4位页地址 A20A17 与17个无关位)。擦除操作是内部进行的,并会在一定时间内完成。在这期间,状态寄存器与RDY/#BUSY都会指示芯片处于忙状态。 7. 片擦除(操作码:C7H、94H、80H与9AH) 主存储器可以使用片擦除命令一次全

19、部擦除。要进行一次片擦除操作,先要写入操作码,无须写入地址,交且操作过程中任何写入的数据都是无效的。操作码写入后,#CS引脚上的上跳沿可以开始擦除过程。在操作过程中,状态寄存器指示芯片处于忙状态。那些被保护或死锁的扇区不受此命令的影响,其数据不会发生改变。只有那些没有保护或死锁的扇区会被擦除。芯片在进行擦除操作的过程中#WP引脚可以设为有效,但是在内部擦除周期完成前保护不会生效。8. 通过缓冲区对主存储器页编程(操作码:缓冲区1 82H 缓冲区2 85H)这个命令是缓冲区写与缓冲区向主存储器页编程(带预擦除)两条命令的综合。数据先从输入引脚SI写入缓冲区1或2,再从缓冲区向指定的页编程。在页容

20、量为528字节时,要进行一次此操作,先要写入操作码,再将数据写入到缓冲区中,然后向芯片写入3字节地址(2个无关位,12位页地址 PA11PA0 与10位缓冲区地址 BFA9BFA0)。在页容量为512字节时,要进行此操作,也要先将操作码写入,再将数据写入到缓冲区中,随后是3字节地址(3个无关位,12位页地址 A20A9 与9位缓冲区地址 BFA8BFA0)。所有的地址字节都被写入后,就可以通过输入引脚向芯片写入数据了。当#CS引脚上出现上跳沿时,芯片先会擦除主存储器所选中的页,然后将存在缓冲区中的数据编程到页中去。编程操作是在芯片内部进行的,并会在一定时间内完成。在这期间,状态寄存器与RDY/

21、#BUSY都会指示芯片处于忙状态。(8)扇区保护 AT45DB161D提供硬件与软件两种方法对扇区进行保护,以使其避免数据的破坏。软件的方法是通过软件命令来实现扇区保护的使能与禁止的。而硬件的方法则是通过使用#WP引脚来实现的。通过“扇区保护寄存器”对哪一个扇区保护或不保护进行选择。要知道某一个扇区是否有保护,可以查询状态寄存器。1. 扇区保护的软件方法 1)扇区保护使能命令(操作码:3DH-2AH-7FH-A9H) 指定的扇区通过使扇区保护使能命令可使其在编程与擦除操作中得以保护。要采用方法使能扇区保护,#CS引脚必须处于有效状态,从输入引脚SI写入4字节命令序列。写入后,#CS引脚转为无效

22、状态,此时扇区保护就被使能了。命令字节1字节2字节3字节4扇区保护使能命令3DH 2AH7FHA9H扇区保护使能命令的时序图: 2)扇区保护禁止命令(操作码:3DH-2AH-7FH-9AH) 用软件方法来禁止扇区保护时,除了写入的操作码序列不事,其它与扇区保护使能命令是相同的。命令字节1字节2字节3字节4扇区保护禁止命令3DH 2AH7FH9AH扇区保护禁止命令的时序图: 3)软件控制保护的各个方面 软件控制保护在#WP没有或不能被单片机控制的情况下是很有用的。在这种情况下,#WP可以悬空(#WP引脚在内部拉高),扇区保护可以由以上两种命令来控制。(9)保护的硬件控制 #WP引脚设为有效状态后

23、,在扇区保护寄存器中设置为保护的扇区及扇区保护寄存器自身在编程与擦除操作中可以得到保护。扇区保护寄存器与设置为保护的任何一个扇区,都不能被编程或擦除。要改变扇区保护寄存器的值只能将#WP设为无效。如果#WP被接到地,扇区保护寄存器的内容不能被改变。如果#WP被设为无效或接到VCC,则其内容可以被改变。 #WP会使保护的软件控制方法无效。例如:如果扇区原先并没有被扇区保护使能命令保护,那么简单的把#WP设为有效状态就可以使能扇区保护。当#WP引脚设为有效状态而扇区保护使能命令没有执行,扇区保护不会被使能。如果在#WP引脚设为有效状态前扇区保护使能命令被执行了,那么只简单地将#WP设为无效并不能禁

24、止扇区保护。在这种情况下,扇区保护禁止命令需要在#WP引脚无效时执行来使扇区保护禁止。在#WP引脚为有效时,扇区保护禁止命令会被忽略。1. 扇区保护寄存器非易挥发的(掉电不丢失)扇区保护寄存器指示哪些扇区被保护或未被保护。扇区保护寄存器包括16个字节,从第0到第15字节的不同值确定了扇区0到15是否被保护。扇区保护寄存器是可以由用户修改的,但在生新程序前必须先擦除。扇区保护寄存器:扇区号0(0A,0B)1 to 15保护见下表FFH未保护00H扇区0(0A,0B)0A0B位3,2位1,0数据值07页8255页位7,6位5,4扇区0A,0B未保护 00 00xxxx0xH0A保护(第07页) 1

25、1 00xxxxCxH0B保护(第8255页) 00 11xxxx3xH扇区0A(第07页),0B(第8255页) 11 11xxxxFxH注:从ATMEL出厂后015字节默认值为00H。1)擦除扇区保护寄存器命令(操作码:3DH-2AH-7FH-CFH) 为了修改扇区保护寄存器的值,必须先使用擦除扇区保护寄存器命令将其擦除。 要擦除扇区保护寄存器,#CS必须设置为有效,然后将4字节的操作码序列写入芯片。在操作码写入后,需要将#CS设置为无效,以初始化一个擦除操作。扇区保护寄存器的擦除需要一定的时间,此期间状态寄存器会指示芯片处于忙状态。如果在进行擦除的过程中掉电,则扇区保护寄存器的擦除得不到

26、保证。命令字节1字节2字节3字节4擦除扇区保护寄存器命令3DH 2AH7FHCFH擦除扇区保护寄存器命令的时序图: 2)扇区保护寄存器编程命令(操作码:3DH-2AH-7FH-FCH) 在扇区保护寄存器被擦除后,就可以使用扇区保护寄存器编程命令对其进行重新编程。 要对扇区保护寄存器进行编程,必须先将#CS设为有效,从SI引脚写入4字节操作码序列。写入后,再将要写入扇区保护寄存器的内容写入。扇区保护寄存器中包括有16个字节,所以要写入16个字节。每个字节对应对寄存器中的每个单元。 16个字节被写入后,#CS引脚需要设为无效以初始化一个编程周期。编程过程需要一定的时间,在此期间状态寄存器指示芯片处

27、于忙状态。如果在进行编程的过程中掉电,则扇区保护寄存器中的内容的修改得不到保证。 如果在#CS引脚无效以前没有写入适当数量的字节,则没有字节与其相对应的寄存器单元所对应扇区保护状态的改变不能保证。 如果扇区保护寄存器中的字节不是00H或FFH,则相应单元所对应的扇区保护状态的改变不能保证。 扇区保护寄存器编程命令利用内部SRAM数据缓冲区1来实现编程操作。缓冲区1的数据在命令执行完毕后会恢复回到原来的数据。命令字节1字节2字节3字节4扇区保护寄存器编程命令3DH 2AH7FH9AH扇区保护寄存器编程命令的时序图: 3)扇区保护寄存器读取命令(操作码:32H) 要读取扇区保护寄存器,首先要将#C

28、S引脚设为有效,从SI引脚写入操作码与三个字节。写入后,芯片便可以从SO引脚输出数据。第一个字节是扇区0的内容,第二个字节是扇区1的内容,最后一个字节是扇区15的内容。在最后一个字节输出后,再输出的数据就为未定义数据。最后必须要将#CS设为无效状态以终止扇区保护寄存器读取操作,并使输出转为高阻态。命令字节1字节2字节3字节4扇区保护寄存器读取命令32H XXHXXHXXH扇区保护寄存器的时序图: 4)扇区保护寄存器的各个方面 扇区保护寄存器约可以擦/写10000次。使用者会很关心芯片在其应用系统中的使用寿命。如果应用系统中需要多于10000次对扇区保护寄存器的修改,因为它需要临时性地对某一个扇

29、区不加以保护,那么应用系统就要限制自身的使用。要合理地设计应用系统,以使其对扇区保护寄存器的个性不超过10000次。(10)安全措施 1)扇区死锁命令(3DH-2AH-7FH-30H) 这一命令应用于商业上。芯片可以通过扇区死锁命令对某一个扇区进行死锁,从而使扇区变为只读的。这在应用中是很有用的,用来存储代码或安全信息。当一个扇区被死锁后,它就不能再被擦除或编程,也不能解锁。 要执行扇区死锁命令,#CS引脚要设为有效状态,写入4字节操作码序列,一定按正确的顺序写入。写入后,再写入3字节地址。在地址写入后,再将#CS引脚设为无效状态以初始化一个内部死锁操作。 在进行死锁操作的过程中,状态寄存器指

30、示芯片处于忙状态。如果操作过程中掉电,则死锁操作得不到保证。在这种情况下,使用者应读取扇区死锁寄存器以确定相应的扇区是否已经死锁。命令字节1字节2字节3字节4扇区死锁命令3DH 2AH7FH30H 扇区死锁命令的时序图:1. 扇区死锁寄存器扇区死锁寄存器中包含16个字节,如下表所示:扇区号0(0A,0B)1 to 15保护见下表FFH未保护00H扇区0(0A,0B)0A0B位3,2位1,0数据值07页8255页位7,6位5,4扇区0A,0B未保护 00 00000000H0A保护(第07页) 11 000000C0H0B保护(第8255页) 00 11000030H扇区0A(第07页),0B(第8255页) 11 110000F0H2. 扇区死锁寄存器读取命令(操作码:35H)扇区死锁寄存器中的数据可以读取以确定扇区是否被死锁。要读取扇区死锁寄存器,#CS引脚必须设为有效,通过SI引脚写入操作码与3个字节。写入后,扇区死锁寄存器中的数据将从SO引脚输出。每一个字节是扇区0(0A,0B)的内容,第二个字节是扇区1的内容,最后一个字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论