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

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

W25QXX FLASH介紹

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

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

FLASH存儲(chǔ)器又稱(chēng)閃存,它結(jié)合了ROM和RAM的長(zhǎng)處,不僅具備電子可擦除可編程(EEPROM)的性能,還可以快速讀取數(shù)據(jù)(NVRAM的優(yōu)勢(shì)),使數(shù)據(jù)不會(huì)因?yàn)閿嚯姸鴣G失。

1 W25QXX簡(jiǎn)介

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

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

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

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

2 硬件參數(shù)

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

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

注:IO0和IO1用在標(biāo)準(zhǔn)和雙路SPI模式,IO0到IO3用在四路SPI模式下。如果IO2和IO3不使用,可以硬件拉高。

3 寄存器介紹

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

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

4 編程相關(guān)

當(dāng)我們要使用MCU來(lái)讀寫(xiě)flash芯片的時(shí)候,需要用到spi通訊,這里面有幾個(gè)比較容易踩的坑。

1、WP和HOLD引腳

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

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

flash一次最大可編輯256字節(jié)。flash內(nèi)存可以分成多個(gè)頁(yè),每頁(yè)256個(gè)字節(jié),我們?cè)谑褂胹pi寫(xiě)入flash時(shí)最多只能一次寫(xiě)入一頁(yè)數(shù)據(jù),并且不能跨頁(yè)寫(xiě)入。因此,當(dāng)我們需要連續(xù)寫(xiě)入超過(guò)一頁(yè)數(shù)據(jù)時(shí),需要注意把spi通訊分成多次。同樣的,寫(xiě)入時(shí)也不能跨扇區(qū)寫(xiě)入。

3、flash寫(xiě)入前需要先擦除

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

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

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

結(jié)束語(yǔ)

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

相關(guān)推薦

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