STM32-FSMC-NANDFLASH
STM32 FSMC 支持兩個NAND閃存塊,支持硬件ECC并可檢測多達(dá)8K字節(jié)數(shù)據(jù)
其地址映射如下圖所示
圖161 FSMC存儲塊?
NAND和PC卡地址映射
表88 存儲器映像和時序寄存器 ?
對于NAND閃存存儲器,通用和屬性空間又可以在低256K字節(jié)部分劃分為3個區(qū)(見表89)
● 數(shù)據(jù)區(qū)(通用/屬性空間的前64K字節(jié)區(qū)域)
● 命令區(qū)(通用/屬性空間的第2個64K字節(jié)區(qū)域)
● 地址區(qū)(通用/屬性空間的第2個128K字節(jié)區(qū)域)
表89 NAND存儲塊選擇
應(yīng)用軟件使用這3個區(qū)訪問NAND閃存存儲器:
●發(fā)送命令到NAND閃存存儲器:軟件只需對命令區(qū)的任意一個地址寫入命令即可。
●指定操作NAND閃存存儲器的地址:軟件只需對地址區(qū)的任意一個地址寫入命令即可。因?yàn)橐粋€NAND地址可以有4或5個字節(jié)(依實(shí)際的存儲器容量而定),需要連續(xù)地執(zhí)行對地址區(qū)的寫才能輸出完整的操作地址。
●讀寫數(shù)據(jù):軟件只需對數(shù)據(jù)區(qū)的任意一個地址寫入或讀出數(shù)據(jù)即可。 因?yàn)镹AND閃存存儲器自動地累加其內(nèi)部的操作地址,讀寫數(shù)據(jù)時沒有必要變換數(shù)據(jù)區(qū)的地址,即不必對連續(xù)的地址區(qū)操作。
NAND閃存和PC卡控制器外部閃存接口信號NAND閃存/PC卡支持的存儲器及其操作表119 支持的存儲器及其操作?
NAND閃存、ATA和PC卡時序圖● 控制寄存器:FSMC_PCRx
● 中斷狀態(tài)寄存器:FSMC_SRx
● ECC寄存器:FSMC_ECCRx
● 通用存儲器空間的時序寄存器:FSMC_PMEMx
● 屬性存儲器空間的時序寄存器:FSMC_PATTx
● I/O空間的時序寄存器:FSMC_PIOx
每一個時序控制寄存器都包含3個參數(shù),用于定義PC卡/CF或NAND閃存操作中三個階段的HCLK周期數(shù)目,還有一個定義了寫操作中FSMC開始驅(qū)動數(shù)據(jù)總線時機(jī)的參數(shù)。下圖給出了在通用存儲空間中操作的時序參數(shù)定義,屬性存儲空間和I/O空間(只適用于PC卡)中操作與此相似。
圖177 NAND/PC卡控制器通用存儲空間的訪問時序?
NAND閃存操作正如前面所述,NAND閃存的命令鎖存使能(CLE)和地址鎖存使能(ALE)信號由FSMC的地址信號線驅(qū)動。這意味著在向NAND閃存發(fā)送命令或地址時,CPU需要對存儲空間中的特定地址執(zhí)行寫操作。
一個典型的對NAND閃存的讀操作有如下步驟:
1. 根據(jù)NAND閃存的特性,通過FSMC_PCRx和FSMC_PMEMx寄存器配置和使能相應(yīng)的存儲器塊,對于某些NAND閃存可能還要操作FSMC_PATTx寄存器(見19.6.5節(jié)——NAND閃存預(yù)等待功能)。需要配置的位包括:PWID指示NAND閃存的數(shù)據(jù)總線寬度,PTYP=1,PWAITEN=1,PBKEN=1,參見FSMC_PMEM2..4寄存器的時序配置。
2. CPU在通用存儲空間寫入閃存命令字節(jié)(例如對于Samsung的NAND閃存,該字節(jié)為0x00),在寫信號有效期間(NWE的低脈沖)NAND閃存的CLE輸入變?yōu)橛行?高電平),這時CPU寫的字節(jié)被NAND閃存識別為一個命令。一旦NAND閃存鎖存了這個命令,隨后的頁讀操作不必再發(fā)送相同的命令。
3. CPU在通用存儲器空間或?qū)傩钥臻g寫入四個字節(jié)(較小容量的NAND閃存可能只需要三個字節(jié))作為讀操作的開始地址(STARTAD),以64Mbx8的NAND閃存為例,按照STARTAD[7:0]、STARTAD[16:9]、STARTAD[24:17]和STARTAD[25] 的順序?qū)懭?。在寫信號有效期間(NWE的低脈沖)NAND閃存的ALE輸入變?yōu)橛行?高電平),這時CPU寫的字節(jié)被NAND閃存識別為讀操作的開始地址。使用屬性存儲空間,可以使FSMC產(chǎn)生不同的時序,實(shí)現(xiàn)某些NAND閃存所需的預(yù)等待功能(見19.6.5 NAND閃存預(yù)等待功能)。
4. 控制器在開始(對相同的或另一個存儲器塊)新的操作之前等待NAND閃存準(zhǔn)備就緒(R/NB信號變?yōu)楦?,在等待期間控制器保持NCE信號有效(低電平)。
5. CPU可以在通用存儲空間執(zhí)行字節(jié)讀操作,逐字節(jié)地讀出NAND閃存的存儲頁(數(shù)據(jù)域和后備域)
6. 在CPU不寫入命令或地址的情況下,NAND閃存的下一個頁可以以下述任一種方式讀出:
─ 按照步驟5進(jìn)行操作
─ 返回步驟3開始輸入一個新的地址
─ 返回步驟2開始輸入一個新的命令
NAND閃存預(yù)等待功能某些NAND閃存要求在輸入最后一個地址字節(jié)后,控制器等待R/NB信號變低,如下圖: