加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

W25QXX FLASH介紹

11/22 07:27
648
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

FLASH在嵌入式開發(fā)是很常用的一種芯片。它是存儲芯片的一種,通過特定的程序可以修改里面的數(shù)據(jù)。FLASH在電子以及半導(dǎo)體領(lǐng)域內(nèi)往往表示Flash Memory的意思,即平時所說的“閃存”,全名叫Flash EEPROM Memory。

FLASH存儲器又稱閃存,它結(jié)合了ROM和RAM的長處,不僅具備電子可擦除可編程(EEPROM)的性能,還可以快速讀取數(shù)據(jù)(NVRAM的優(yōu)勢),使數(shù)據(jù)不會因為斷電而丟失。

1 W25QXX簡介

W25QX系列是串行閃存器件。擦寫周期多達10W次,可將數(shù)據(jù)保存達20年之久,支持2.7~3.6V的電壓,支持標準的SPI,還支持雙輸出/四輸出的SPI,最大SPI時鐘可達80Mhz。

FLASH芯片的內(nèi)存空間一般都是由多個塊組成,而塊又是由扇區(qū)組成。

例如W25Q64就是將8M字節(jié)的容量分為了128個塊,每個塊大小為64K字節(jié),每個塊又可分為16個扇區(qū),每個扇區(qū)4K個字節(jié)。

25Q系列的FLASH最小擦除單位為一個扇區(qū),也就是每次必須擦除4K個字節(jié)。所以,這需要給FLASH開辟一個至少4K的緩存區(qū),這樣必須要求芯片有4K以上的SRAM才能有很好的操作。

2 硬件參數(shù)

硬件參數(shù)比較多,我只挑一些常用的介紹一下,更詳細的介紹可以查閱芯片手冊。

基本參數(shù) 說明
電壓 2.7V - 3.6V
電流 4mA活動電流,掉電模式下小于1uA
通訊方式 標準SPI雙路SPI四路SPI
速率 80MHz工作時鐘160MHz等效時鐘(雙路SPI模式下)320MHz等效時鐘(四路SPI模式下)
引腳 引腳名稱 I/O 功能
1 CS I 片選輸入
2 DO(IO1) I/O 數(shù)據(jù)輸出,標準SPI數(shù)據(jù)引腳
(數(shù)據(jù)輸入輸出1)*1
3 WP(IO2) I/O 寫保護輸入,低電平有效,拉低時不能寫入數(shù)據(jù)
(數(shù)據(jù)輸入輸出2)*2
4 GND -
5 DI(IO0) I/O 數(shù)據(jù)輸入,標準SPI數(shù)據(jù)引腳
(數(shù)據(jù)輸入輸出0)*1
6 CLK I 串行時鐘輸入
7 HOLD(IO3) I/O 保持輸入,拉低時,DO將處于高阻抗,DI和CLK針上的信號將被忽略,拉高時設(shè)備允許操作
(數(shù)據(jù)輸入輸出3)*2
8 VCC - 供電

注:IO0和IO1用在標準和雙路SPI模式,IO0到IO3用在四路SPI模式下。如果IO2和IO3不使用,可以硬件拉高。

3 寄存器介紹

我這里只列舉部分跟軟件編程相關(guān)的常用寄存器,更詳細的介紹可以查閱芯片手冊。。

指令名稱 數(shù)值
制造商設(shè)備ID 90h
JEDEC ID 9Fh
寫狀態(tài)寄存器 01h
讀狀態(tài)寄存器1 05h
讀狀態(tài)寄存器2 35h
讀數(shù)據(jù) 03h
寫使能 06h
寫失能 04h
扇區(qū)擦除(4KB) 20h
全片擦除 C7h
頁編程 02h

4 編程相關(guān)

當我們要使用MCU來讀寫flash芯片的時候,需要用到spi通訊,這里面有幾個比較容易踩的坑。

1、WP和HOLD引腳

如果使用標準4線spi通訊,要注意WP和HOLD引腳的狀態(tài),WP拉低時不能寫入數(shù)據(jù),HOLD拉低時,DO將處于高阻抗,DI和CLK針上的信號將被忽略。因此,如果不使用4路spi的話,WP和HOLD引腳可以直接通過硬件拉高,也可以通過MCU的GPIO拉高。否則,懸空或者拉低都會影響數(shù)據(jù)的寫入。

2、連續(xù)寫入時需要注意分區(qū)

flash一次最大可編輯256字節(jié)。flash內(nèi)存可以分成多個頁,每頁256個字節(jié),我們在使用spi寫入flash時最多只能一次寫入一頁數(shù)據(jù),并且不能跨頁寫入。因此,當我們需要連續(xù)寫入超過一頁數(shù)據(jù)時,需要注意把spi通訊分成多次。同樣的,寫入時也不能跨扇區(qū)寫入。

3、flash寫入前需要先擦除

flash寫入時是按bit操作的,只能把1改成0,只有擦除才能把0變成1,因此,如果不擦除直接寫入的話就會變成或運算,最終存儲的數(shù)據(jù)可能跟寫入的數(shù)據(jù)不一致。

4、擦除的最小單位是扇區(qū)(4K字節(jié))

flash不能只單獨擦除某一個寄存器,最少也是4096字節(jié)。如果某一個扇區(qū)原本保存了一些重要數(shù)據(jù),然后你又需要從這個扇區(qū)的中間位置添加一些新的數(shù)據(jù),這個時候需要注意在擦除前要先把原有保存的數(shù)據(jù)讀出來,擦除后再把舊的數(shù)據(jù)和新的數(shù)據(jù)寫進去,不然直接擦除的話會把原有的數(shù)據(jù)擦掉。

結(jié)束語

好了,關(guān)于W25QXX系列FLASH的介紹就講到這里了,因為關(guān)于這個芯片的資料網(wǎng)上有很多講解教程,因此本文只是挑了一些重點來講,更詳細的內(nèi)容可以查閱相關(guān)的資料,如果有哪里不懂又找不到的話也可以在評論區(qū)留言或者私信給我。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜