w25n01g 代码_W25N01GV 驱动
最近在項目中用到 W25N01GV 這顆芯片。它是華邦公司的大容量 SPI 接口 Nand Flash,有 1Gbit (128M Bytes)大小,價格也不高。但是在網上找了很久也沒找到相關的驅動代碼。比較容易找到的是 W25Q128,或 W25Q256 的代碼。
還有這篇在 Xilinx 公司的 XC6SLX45-2CSG324 上驅動 W25Q128BV 的代碼 ( 作者 jgliu )。寫的很詳細。
https://www.cnblogs.com/liujinggang/p/9651170.html
但是 W25N01GV 這顆芯片的指令和 W25Q128/256 還是有不少區別的。下面的代碼是在 jgliu 的代碼的基礎上移植的,在 Altera 的 Cyclone V + W25N01GVxxIG上調試通過了。下面總結一些需要注意的要點:
1. SPI 的信號線最好加 1k 上拉電阻, 實測發現 W25N01GV 這顆芯片的驅動能力比較弱。在調試的時候這可能發生誤導,因為 BUSY = 0 時表明命令執行完畢,實際上是讀回來的虛假低電平。
2. Protection Register / Status Register-1 (Volatile Writable, OTP lockable) 此寄存器上電后的默認值是 0b01111100,也就是說 Flash 處于寫保護狀態。我們需要用 Write Status Register (1Fh/01h) 這條指令清除寫保護。 否則擦寫指令不起作用。
3. 要注意兩個型號的區別
W25N01GVxxIG, 默認 BUF = 1, 處于 Buffer Read Mode。
W25N01GVxxIT, 默認 BUF = 0,處于 Continous Read Mode。
兩種模式可以用過命令切換。
4. 寫入數據分兩步:1. 先把數據傳入芯片內部的 2048 字節 RAM 緩沖區。比如通過 Quad Program Data Load (32h) 指令裝載數據。 2 執行 Program Execute (10h)。如果只執行第一步,不執行第二步,數據還可以從緩沖區讀出來。但是掉電后數據就沒有了。
5. 在執行 Block Erase,Program Execute 等命令前要先執行 Write Enable (06h) 指令,否則指令不起作用。
下面的代碼尚未優化,當前運行在比較低的頻率上。實現了擦除,和讀寫操作。
2+
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的w25n01g 代码_W25N01GV 驱动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java类验证和装载顺序_JVM类加载过
- 下一篇: 只显示小方格_不妨谈谈二维方格子吧