spi flash 操做

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

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

對於 W25Q16V:htm

  • 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 的意義:blog

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

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

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

  4. GND 接地flash

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

  6. CLK, 提供輸入輸出操做的同步時鐘.select

  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.

相關文章
相關標籤/搜索