久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

關 閉

新聞中心

EEPW首頁 > 安全與國防 > 設計應用 > SPI串行Flash在數據存儲系統中的應用

SPI串行Flash在數據存儲系統中的應用

作者: 時間:2016-12-23 來源:網絡 收藏

http://cqxgywz.com/article/201612/333179.htm

1 概述

在目前所有的非易失性存儲器(PROM、EPROM、EEPROM和Flash)中,唯有Flash存儲器幾乎擁有現今講究個性化的用戶所需的所有特點,它具有掉電數據不丟失、快速數據存取速度、電可擦除、容量大、在線可編程、價格低廉以及足夠多的擦除、容量大、在線可編程、價格低廉以及足夠多的擦寫次數(一百萬次)和較高的可靠性等諸多優點,因而已為新一代嵌入式應用(如數字相機和MP3播放機)的首選存儲器。現在FLASH的成本已低于PROM/EPROM,可以肯定,它將很快占鄰PROM/EPROM市場,MASK(掩膜)ROM盡管在大指生產時具備一定的價格優勢,但其升級不便的弱點將隨著今后FLASH成本的進一步降低,而使得MASK ROM的前景并不樂觀。

ATMEL生產的Flash AT45系列中的AT45D041為單5V供電的SPI接口器件,其封裝形式有PLCC、TSOP和SOIC三種,圖1給出了該器件采用SOIC封裝形式的管腳排列和說明。

AT45D041的內部結構如圖2所示。該器件有2048頁(每頁264字節)內存(Flash Memory,也叫主存Main Memory)和兩具Buffer(每個Buffer為264字節的SRAM)組成。數據可以直接寫入閃存,也可以選寫入Buffer,然后再將Buffer的數據整個復制到閃存的某一天,也可以在閃存正處于編程時(頁編程時間典型值7ms)將數據寫入Buffer。以下是該器件的一些特點:

●一頁主存傳送到Buffer的典型時間為80μs;

●有效電流的典型值為15mA,空閑電流為20μA;

●最大時鐘頻率為10MHz;

●具有硬件擦、寫保護功能,當WP腳為低時,前256頁鈄禁止編程。

●輸入輸出與CMOS和TTL電平兼容;

●具有商業和工業兩種溫度范圍;

●可單周期重編程(包括擦除和編程);

●帶有串行接口,讀寫操作時地址會自動增1;

●復位時將終止正在進行的操作,當復位管腳恢復高電平時,操作也可以恢復;

●傳送數據時,高位(MSB)在前。

2 操作命令介紹

對AT45D041的操作一共有18條命令,表1所列為AT45D041的操作命令集。其中:

表1 AT45D041的操作命令集

讀主存 52H rrr PA10~PA0 BA8~BA0 32個×
讀Buffer1 54H ×××× 11個× BFA8~BFA0 8個×
讀Buffer2 56H ×××× 11個× BFA8~BFA0 8個×
主存傳送到Buffer1 53H rrrr PA10~PA0 9個×
主存傳送到Buffer2 55H rrrr PA10~PA0 9個×
主存與Buffer1比較 60H rrrr PA10~PA0 9個×
主存與Buffer2比較 61H rrrr PA10~PA0 9個×
寫Buffer1 84H ×××× 11個× BFA8~BFA0
寫Buffer2 87H ×××× 11個× BFA8~BFA0
帶擦除的Buffer1傳送到存 83H rrrr PA10~PA0 9個×
帶擦除的Buffer2傳送到主存 86H rrrr PA10~PA0 9個×
不帶擦除的Buffer1傳送到主存 88H rrrr PA10~PA0 9個×
不帶擦除的Buffer2傳送到主存 89H rrrr PA10~PA0 9個×
Buffer1為緩沖對主存編程 82H rrrr PA10~PA0 BA8~BA0
Buffer2為緩沖對主存編程 85H rrrr PA10~PA0 BA8~BA0
Buffer1為緩沖自動重編程 28H rrrr PA10~PA0 9個×
Buffer2為緩沖自動重編程 59H rrrr PA10~PA0 9個×
讀狀態寄存器 57H

r為保留位,AD45D041用0代替,容量更大的器件一般可能會用到;

×為無關位(0或1均可,為了占時鐘位);

PA10~PA0用來指定頁地址,對AT45D041而言,一共有2048頁,占11位;

BA8~BA0用來指定內字節的起始地址,每頁264字節,占9位;

BFA8~BFA0用來指定緩沖區內字節的起始地址,緩沖區也是264字節;

52H~61H、82H-89H分別是用來區別不同操作的命令字。

執行命令時,首先通過SPI串口往Flash發送一連串的數據,然后以命令字開頭,除了“讀狀態寄存器”外,后面還要跟上頁地址和頁內的字節地址發及一些無關位。“讀主存”時,首先需要往Flash發送64bit的命令,即:命令字52(8bit)+4個“r”+頁地址(11bit)+頁內字節的起始地址(9bit)+32個無關位,發送完這64bit(通常是組合成8個字節)命令后,緊跟著從Flash讀數據以可以了(即后面的SCK信號使得數據從SO腳移出),每讀出一個字節,字節地址自動加1,如遇到該頁的末尾,只要有SCK信號,系統再加到該頁的開關處讀數據。在整個操作過程中,CS腳始終為“0”;當CS腳回到“1”時,將終止此次操作,SO腳恢復到高阻狀態。

主存傳送到Bufferx是指將2048頁主存中的任何一頁(由PA10~PA0決定)的內容復制到緩沖區,發送完32bit命令后,當CS腳由“0”為“1”后,數據的復制才真正開始。

主存與Bufferx的比較主要是看主存中的某一頁與緩沖區是否一樣,當CS腳回到“1”后,比較才開始進行,比較的結果(是否一樣)記錄在狀態寄存器的bit6中。

把帶擦除的Bufferx傳送到主存就是將緩沖區的內容復制到主存中的某一頁,復制前應將緩沖區的內容復制到主存中的某一頁,復制前應將主存中的該頁數據全部擦掉,所有這些操作只有等到CS腳回到“1”后才能進行。對于不帶擦除的Bufferx傳送到主存的操作,在命令執行前,指定的主存頁必須已被擦除過。

以Bufferx為緩沖為主存編程就是將“寫Bufferx”與“帶擦除的Bufferx傳送到主存”進行組合。在發送完命令后,寫入Flash的數據將被寫入到緩沖區內,如果遇到緩沖區末尾,要繼續寫入的數據又從緩沖區開頭寫入,直到CS腳由“0”到“1”后,主存中被指定的頁的數據被擦除后再將緩沖區的數據整個復制到主存的指定頁中。

3 狀態寄存器及操作完成指示

一般向Flash發送57H后以可讀出狀態寄存器(移出時,高位在前),狀態寄存器的位定義如表2所列。其中Bit7為“0”表示器件忙,為“1”表示可以接收新的命令;Bit6是比較結果位,為“0”表示主存與緩沖區的數據一樣,為“1”時表示最少有一個bit不同;Bit5~Bit3為該系列器件的容量指示位,一共種8種容量,對于AT45D041來說,該區域為“011”;Bit2~Bit0未使用。一共蛾6種操作會使器件處于“忙”狀態,這6種操作是:

●主存傳送到Bufferx;

●主存與Bufferx比較;

●帶擦除的Bufferx傳送到主存;

●不帶擦除的Bufferx傳送到主存;

●Bufferx為緩沖對主存編程;

●Bufferx為緩沖自動重編程。

這6種操作均需要監視狀態寄存器,以便知道操作是否完成。除了監視狀態寄存器外,更好的方法是將芯片管腳RDY/BUSY與CPU的某個中斷相連,并將中斷設置為升沿觸發,操作一完成即可觸發中斷,這樣可能節省大量的CPU時間。

4 SPI接口及應用

4.1 SPI接口

串行外圍接口一共有4種操作模式,圖3為其時序圖。這些操作模式決定了傳送與接收的時鐘相位和極性,換句話說,也就是這些模式決定了利用時鐘信號的哪個沿來控制數據傳判斷的方向。這些模式一般由主機(CPU)來設置。

當CPOL=0時,時鐘信號SCK在空閑時為“0”,即模式0和1;

如果CPOL=1,則SCK在空閑時為“1”,即模式2和3;

當CPHA=CPOL時,數據總在時鐘信號的上升沿移進Flash,下降沿移出Flash,即模式0和3。

4.2 SPI接口應用

對于12位的數據采集系統,使用AD公司的Flash集成MCU芯片AduC812可使電路設計更加簡單快捷。由于AduC812有一個與I2C兼容的SPI接口,所以與AT45系列的Flash接口只需將相應的管腳相連即可,只不過要將AduC812設為主機,而AT45D041自然以是從機了。在AduC812中有SPI控制寄存器(SPICON)與SPI數據寄存器(SPIDAT),數據寄存器的使用如同使用RS232的Buffer一樣簡單,控制寄存器的位定義如表3所列。現對其各個位定義進行說明:

ISPI:SPI中斷位,在每次傳送過錯SPIDAT中的數據后,置“1”;

WCOL:寫沖突錯誤標志位,在寫保護狀態下編程會導致該位置“1”;

SPE:SPI允許控制位,為“0”時禁止;

SPIM:主從模式選擇位,為“1”時選擇主機;

CPOL:時鐘極性選擇,為“0”時,將使CLK在空閑時為低電平;

CPHA:時鐘相位選擇,為“0”時,在時鐘上升沿被鎖存;

SPR1、SPR0:SPI波特率選擇位,BITRATE=Fose/[4,8,32,64]。“00”選擇除以4。

4.3 SPI操作模式選擇

AT45系列的Flash支持SPI模式0和3,并且在每個CS信號的下降沿,可通過采樣時鐘信號的狀態自動選擇操模式。由于在上電或復位時器件將自動進入缺省的模式3,所以使用械比較可靠。在AduC812的應用中,選擇模式0和3對“寫”Flash沒有差別,但在“讀”Flash時,選擇模式0會使從Flash讀出的數據總缺少一個bit,這可能是模式0中數據有效的時間比較靠后的緣故。圖4和圖5分別是模式0和模式3的“讀主存”時序圖,由時序圖可以看出:模式0中數據的有效時間明顯比模式3的有效時間靠后半個時鐘周期。

表2 狀態寄存器的位定義

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
RDY/BUSYCOMP011×××

表3 SPI控制寄存器的位定義

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
ISPIWOOLSPESPIMCPOLCPHASPR1SPR0


評論


技術專區

關閉