一、Flash介紹
常用的flash類型有NOR Flash 和Nand Flash 兩種;
(1)Nor Flash
1、Nor Flash的接口和RAM完全相同,可以隨機訪問任意地址的數(shù)據,在其上進行讀操作的效率非常高,但是擦除和寫操作的效率很低,另外,Nor Flash的容量一般比較小,通常,Nor Flash用于存儲程序;
2、Nor Flash的塊大小范圍為64KB—128KB;
3、擦寫一個Nor Flash塊需要4s,
4、市場上Nor Flash 的容量通常為1MB—4MB
(2)Nand Flash
1、Nand Flash的接口僅僅包含幾個I/O引腳,需要串行地訪問,Nand Flash進行擦除和寫操作的效率很高,容量較大,
通常Nand Flash用于存儲數(shù)據;
2、Nand Flash的塊大小范圍為8KB—64KB;
3、擦寫一個Nand Flash塊需要2ms;
4、Nand Flash 一般以512字節(jié)為單位進行讀寫
5、 市場上 Nand Flash 的容量一般為 8M—512M
二、Nand Flash的物理結構
以三星公司生產的 K9F1208U0M 為例:
1、容量:64MB,
一共4個層;
每層1024個塊(block);
1塊包含32頁
1頁包含 512 + 16 = 528個字節(jié)
2、外部接口:8個I/O口,5個使能信號(ALE、CLE、nWE、nRE、nCE),1個狀態(tài)引腳(RDY/B),1個寫保護引腳(nWE);
3、命令、地址、數(shù)據都通過8個I/O口輸入輸出;
4、寫入命令、地址、數(shù)據時,都需要將nWE、nCE信號同時拉低;數(shù)據在WE上升沿被鎖存;
5、CLE、ALE用來區(qū)分I/O引腳上傳輸?shù)氖菙?shù)據還是地址;
6、64MB的空間需要26位地址,因此以字節(jié)為單位訪問Flash時需要4個地址序列;
7、讀/寫頁在發(fā)出命令后,需要4個地址序列,而擦除塊在發(fā)出擦除命令后僅需要3個地址序列;
三、Nand Flash訪問方法
操作Nand Flash時,先傳輸命令,然后傳輸?shù)刂罚詈笞x、寫數(shù)據,期間要檢查flash的狀態(tài);
K9F1208U0M 一頁大小為528字節(jié),而列地址A0——A7可以尋址的范圍是256字節(jié),所以將一頁分為A、B、C三個區(qū):
A區(qū):0—255字節(jié)
B區(qū):256—511字節(jié)
C區(qū):512—527字節(jié)
(1)復位
命令:FFh
步驟:發(fā)出命令即可復位Nand Flash芯片;
(2)讀操作
命令:
00h——讀A區(qū)
01h——讀B區(qū)
50h——讀C區(qū)
操作步驟:
1、發(fā)出命令 00h、01h 或50h, 00h將地址位A8設為0, 01h將A8設為1 ;
2、依次發(fā)出4個地址序列;
3、檢測R/nB,待其為高電平時,就可以讀取數(shù)據了;
(3)flash編程
命令:
80h——10h :寫單頁;
80h——11h :對多個層進行些頁操作;
操作步驟:
1、寫單頁步驟:
【1】發(fā)出80h命令后;
【2】發(fā)送4個地址序列;
【3】向flash發(fā)送數(shù)據;
【4】發(fā)出命令10h啟動寫操作,flash內部自動完成寫、校驗操作;
【5】通過命令70h讀取狀態(tài)位,查詢寫操作是否完成;
2、多頁寫
【1】發(fā)出80h、4個地址序列、最多528字節(jié)的數(shù)據;
【2】發(fā)出11h命令;
【3】接著在相鄰層執(zhí)行【1】、【2】兩步操作;
【4】第四頁的最后使用10h代替11h,啟動flash內部的寫操作;
【5】可以通過71h查詢寫操作是否完成;
(4)復制
命令:
00h——8Ah——10h :單層頁內復制
03h——8Ah——11h :多層頁內復制
操作步驟:
1、單層頁內復制步驟:
【1】發(fā)出命令00h;
【2】4個源地址序列;
【2】接著發(fā)出8Ah;
【4】發(fā)出4個目的地址序列;
【5】發(fā)出10h命令,啟動寫操作;
【6】通過70h命令讀取狀態(tài)查詢操作是否完成;
2、多層頁內復制步驟:
【1】發(fā)出命令00h(第一層)、4個源頁地址序列;
【2】以后各層依次發(fā)出命令03h、4個源頁地址序列;
【3】發(fā)出命令8Ah、目的地址、命令11h;
【4】各層依次執(zhí)行【3】,在最后一頁的地址后,用10h代替11h,啟動寫操作;
【5】通過71h命令讀取狀態(tài)查詢操作是否完成;
(5)擦除
命令:
60h——D0h :單層內塊擦除
60h-60h ——D0h :多層內塊擦除
操作步驟:
1、單層內塊擦除:
【1】發(fā)出命令字60h;
【2】發(fā)出塊(block)地址,僅需3個地址序列;
【3】發(fā)出D0h,啟動擦除操作;
【4】發(fā)出70h命令查詢狀態(tài),是否完成擦除;
2、多層內塊擦除:
【1】發(fā)出命令字60h,3個塊地址序列;
【2】對每個層執(zhí)行【1】;
【3】發(fā)出命令D0h,啟動擦除操作;
【4】發(fā)出71h命令查詢狀態(tài),檢查是否完成擦除;
(6)讀取芯片ID
命令:90h
操作步驟:
1、發(fā)出命令90h;
2、發(fā)出4個地址序列(均設為0);
3、連續(xù)讀入5個數(shù)據,分別表示:廠商代碼、設備代碼、保留字節(jié)、多層操作代碼;
(7)讀狀態(tài)
命令:
70h——單層狀態(tài)
71h——多層狀態(tài)
操作步驟:寫入命令字之后,然后啟動讀操作即可讀入此寄存器。
-
FlaSh
+關注
關注
10文章
1642瀏覽量
148654 -
存儲器
+關注
關注
38文章
7528瀏覽量
164337
發(fā)布評論請先 登錄
相關推薦
NAND FLASH與NOR FLASH的技術對比

arm9 nor flash 地址
CH579中有Data Flash和Info Flash,請問這兩片Flash有什么不一樣?
NOR FLASH的原理及應用

指定了SDRAM卻燒寫到了Nand flash的詳細分析
SPI FLASH與NOR FLASH的區(qū)別 詳解SPI FLASH與NOR FLASH的不一樣
NAND Flash與NOR Flash的區(qū)別
NOR falsh、NAND flash、SDEMMC、QSPI flash、SPI flash

NAND Flash和NOR Flash的區(qū)別

一文了解SPI NAND Flash和SPI NOR Flash的區(qū)別
nor flash和nand flash的區(qū)別 單片機是Nor還是Nand Flash?

評論