久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

STM32增強型微控制器訪問NAND Flash學習筆記

作者:小鄧   來源:會員上傳   點擊數:  更新時間:2014年05月19日   【字體:

 

一、了解NAND Flash
 
Flash即是存儲芯片的一種,其結合了ROM和RAM的特點,既具備電可擦除編程的性能,又可以快速讀取數據,數據不會因斷電丟失。目前市面上Flash主要有NOR Flash和NAND Flash。
簡單的理解就是,NOR Flash具有隨機存取和隨字節執行寫操作的能力,即可以訪問到存儲器內部的任意一個字節,且具有讀取速度快等特點,它占據1MB—16MB閃存的大部分市場,根據其讀取數據速度快的特點主要應用在代碼存儲;而NAND Flash以“頁”為單位進行對數據的讀寫操作,且具有寫入和擦除速度快等特點,它應用在8MB—256MB的產品中,根據其特點主要應用在數據存儲上。
以型號HY27UF081G2A的NAND Flash芯片為例,其總線寬度為8bit,總內存大小為1Gbit(即128MB),共分為1024塊(Block),每塊又分為64頁(Page),每頁共2KB(main memory)+64B(spare memory),main memory用來存放數據,spare memory用來標記已壞的塊區和保存對main memory的ECC校驗碼等(正常情況下不用)。更多的HY27UF081G2A資料參照相關Datasheet。
 
二、了解HY27UF081G2A芯片引腳功能和NAND Flash接口時序及控制命令
1、引腳說明

圖1  引腳圖
圖2  引腳名稱

 
 
      2、地址周期

圖3  地址周期

其中A10—A0表示頁內地址偏移(表示0—2047字節,1頁大小即為2K)
      A11表示上半頁或者下半頁(這位程序員無需關心,決定A10—A0時也間接決定了A11)
      A17—A12表示頁地址(表示0—63頁)
      A27—A18表示塊地址(表示0—1023塊)
由于NAND Flash訪問的單位是“頁”,設置訪問地址時只需要確定A27—A12的值即可確定到某一頁,如果要從頁內的某一位置開始訪問,則根據需要設置A10—A0位來確定從頁內第幾個字節開始訪問,如:要訪問存儲空間為第3塊的第5頁,且從第100字節開始進行訪問,則對應的4個Cycle周期的地址信號為:1 st :0x64  , 2 nd :0x00     3 rd :0xC5    4th :0x00
 
3、了解控制命令,如下所示

圖4  控制命令

 
4、了解接口時序,對該存儲器進行訪問操作有讀取芯片ID、讀頁數據、寫頁數據,塊擦除等共有13種,每種不同的操作對應不用的接口時序,此處只例舉其中的4種操作:讀取芯片ID、讀頁數據、寫頁數據、塊擦除相應的接口時序圖,更多操作參閱其Datasheet。

圖5  讀取芯片ID時序
圖6  讀取一頁數據
圖7  寫一頁數據(頁編程)
圖8  塊擦除
 

同時應注意一些時序參數,如在上幾幅時序圖中出現的tAR(ALE至~RE的延時),tCLR(CLE至~RE的延時)等等,這些時間參數都有不同的取值范圍(ns級別),時序圖中出現的Col Add1、Col Add2為列地址表示頁內地址偏移,對應4個Cycle地址中的第1、第2個,Row Add1、Row Add2為行地址標識某塊某頁地址,對應4個Cycle地址中的第3、第4個。更多詳細資料參見相關Datasheet。
 
三、STM32F10x增強型控制器的FSMC模塊
      FSMC(可變靜態存儲控制器)是STM32系列微控制器采用的一種新型的存儲器擴展技術,可根據系統的需要方便的進行不用類型大容量靜態存儲器的擴展;簡單的理解FSMC模塊可對多種外接存儲器進行控制,其主要包括NOR Flash、NAND Flash、PC卡,下面對訪問NANDFlash介紹。
 
1、STM32F10x控制器與HY27UF081G2A的對接
先看STM32F10x控制器提供的NAND Flash接口(這里為8位的NAND閃存)

圖9  STM32F10x控制器的NAND Flash接口

接口各信號對應的GPIO口為:
A[17] : PD12
A[16] : PD11
D[0:7] : PD14,PD15,PD0,PD1,PE7,PE8,PE9,PE10
NCE[x] : 這里使用NCE[2],對應GPIO口為PD7
NOE(=NER) : PD4
NWE : PD5
NWAIT/INT[3:2] : PD6(根據情況使用該引腳信號,這里不使用)
 
結合HY27UF081G2A的引腳功能說明,STM32與HY27UF081G2A的連線方式選擇如下:
            STM32F10x的NAND接口                  HY27UF081G2A引腳
                  D[0:7]------------------------------------------IO0~IO7
                  A[17]-------------------------------------------ALE
                  A[16]-------------------------------------------CLE這里使用PG6接到R/~B,在檢測NAND Flash
                  NEC[2]------------------------------------------~CE
                  NOE---------------------------------------------~RE
                  NWE--------------------------------------------~WE
PG6---------------------------------------------R/~B(是否忙時直接讀取PG6引腳上的電平來判斷)
 
2、NAND地址映像及功能介紹

圖10  存儲器映像和時序寄存器(這里只用塊2來控制訪問NAND Flash)

 
通用和屬性空間又可以在低256K字節部分畫分為三個區

圖11  存儲塊選擇

應用軟件使用這三個區訪問NAND Flash存儲器:
發送命令至NAND Flash:對命令區任意地區寫入命令即可。
指定NAND Flash的地址:對地址區任意地址寫入地址命令即可,一個NAND地址有4或5個字節(這里使用的HY27UF081G2A芯片為4個字節),需要連續地執行對地址區的寫才能輸出完整的操作地址。
    讀寫數據:軟件只需對數據區任意一個地址寫入或讀出數據即可。
注:因為NAND Flash存儲器自動累加其內部的操作地址,讀寫數據時沒有必要變換數據區的地址,即不必對連續的地址區操作;應用軟件使用這三個區進行訪問NAND Flash之前要先完成對相應的管理寄存器的初始化配置,下面介紹相應的管理配置寄存器。
 
3、STM32的NAND Flash存儲器塊通過以下一組寄存器來管理配置
控制寄存器:FSMC_PCRx
中斷狀態寄存器:FSMC_SRx
ECC寄存器:FSMC_ECCRx
通用存儲器空間的時序寄存器:FSMC_MEMx
屬性存儲器空間的時序寄存器:FSMC_PATTx
I/O空間的時序寄存器:FSMC_PIOx
注:這里用的是塊2部分,因此上面寄存器中的x=2。
 
對于要只控制NAND Flash存儲器,上面的三個時序寄存器中只用到FSMC_MEMx,配置該寄存器來控制NAND通用存儲空間的訪問時序,該寄存器中保存著訪問時序的4個時間參數(MEMsSET+1、MEMxHIZ+1、MEMxWAIT+1、MEMxHOLD+1),每個時間參數的具體說明可參閱STM32相應Datasheet。訪問時序圖如下:

圖12  STM32的NAND通用存儲空間的訪問時序

 
對NAND Flash的簡單控制訪問(讀、寫、擦除等)這里只需要配置FSMC_PCRx和FSMC_MEMx這兩個寄存器就夠了,對NAND Flash復雜的控制訪問(檢測壞塊、ECC校驗等)此處不做研究。FSMC_PCRx和FSMC_MEMx寄存器功能參閱STM32相關Datasheet。
 
四、STM32F10x控制器訪問HY27UF081G2A過程
針對于簡單的讀、寫、擦除等訪問,則過程為:
1、管理寄存器FSMC_PCRx和FSMC_MEMx初始化
      2、通過訪問通用空間的命令區、數據區、地址區完成對NAND Flash的讀、寫、擦除等操作。
 
軟件實現過程:(在此之前要完成系統時鐘配置、相應的總線時鐘使能、相應GPIO口的初始化工作,這里不再進行說明)
1、管理寄存器FSMC_PCRx和FSMC_MEMx初始化
FSMC_PCRx = 0x00060048;
(設置ECC頁面大小2048字節、ALE至~RE的延時為1個HCLK,CLE至~RE的延時為1個HCLK,使能ECC電路,設置總線寬度為8位,設置存儲器類型為NAND Flash,關閉模塊功能,關閉模塊等待功能)
  FSMC_MEMx = 0x01020301;      //設置MEMsSET+1 = 4個HCLK、MEMxHIZ+1 = 3個HCLK、
//MEMxWAIT+1 = 4個HCLK、MEMxHOLD+1 = 4個HCLK
FSMC_PCRx |= 0x00000002;      //使能模塊功能
關閉窗口
主站蜘蛛池模板: 美国十次成人欧美色导视频 | 成人福利| 在线成人一区 | 在线成人免费视频 | 亚洲精品综合一区二区 | 亚洲视频不卡 | 精品国产乱码久久久久久影片 | 国产极品粉嫩美女呻吟在线看人 | 一区二区三区免费观看 | 久久久久九九九九 | 性一交一乱一伦视频免费观看 | 亚洲精品www. | 日韩中文一区 | 人人人人人爽 | 欧美成人一区二区三区片免费 | 亚洲国产精品视频 | 国产精品久久久久久久久久 | 欧美日韩在线免费观看 | 完全免费av在线 | 亚洲播放一区 | 久久亚| 毛片一区二区三区 | 日韩视频 中文字幕 | 亚洲字幕在线观看 | 黄网站涩免费蜜桃网站 | 婷婷激情综合 | 国产精品亚洲精品 | 国产成人一区二区 | 日本视频中文字幕 | 欧美视频在线播放 | 国产精彩视频 | 中文在线一区二区 | 国产精品.xx视频.xxtv | 国产乱码精品一区二区三区中文 | 欧美不卡一区二区三区 | 国产欧美一级二级三级在线视频 | 91资源在线 | 在线观看国产视频 | 久久99精品久久久久久琪琪 | 精品美女视频在免费观看 | 国产精品精品久久久 |