隨著數(shù)據(jù)處理系統(tǒng)智能化程度的越來越高,經(jīng)常需要在無人干預(yù)的情況下,自動(dòng)加載某些數(shù)據(jù)或參數(shù)到系統(tǒng)工作單元,以保證系統(tǒng)的正常工作。這些數(shù)據(jù)或參數(shù)通常都以數(shù)據(jù)文件形式保存在大容量、低功耗、可快速重復(fù)擦寫的存儲(chǔ)器中,而且掉電后數(shù)據(jù)不丟失,以便用戶根據(jù)需要隨時(shí)讀取。S29AL016D70能很好的滿足這些需求。 1 閃存S29AL016D簡介 1.1 主要性能 S29AL016D70是Spansion公司生產(chǎn)的容量為2Mx8 bit/1 Mx16 bit的閃存器件,該器件采用3 V供電,訪問時(shí)間為70 ns,工作溫度范圍為-40℃~125℃,靜態(tài)電流200 nA,讀數(shù)據(jù)電流為9 mA,擦寫數(shù)據(jù)電流為20 mA可擦寫次數(shù)在一百萬次以上,具有存儲(chǔ)容量大,速度快,功耗低等優(yōu)點(diǎn)。S29AL016D的芯片邏輯圖如圖1所示。其中,A0~A19和D0~D15分別為地址線和數(shù)據(jù)線,CE為片選信號,低有效;OE為輸出使能信號,低有效;WE是寫選通信號,低有效;BYTE為8位或16位數(shù)據(jù)模式選擇端,低電平為8位,高電平為16位。采用8位模式時(shí),DO~D7為有效數(shù)據(jù)線,D15為地址線:RY/BY為準(zhǔn)備好和忙狀態(tài)輸出。S29AL016D70內(nèi)部包括35個(gè)數(shù)據(jù)段(Sector),其中段0到段30為64 KB,段31為32KB,段32、33為8 KB,段34為16 KB。 1.2 操作模式 S29AL016D70的操作模式如表1所列,實(shí)際工作中,經(jīng)常用到的操作包括片擦除、段擦除、寫入數(shù)據(jù)、讀出數(shù)據(jù)等。 2 應(yīng)用設(shè)計(jì) 2.1 硬件設(shè)計(jì) 根據(jù)設(shè)計(jì)需要,可利用數(shù)字信號處理器DSP通過雙口RAM和232串行通信獲得數(shù)據(jù),并將數(shù)據(jù)保存在FLASH對應(yīng)地址。 flash的數(shù)據(jù)讀寫有8位數(shù)據(jù)讀寫和16位數(shù)據(jù)讀寫兩種方式。 利用232串口通信時(shí),收發(fā)的數(shù)據(jù)大多都是8位。若在16位數(shù)據(jù)工作模式下,直接寫入要浪費(fèi)一半存儲(chǔ)區(qū),否則需將兩個(gè)8位字節(jié)數(shù)據(jù)拼成一個(gè)16位字?jǐn)?shù)據(jù)再寫入,也會(huì)消耗很多工作時(shí)間,而采用8位數(shù)據(jù)工作模式,則不需要進(jìn)行數(shù)據(jù)拼接,使用比較方便。因此,實(shí)際工作中,大多采用8位數(shù)據(jù)工作模式。同樣,雙口RAM也采用8位數(shù)據(jù)的雙口RAM,設(shè)計(jì)中可使用IDT7132。圖2所示是其硬件連接原理圖。 工作中,若采用16位數(shù)據(jù)工作模式,只需將FLASH芯片的BYTE腳接至高電平即可。 2.2 操作模式 要向FLASH寫入數(shù)據(jù),必須先對FLASH進(jìn)行擦除操作。擦出操作可通過給FIASH芯片寫入擦除指令時(shí)序來完成,擦除的結(jié)果是將FLASH存儲(chǔ)區(qū)中所有數(shù)據(jù)變?yōu)?xff(8位)或0xffff(16位),這樣,可以方便地寫入數(shù)據(jù)。 擦除操作分為片擦除和段擦除兩種。片擦除為整片擦除,段擦除只擦除指定段。為使用方便,在擦除某段數(shù)據(jù)時(shí),應(yīng)保證其他段數(shù)據(jù)不受影響。因此,軟件多采用段擦除模式。其代碼如下: 段擦除函數(shù)(flash基地址為0xb0000000); void erase_flash(unsigned int sector_num)//sector為段號片擦除函數(shù)可參照編寫 { 將數(shù)據(jù)保存在FLASH中后,若要對擦除后的段數(shù)據(jù)地址執(zhí)行寫操作,也可以通過給芯片寫入編程操作時(shí)序來完成。寫操作的結(jié)果是將地址總線指定地址的數(shù)據(jù)相應(yīng)位1變?yōu)?,通俗的說,就是擦除后的數(shù)據(jù)各位都為1,寫操作是將待寫入數(shù)據(jù)的不為1的位變?yōu)?。其寫操作函數(shù)如下: 進(jìn)行擦除和寫入操作時(shí),應(yīng)在進(jìn)行寫入時(shí)序操作時(shí),對寄存器的偏移地址左移一位進(jìn)行操作,這是因?yàn)?位數(shù)據(jù)工作模式下,芯片地址線的最低位為A-1,而處理器地址線的最低位為A0;若是16位數(shù)據(jù)操作模式,尋址寄存器時(shí),則不需要進(jìn)行移位操作。 此外,16位數(shù)據(jù)操作模式和8位數(shù)據(jù)操作模式在編寫指令時(shí)序時(shí)也有區(qū)別,即寫入寄存器的指令的位數(shù)要和數(shù)據(jù)位數(shù)相同,如8位指令為:*(int*)(Oxb0000000+(0x555 3 結(jié)束語 應(yīng)用本文的設(shè)計(jì)可以成功地完成對FLASH的各種操作,實(shí)現(xiàn)向FLASH中保存數(shù)據(jù)的功能。事實(shí)上,各廠家生產(chǎn)的FLASH在性能上和使用方法都有所不同,S29AL016D除了速度快、容量大之外,還有一個(gè)特點(diǎn)就是可選擇性地進(jìn)行8位或16位數(shù)據(jù)操作。但在軟硬件設(shè)計(jì)上要做些相應(yīng)改變,筆者根據(jù)工作實(shí)踐寫出一點(diǎn)體會(huì),希望能給同行提供幫助。 |