基于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的使用,只做到初步的數據讀寫,后面要用起來,還要更多的研究和測試。
總結
以上是生活随笔為你收集整理的基于FPGA的关于flash一些学习记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac 终端运行jar文件
- 下一篇: 报Failed to resolve: