<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 安全與國(guó)防 > 設(shè)計(jì)應(yīng)用 > SPI串行Flash在數(shù)據(jù)存儲(chǔ)系統(tǒng)中的應(yīng)用

          SPI串行Flash在數(shù)據(jù)存儲(chǔ)系統(tǒng)中的應(yīng)用

          作者: 時(shí)間:2016-12-23 來源:網(wǎng)絡(luò) 收藏

          http://www.ex-cimer.com/article/201612/333179.htm

          1 概述

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

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

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

          ●一頁(yè)主存?zhèn)魉偷紹uffer的典型時(shí)間為80μs;

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

          ●最大時(shí)鐘頻率為10MHz;

          ●具有硬件擦、寫保護(hù)功能,當(dāng)WP腳為低時(shí),前256頁(yè)鈄禁止編程。

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

          ●具有商業(yè)和工業(yè)兩種溫度范圍;

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

          ●帶有串行接口,讀寫操作時(shí)地址會(huì)自動(dòng)增1;

          ●復(fù)位時(shí)將終止正在進(jìn)行的操作,當(dāng)復(fù)位管腳恢復(fù)高電平時(shí),操作也可以恢復(fù);

          ●傳送數(shù)據(jù)時(shí),高位(MSB)在前。

          2 操作命令介紹

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

          表1 AT45D041的操作命令集

          讀主存 52H rrr PA10~PA0 BA8~BA0 32個(gè)×
          讀Buffer1 54H ×××× 11個(gè)× BFA8~BFA0 8個(gè)×
          讀Buffer2 56H ×××× 11個(gè)× BFA8~BFA0 8個(gè)×
          主存?zhèn)魉偷紹uffer1 53H rrrr PA10~PA0 9個(gè)×
          主存?zhèn)魉偷紹uffer2 55H rrrr PA10~PA0 9個(gè)×
          主存與Buffer1比較 60H rrrr PA10~PA0 9個(gè)×
          主存與Buffer2比較 61H rrrr PA10~PA0 9個(gè)×
          寫B(tài)uffer1 84H ×××× 11個(gè)× BFA8~BFA0
          寫B(tài)uffer2 87H ×××× 11個(gè)× BFA8~BFA0
          帶擦除的Buffer1傳送到存 83H rrrr PA10~PA0 9個(gè)×
          帶擦除的Buffer2傳送到主存 86H rrrr PA10~PA0 9個(gè)×
          不帶擦除的Buffer1傳送到主存 88H rrrr PA10~PA0 9個(gè)×
          不帶擦除的Buffer2傳送到主存 89H rrrr PA10~PA0 9個(gè)×
          Buffer1為緩沖對(duì)主存編程 82H rrrr PA10~PA0 BA8~BA0
          Buffer2為緩沖對(duì)主存編程 85H rrrr PA10~PA0 BA8~BA0
          Buffer1為緩沖自動(dòng)重編程 28H rrrr PA10~PA0 9個(gè)×
          Buffer2為緩沖自動(dòng)重編程 59H rrrr PA10~PA0 9個(gè)×
          讀狀態(tài)寄存器 57H

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

          ×為無關(guān)位(0或1均可,為了占時(shí)鐘位);

          PA10~PA0用來指定頁(yè)地址,對(duì)AT45D041而言,一共有2048頁(yè),占11位;

          BA8~BA0用來指定內(nèi)字節(jié)的起始地址,每頁(yè)264字節(jié),占9位;

          BFA8~BFA0用來指定緩沖區(qū)內(nèi)字節(jié)的起始地址,緩沖區(qū)也是264字節(jié);

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

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

          主存?zhèn)魉偷紹ufferx是指將2048頁(yè)主存中的任何一頁(yè)(由PA10~PA0決定)的內(nèi)容復(fù)制到緩沖區(qū),發(fā)送完32bit命令后,當(dāng)CS腳由“0”為“1”后,數(shù)據(jù)的復(fù)制才真正開始。

          主存與Bufferx的比較主要是看主存中的某一頁(yè)與緩沖區(qū)是否一樣,當(dāng)CS腳回到“1”后,比較才開始進(jìn)行,比較的結(jié)果(是否一樣)記錄在狀態(tài)寄存器的bit6中。

          把帶擦除的Bufferx傳送到主存就是將緩沖區(qū)的內(nèi)容復(fù)制到主存中的某一頁(yè),復(fù)制前應(yīng)將緩沖區(qū)的內(nèi)容復(fù)制到主存中的某一頁(yè),復(fù)制前應(yīng)將主存中的該頁(yè)數(shù)據(jù)全部擦掉,所有這些操作只有等到CS腳回到“1”后才能進(jìn)行。對(duì)于不帶擦除的Bufferx傳送到主存的操作,在命令執(zhí)行前,指定的主存頁(yè)必須已被擦除過。

          以Bufferx為緩沖為主存編程就是將“寫B(tài)ufferx”與“帶擦除的Bufferx傳送到主存”進(jìn)行組合。在發(fā)送完命令后,寫入Flash的數(shù)據(jù)將被寫入到緩沖區(qū)內(nèi),如果遇到緩沖區(qū)末尾,要繼續(xù)寫入的數(shù)據(jù)又從緩沖區(qū)開頭寫入,直到CS腳由“0”到“1”后,主存中被指定的頁(yè)的數(shù)據(jù)被擦除后再將緩沖區(qū)的數(shù)據(jù)整個(gè)復(fù)制到主存的指定頁(yè)中。

          3 狀態(tài)寄存器及操作完成指示

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

          ●主存?zhèn)魉偷紹ufferx;

          ●主存與Bufferx比較;

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

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

          ●Bufferx為緩沖對(duì)主存編程;

          ●Bufferx為緩沖自動(dòng)重編程。

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

          4 SPI接口及應(yīng)用

          4.1 SPI接口

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

          當(dāng)CPOL=0時(shí),時(shí)鐘信號(hào)SCK在空閑時(shí)為“0”,即模式0和1;

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

          當(dāng)CPHA=CPOL時(shí),數(shù)據(jù)總在時(shí)鐘信號(hào)的上升沿移進(jìn)Flash,下降沿移出Flash,即模式0和3。

          4.2 SPI接口應(yīng)用

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

          ISPI:SPI中斷位,在每次傳送過錯(cuò)SPIDAT中的數(shù)據(jù)后,置“1”;

          WCOL:寫沖突錯(cuò)誤標(biāo)志位,在寫保護(hù)狀態(tài)下編程會(huì)導(dǎo)致該位置“1”;

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

          SPIM:主從模式選擇位,為“1”時(shí)選擇主機(jī);

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

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

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

          4.3 SPI操作模式選擇

          AT45系列的Flash支持SPI模式0和3,并且在每個(gè)CS信號(hào)的下降沿,可通過采樣時(shí)鐘信號(hào)的狀態(tài)自動(dòng)選擇操模式。由于在上電或復(fù)位時(shí)器件將自動(dòng)進(jìn)入缺省的模式3,所以使用械比較可靠。在AduC812的應(yīng)用中,選擇模式0和3對(duì)“寫”Flash沒有差別,但在“讀”Flash時(shí),選擇模式0會(huì)使從Flash讀出的數(shù)據(jù)總?cè)鄙僖粋€(gè)bit,這可能是模式0中數(shù)據(jù)有效的時(shí)間比較靠后的緣故。圖4和圖5分別是模式0和模式3的“讀主存”時(shí)序圖,由時(shí)序圖可以看出:模式0中數(shù)據(jù)的有效時(shí)間明顯比模式3的有效時(shí)間靠后半個(gè)時(shí)鐘周期。

          表2 狀態(tài)寄存器的位定義

          Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
          RDY/BUSYCOMP011×××

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

          Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
          ISPIWOOLSPESPIMCPOLCPHASPR1SPR0


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();