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