基於FPGA的關於flash一些學習記錄

基於FPGA的關於flash一些學習記錄

使用 winbond 公司的 128Mbit Qual SPI 接口的 FLASH,芯號爲 W25Q128BV, 支持 SPI, Dual SPI 和 Quad SPI 接口方式。在 Fast Read 模式,接口的時鐘速率最大可以達到 104Mhz。FLASH 的容量由 65,536 個 256-byte 的 Page 組成。W25Q128 的擦除方法有三種,一種爲 Sector 擦除(16 個 page,共 4KB),一種爲 Block 擦除(128 個 page,共 32KB), 另一種爲 Chip 擦除(整個擦除)。

△flash 編程芯片手冊解析

SCK上升沿輸入數據,下降沿輸出數據。8bit方式。

 

SPI數據讀取方式: (READ: 03h)

RDID:讀身份信息  (RDID: 9Fh)

 

 

 

讀設備ID (READ_ID: 90h)

 

寫命令使能: (WREN: 06h)  (WRDI: 04h)

 

讀取狀態寄存器:(RDSR: 05h)

寫狀態寄存器:(WRSR: 01h)

對整頁進行數據編程:Page Program (PP: 02h)

扇區擦除:(SE: 20h, D8h)

塊擦除: (BE: C7h, 60h)

 

命令彙總:

02H是帶地址的命令,所以是可以跟隨地址寫數據的,只是寫數據範圍只在當前頁裏而已。

 

讀狀態寄存器:Read Status Register (RDSR: 05h)

 

 

模式0的讀寫時序:

 

 

△測試結果

ID讀取正常。

數據讀寫測試正常。

△實測:

1,首先進行擦除

2,寫入數據

3,讀取數據成功

△flash的內存梳理

用的是256KB的。

1,每個設備有64個扇區,2,每個扇區有1024個頁,3,每個頁有256字節。

對應的地址位置:

設計思路:先只用一個扇區,後面再實現更多的。即地址只有:000000-03ffffh,有1024頁,最多存下262143字節(=256*1024)的數據。262144/9=29127次!

如果只用一頁的話,只有256字節,可存28次。

但要加末尾地址,不然斷電後,不知道寫到哪兒了,所以是一次寫入12字節,256/12=21次。

 

△說明:

頂層向該層(Flash_top)提供命令數據(共9字節),起始存儲信號(start_pp),讀取flash數據信號(GetAllData)。

此模塊的功能要求是:

①在檢測到start_pp信號後,將9字節命令數據依次存入flash;每接收完STM32數據一次,就會有一個start_pp信號高電平脈衝。

②在接收到GetAllData信號後,將前面存儲在flash中的數據,全部讀出;數據輸出接口擬爲:output [7:0] Flash_Data。

附言:若要等到全部存完纔可讀取flash數據,在上位機視角,不知道該何時才能讀取數據。所以還需實現功能②的要求。

△程序完善:

1,只寫入temp=55是可以的。

2,變化的數寫入與讀取成功。

 

簡單地梳理了下flash的使用,只做到初步的數據讀寫,後面要用起來,還要更多的研究和測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章