1 簡介
我們通過stm32f429的fmc接口實現對MT29F4G08的訪問,實現讀寫數據功能
-
NAND FLASH信號線
-
NAND FLASH 框圖
-
NAND FLASH 存儲陣列
以上可以得知:(MT29F4G08)
每個這樣的芯片有兩個plane
每個plane有2048個block,一個包含偶數塊,一個包含奇數塊
每個block有64個pege
每個page有2K+64字節
所以這個芯片的總容量爲512M
page有兩個區
數據存儲區:一般用於存放用戶數據
備份區:存放ECC校驗值,實現壞塊管理和磨損均衡 -
陣列尋址
訪問存儲單元需要通過三個地址告訴芯片是哪個位置,
CAx:column address也就是列地址,就是一個page內的地址,MT29F4G08page大小爲2112Bytes, 需要12根地址線表示,所以CA0~CA11
PAx:page address 頁地址,每個block有64個頁,可以用6個地址線表示
BAx:block address塊地址,此芯片總共有4096個塊,可以用12個地址線表示
尋址需要五個週期數據:
1~2 週期表示發送列地址,3 ~ 5週期表示塊和頁地址,可以用過一個參數被傳遞
2 命令定義
- 命令定義
-
0x90 讀取設備ID,非常重要,首先讀取ID驗證讀寫操作是否有問題
-
READ PAGE
這個指令用於讀取一個page,不能直接跨頁讀取
首先發送一個字節命令00h,然後發送五個字節要讀取內容的地址,然後發送30h等待 -
WRITE PAGE.
首先發送08h表示寫數據命令,然後發送五個字節的地址,告訴芯片要寫哪個位置,等待tADL時間後,可以連續讀出數據內容,不能跨頁,然後發送10h,表示加載到存儲位置,最後發送70h讀取狀態,等待芯片狀態爲READY後,一次寫操作完成。 -
ERASE BLOCK
NAND FLASH最小的擦除單位是一個block
首先發送60h,然後發送三個字節地址表示要擦除哪一個塊,然後發送DOh,等待READY後,一次擦除塊操作完成。
- ECC 校驗
ECC,英文全稱爲: Error checking and Correction,是一種對傳輸數據的錯誤檢測和修正的
算法。 STM32 的 FMC 模塊就支持硬件 ECC 計算,使用的就是漢明碼,