新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 基于SST25VF020的數據存儲系統設計

        基于SST25VF020的數據存儲系統設計

        作者: 時間:2013-05-21 來源:網絡 收藏
        前言

          近年來,閃速存儲器已應用在數以千計的產品中,特別是移動通信、MP3音樂播放器、手持PC管理器、數碼相機、網絡路由器、艙內錄音機等工業產品。閃速存儲器由于具有非易失性和電可編程擦除性,從而具有半導體存儲器的讀取速度快、存儲容量大等優點,同時又克服了DRAM及SRAM斷電丟失所存數據的缺陷。與EPROM相比較,閃速存儲器的優勢在于系統電可擦除和可重復編程,且不需要特殊的高電壓,此外,它還有成本低,密度大的特點。

          閃速存儲器由于各自技術架構的不同,又可分為NOR技術、NAND技術、AND技術和由EEPROM派生的閃速存儲器。以EEPROM做閃速存儲陣列的Flash Memory,如SST的小扇區結構閃速存儲器具有EEPROM與NOR技術Flash Memory二者折中的性能特點:(1)讀寫的靈活性遜于EEPROM,但與NOR技術Flash Memory的塊結構相比,其頁尺寸小,具有快速隨機讀取和快編程、快擦除的特點。(2)與EEPROM比較,具有明顯的成本優勢。

          SST25VF系列產品,是業界第一個完整的串行閃存產品系列,其記憶容量包含512Kbit至16Mbit,且采用產業標準的8接腳SOIC封裝及超薄型WSON封裝技術。此外,SST最新串行閃存提供最新自動地址增值(AAI)資料寫入模式,與單一字節資料寫入模式相比,該資料寫入模式能夠將整個閃存的資料寫入時間減少50%。SST25VF系列是以高效能超快閃技術為基礎,加上四線及串行外圍界面(SPI),相對平行EEPROM等非揮發性內存解決方案而言,SST的串行式閃存產品使用較少的接腳,將資料往返于系統CPU,因此可減少電路板空間、耗能及成本。

          芯片介紹

          芯片引腳介紹

          是SST25VF系列產品中的一員,其芯片具有以下特點:總容量為2M;單電源讀和寫操作,工作電壓為2.7-3.3V;低功耗,工作電流為7mA,等待電流為3μA;時鐘頻率高達33MHz,快速編程、快速擦除、快速讀取;小型一致閃區尺寸4KB;數據保存100年;CMOS I/O兼容等。

          狀態寄存器

          狀態寄存器用來對芯片的工作模式進行設定,在工作過程中,可以提供芯片的工作狀態,比如讀、寫、寫保護等。

          工作過程

          首先設置狀態寄存器,對FLASH的工作模式、寫使能以及寫保護區域進行設定。在讀寫的過程中,還可以通過讀寄存器內容來判斷FLASH當前的工作狀態。設定結束后,可以開始讀寫操作。

          寫操作

          選用自動地址增值寫入(AAI)模式,這種模式在寫入大量數據時可以縮短程序運行時間。在寫操作中,首先寫入寫使能命令字(0x06),AAI模式以AF為寫命令,順序寫入存儲起始地址和存儲數據,每傳送完一字節的數據時,時鐘位置高,為寫下一字節數據做準備。當數據全部寫入時,寫終止寫使能命令字(0x04),寫操作結束。在整個寫過程中,狀態寄存器中的BUSY位始終為1,寫操作結束后,BUSY自動復位。

          讀操作

          在讀操作中,首先寫入讀命令字(0x03),然后寫入讀取數據的起始地址,數據會順序讀出,直至讀完。如果地址累加至7FFFF,下次數據讀取會從00000地址開始。在整個讀過程中,狀態寄存器中的BUSY位始終為1,寫操作結束后,BUSY自動復位。

          擦除操作

          提供3種芯片擦除方式:扇區擦除、塊擦除和全擦除。命令字分別為0x20、0x52、0x60,可分別實現不同范圍的擦除。在整個擦除過程中,狀態寄存器中的BUSY位始終為1,擦除操作結束后,BUSY自動復位。

          硬件電路

          系統控制器選用MSP430F149單片機,對溫度傳感器信號進行模數轉換后采樣,將采集到的數據通過SPI串行通信存儲到FLASH中。當系統通過異步串口和PC機相連時,通過SPI串行通信將儲存到FLASH中的數據讀到PC機中,從而對采集的數據進行分析、處理。將采集到的數據保存后,即可擦除FLASH,為下一次采集做準備。存儲電路連接如圖4所示。通過上拉電阻將CE#、SO端的初始狀態置為高電平,寫保護端始終為高電平。相應的輸入輸出端、時鐘信號端和使能端分別和單片機接口相連。

          關鍵源程序

          case 0x03: /* 讀數據 */

          TXBUF1 =0x03; // 發讀命令字

          while (IFG20x20==0x00); // 發送完否?

          for(i=0;i《=2;i++) /* 發送地址 */

          {TXBUF1=addr[i];

          while (IFG20x20==0x00);}//發送完否?

          for(i=0;i《=19;i++) /* 讀取數據 */

          { TXBUF1=0X33 ; // 發送偽數據用于產生接收數據CLK

          while (IFG20x20==0x00); // 發送完否?

          while( IFG20x10==0x00) ;

          backdata1[i]=RXBUF1 ;} //存放讀取的數據

          delay(2) ;

          P5OUT |=0X01 ; // 拉高 STE1

          delay(200) ;

          break;

          case 0xaf: /* AAI 模式 寫數據 */

          P5OUT =~0X01 ; // 拉 底 STE1

          delay(2) ;

          TXBUF1 =0X06 ; /* write enable */

          while (IFG20x20==0x00); // 發送完否?

          delay(2) ;

          P5OUT |=0x01 ; // 拉高 STE1

          delay(12);

          P5OUT =~0x01 ; // 拉底 STE1

          delay(2) ;

          TXBUF1 =0xaf; // 發寫命令字

          while (IFG20x20==0x00); // 發送完否?

          for(i=0;i《=2;i++) /* 發送地址 */

          { TXBUF1=addr[i];

          while (IFG20x20==0x00); }//發送完否?

          for(i=0;i《=19;i++)

          { TXBUF1=data1[i] ; // 連續寫20字節的數據

          while (IFG20x20==0x00) ; // 發送完否?

          if(i==19) break ;

          delay(2) ;

          P5OUT |=0X01 ; // 拉高 STE1

          delay(12) ;

          P5OUT =~0X01 ; // 拉底 STE1

          delay(2) ;

          TXBUF1 =0xaf ;

          while (IFG20x20==0x00); } // 發送完否?

          delay(2) ;

          P5OUT |=0X01 ; // 拉高 STE1

          delay(12);

          P5OUT =~0X01 ; // 拉底 STE1

          delay(2) ;

          TXBUF1 =0X04 ; // /* 結束AAI模式*/

          while (IFG20x20==0x00); // 發送完否?

          delay(2) ;

          P5OUT |=0X01 ; // 拉高 STE1

          break;

          總結

          S ST串行式閃存因具備低耗能與小型接腳的特色,可作為硬盤、繪圖卡、電子玩具、智能卡、MP3播放器、無線電話、藍牙模塊及GPS模塊等裝置比較理想的存儲解決方案。由于SST串行式閃存的容量從512Kbit至16Mbit不等,因此適用于從低階智能卡至高容量的聲音檔案存儲,如電話錄音機等各類資料存儲 應用裝置。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 肥城市| 安新县| 资兴市| 宁乡县| 布尔津县| 同心县| 泽普县| 红河县| 古蔺县| 尉氏县| 平陆县| 渝中区| 婺源县| 乌鲁木齐县| 丹江口市| 镇雄县| 内丘县| 靖安县| 新化县| 蓝田县| 三都| 塔河县| 盐城市| 晋江市| 宁德市| 鞍山市| 灌云县| 凉山| 沙雅县| 岑溪市| 宜州市| 建阳市| 南投市| 阳城县| 沙雅县| 枣庄市| 马公市| 文山县| 滦南县| 舞钢市| 波密县|