spi flash 操作


W25Q16V 是華邦出的一顆 spi flash. 25系列是比較通用的一個系列. 后面的數字 16 跟容量有關, 16 表示 16Mbits, 相當於 2MB.

與此類似的還有 W25Q128V 等, 128 就表示容量 16MB.

對於 W25Q16V:

  • page 為最大的編程單位. 1 page = 256 bytes
  • sector 為最小的擦除單位, 1sector = 16 pages = 4096 bytes (4KB)
  • 塊擦除有兩種大小:
    32K block = 8 secotrs = 128 pages = 32 kbytes
    64k block = 16 sectors = 256 pages = 64 kbytes

封裝

如圖的 8-pin 是較常用的一種封裝. 各 pin 的意義:

  1. CS , chip select, 芯片使能引腳. CS拉高時, 芯片處理省電模式, 各數據引腳(D0/D1/D2/D3)處理高阻態. CS拉低時芯片工作, 數據引腳可以傳輸數據.

  2. DO 用於(在CLK下降沿)輸出數據或狀態. 正常情況下只有DI/DO作為IO引腳, 啟用 Quad 模式需要置QE(Quad Enable)位. QE=1時, WP和HOLD分別變為IO2,IO3.

  3. WP pin, 低電平有效, 以保護狀態寄存器不被寫入.

  4. GND 接地

  5. DI用於(在CLK上升沿)向 Flash 輸入指令, 地址 或 數據.

  6. CLK, 提供輸入輸出操作的同步時鍾.

  7. HOLD pin, 當多個芯片共用 SPI 總線時非常有用. HOLD 為低電平時, DO 引腳變為高阻態, 且此時 DI/CLK 上的信號被忽略. 相當於芯片此時不工作. 假設對一個 SPI FLASH 的頁寫操作只進行到一半, 此時一個中斷來了, 另一個更高優先級的任務要占用 SPI 總線, 此時就可以使用 HOLD 拉低來暫停 SPI FLASH 內部的工作, 等到任務切換回來再讓操作繼續下去.

  8. VCC, 2.7 ~ 3.6V

內部模塊框圖

SPI 操作

標准 SPI 有四根信號線: CS, CLK, DI, DO. 其中 DI 用於在CLK上升沿時輸入指令, 地址或數據, DO用於在CLK下降沿時讀數據或狀態.

SPI 總線有四種工作模式, 區別是 CLK 常態電平 和 數據采樣時機. W25Q16V 支持 MODE0 和 MODE3. 詳見這篇筆記

使用3B/BB指令可以進入"快速雙路模式", 此時DI/DO變為IO0, IO1.

6B, EB 進入"四路"模式, 此時 WP, HOLD 分別變為 IO2, IO3

狀態寄存器

BUSY, 只讀位,

當 SPI FLASH 在執行 頁編程, 扇區擦除, 塊擦除, 整片擦除, 寫狀態寄存器指令 等操作時, BUSY位被置1, 這些操作完成之后, BUSY位自動清0. 當BUSY位為1時, 除了"讀狀態寄存器"操作和"擦除暫停"操作之外, 不接受任何其他操作.

WEL, Write Enable Latch

只讀位. 當執行了一個"寫使能"指令后, WEL置1, 表示可以寫入了. "寫禁止"時, WEL為0.

"寫禁止", "頁編程", "扇區擦除", "塊擦除", "整片擦除", "寫狀態寄存器", 執行完這些操作之后, WEL 自動被清0, 回到禁止寫入狀態.

BP0, BP2, BP2 (Block Protect Bits) 塊保護

"寫狀態寄存器" 指令可以改變這些位的值.

TB

SEC

SRP1, SRP0, 狀態寄存器保護

這兩個位 與 WP 引腳一起, 用於保護狀態寄存器不被改寫.

QE

指令

有 26 個基本指令. DI 輸入的第一個字節就是指令代碼. DI在CLK上升沿采樣, MSB .

指令有一個或多個字節, 可能后面還有地址, 數據, dummy.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM