本文以常見的4M Flash W25Q32為例。
1、Flash存儲容量
容量可以從芯片的名稱上看出來,雖然不同廠家的命名方式不一樣,但是大體類似,比如W25Q80, W25Q16, W25Q32等。
W25Q80: 8M-bit / 1M -byte (1,048,576)W25Q16: 16M-bit / 2M-byte (2,097,152)W25Q32: 32M-bit / 4M-byte (4,194,304)
2、存儲單位
Page(頁)
:256字節,編程最小單位,一次最多編程256字節。
Sector(扇區)
:擦除的最小單位,一個Sector一般包含16個Page,即4KB。
Block(塊)
:包含16個Sector,塊擦除可以32KB(半塊)、64KB(整塊)兩種擦除方式。
2、封裝和管腳
封裝類型有SOIC-8、WSON-8等。注意不一定封裝越小越貴,要看哪一款用量大,用量大產量就大,產量大價格相對就便宜。元器件選型時要注意。
管腳序號 (SOIC-8為例) |
定義 |
|
1 |
/CS |
選通信號 |
2 |
DO(IO1) |
數據輸出或者IO1 |
3 |
/WP(IO2) |
寫保護或者IO2 |
4 |
GND |
地 |
5 |
DI(IO0) |
輸入輸入(IO0) |
6 |
CLK |
時鐘 |
7 |
/HOLD(IO3) |
保持或者IO3 |
8 |
VCC |
電源 |
3、通訊方式
W25Q32支持標準的SPI、
Dual SPI,Quad SPI
標準SPI
:DI和DO都是單向的,即一進一出。
Dual SPI
:DI和DO是雙向的,即IO0和IO1。
Quad SPI
:DI、DO、/WP、/HOLD變為IO0、IO1、IO2、IO3。
標準SPI比較常見,Dual SPI和Quad SPI用得不多,他們通訊數據線多一些,速度更快。有些單片機沒有內部Flash或者內部Flash較少,但是帶有QSPI Flash接口,可以使用Quad SPI和Flash通訊,當然這種外部Flash運行程序速率肯定要打折扣的,這是題外話了。
4、關于寫保護
為了保證數據的完整,有以下幾種寫保護措施,防止軟件誤操作和電源不穩造成的數據錯誤。
1、電源低于下限值,自動寫保護。
2、上電后寫保護,直到Delay-Time時間到。
3、通過指令的方式進行寫保護。
4、通過狀態寄存器進行寫保護。
5、硬件管腳/WP寫保護。
說實話,寫保護方法挺多,用的不多,看自己需求吧。
4、狀態寄存器介紹
狀態寄存器1
狀態寄存器2
BUSY:只讀位,可以簡單理解為芯片自己在干活,比較忙,忙完了自動清除。
WEL:只讀位,寫使能指令后置1,寫禁用后清零。
BP2, BP1, BP0:寫保護相關位,是個非易失位,可讀可寫,用于寫保護控制,保護原理下面介紹。
TB:非易失位,寫保護相關位,保護底部還是頂部。
SEC:非易失位,保護扇區還是塊。
SRP1、SRP0:也是個非易失位,可讀可寫,和/WP管腳不同組合確定保護方式。
QE:Quad使能位,啟用4個數據線通訊方式,也是個非易失位。
注意:狀態寄存器里有些位是非易失特性,大部分SPI Flash會出現越擦越慢的情況,這些位肯定是存儲在Flash里,也會出現越擦越慢的情況,改寫的越多,再次改寫時間越長,這一點要留意。
寫保護:
舉個例子:如上圖藍色區域
例1:SEC=0保護塊,TB=0保護頂端,保護60-63這4個塊共256K,占用了Flash 1/16的空間。
例子2:SEC=1保護扇區,TB=0保護頂端,保護63塊頂端8K。
5、指令:
指令就不一一解讀了,手冊中有詳細的時序圖,舉幾個常用指令。
讀指令:03H,時序圖如下
先發讀指令碼03H,然后24位地址,之后SPI返回數據。
寫指令:02H,時序圖如下
先發寫指令碼02H,然后24位地址,之后要寫入的數據,寫操作時注意地址回繞問題。
扇區擦除指令:20H,時序圖如下
先發寫指令碼20H,然后24位地址,等待擦除完成即可。
-
FlaSh
+關注
關注
10文章
1623瀏覽量
147785 -
接口
+關注
關注
33文章
8526瀏覽量
150862 -
存儲
+關注
關注
13文章
4266瀏覽量
85686 -
SPI
+關注
關注
17文章
1701瀏覽量
91345 -
管腳
+關注
關注
1文章
226瀏覽量
32002
發布評論請先 登錄
相關推薦
評論