<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S3C2440對Nand Flash操作和電路原理(基于K9F2G08U0A)

          S3C2440對Nand Flash操作和電路原理(基于K9F2G08U0A)

          作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
          S3C2440內(nèi)部集成了一個(gè)Nand flash控制器。S3C2440的Nand flash控制器包含了如下的特性:

          l 一個(gè)引導(dǎo)啟動(dòng)單元

          本文引用地址:http://www.ex-cimer.com/article/201611/321669.htm

          l Nand Flash存儲(chǔ)器接口,支持8位或16位的每頁大小為256字,512字節(jié),1K字和2K字節(jié)的Nand flash

          l 軟件模式:用戶可以直接訪問Nand Flash存儲(chǔ)器,此特性可以用于Nand Flash存儲(chǔ)器的讀、擦除和編程。

          l S3C2440支持8/16位的Nand Flash存儲(chǔ)器接口總線

          l 硬件ECC生成,檢測和指示(軟件糾錯(cuò))。

          l Steppingstone接口,支持大/小端模式的按字節(jié)/半字/字訪問。

          我用的開發(fā)板是天嵌的TQ2440,板子用到的Nand Flash是Samsung公司的K9F2G08U0A,它是8位的Nand flash。本文只介紹Nand Flash的電路原理和Nand Flash的讀、寫、擦除等基本操作,暫不涉及Nand Flash啟動(dòng)程序的問題。

          Nand Flash的電路連接如圖 1所示:

          圖 1 Nand Flash電路原理

          上圖的左邊為K9F2G08U0A與2440的連接圖,原理方面就不多介紹,去看看datasheet估計(jì)就懂得了,右邊的部分是S3C2440的Nand控制器的配置。配置引腳NCON,GPG13,GPG14和GPG15用來設(shè)置Nand Flash的基本信息,Nand控制器通過讀取配置引腳的狀態(tài)獲取外接的Nand Flash的配置信息,圖 2是這四個(gè)配置引腳的定義:

          圖 2 Nand控制配置引腳信息

          由于K9F2G08U0A的總線寬度為8位,頁大小為2048字節(jié),需要5個(gè)尋址命令,所以NCON、GPG13和GPG14應(yīng)該接高電平,GPG15應(yīng)該接低電平。

          K9F2G08U0A沒有地址或數(shù)據(jù)總線,只有8個(gè)IO口,這8個(gè)IO口用于傳輸命令、地址和數(shù)據(jù)。K9F2G08U0A主要以page(頁)為單位進(jìn)行讀寫,以block(塊)為單位進(jìn)行擦除。每一頁中又分為main區(qū)和spare區(qū),main區(qū)用于正常數(shù)據(jù)的存儲(chǔ),spare區(qū)用于存儲(chǔ)一些附加信息,如塊好壞的標(biāo)記、塊的邏輯地址、頁內(nèi)數(shù)據(jù)的ECC校驗(yàn)和等。K9F2G08U0A的存儲(chǔ)陣列如圖 3所示:

          圖 3 K9F2G08U0A內(nèi)部存儲(chǔ)陣列

          由上圖,我們可以知道:K9F2G08U0A的一頁為(2K+64)字節(jié)(2K表示的是main區(qū)容量, 64表示的是spare區(qū)容量),它的一塊為64頁,而整個(gè)設(shè)備包括了2048個(gè)塊。這樣算下來一共有2112M位容量,如果只算main區(qū)容量則有256M字節(jié)(即256M×8位)。

          圖 4 K9F2G08U0A地址序列

          要實(shí)現(xiàn)用8個(gè)IO口來要訪問這么大的容量,如圖 4所示:K9F2G08U0A規(guī)定了用5個(gè)周期來實(shí)現(xiàn)。第一個(gè)周期訪問的地址為A0~A7;第二個(gè)周期訪問的地址為A8~A11,它作用在IO0~IO3上,而此時(shí)IO4~IO7必須為低電平;第三個(gè)周期訪問的地址為A12~A19;第四個(gè)周期訪問的地址為A20~A27;第五個(gè)周期訪問的地址為A28,它作用在IO0上,而此時(shí)IO1~IO7必須為低電平。前兩個(gè)周期傳輸?shù)氖橇械刂罚笕齻€(gè)周期傳輸?shù)氖切械刂?。通過分析可知,列地址是用于尋址頁內(nèi)空間,行地址用于尋址頁,如果要直接訪問塊,則需要從地址A18開始。由于所有的命令、地址和數(shù)據(jù)全部從8位IO口傳輸,所以Nand flash定義了一個(gè)命令集來完成各種操作。有的操作只需要一個(gè)命令(即一個(gè)周期)即可,而有的操作則需要兩個(gè)命令(即兩個(gè)周期)來實(shí)現(xiàn)。K9F2G08U0A的命令說明如圖 5所示:

          圖 5 K9F2G08U0A命令表

          為了方便使用,我們宏定義了K9F2G08U0A的常用命令

          #define CMD_READ10x00 //頁讀命令周期1

          #define CMD_READ20x30 //頁讀命令周期2

          #define CMD_READID 0x90 //讀ID命令

          #define CMD_WRITE1 0x80 //頁寫命令周期1

          #define CMD_WRITE2 0x10 //頁寫命令周期2

          #define CMD_ERASE1 0x60 //塊擦除命令周期1

          #define CMD_ERASE2 0xd0 //塊擦除命令周期2

          #define CMD_STATUS0x70 //讀狀態(tài)命令

          #define CMD_RESET0xff //復(fù)位

          #define CMD_RANDOMREAD1 0x05 //隨意讀命令周期1

          #define CMD_RANDOMREAD2 0xE0 //隨意讀命令周期2

          #define CMD_RANDOMWRITE 0x85 //隨意寫命令

          接下來介紹幾個(gè)Nand Flash控制器的寄存器。Nand Flash控制器的寄存器主要有NFCONF(Nand Flash配置寄存器),NFCONT(Nand Flash控制寄存器),NFCMMD(Nand Flash命令集寄存器),NFADDR(Nand Flash地址集寄存器),NFDATA(Nand Flash數(shù)據(jù)寄存器),NFMECCD0/1(Nand Flash的main區(qū)ECC寄存器),NFSECCD(Nand Flash的spare區(qū)ECC寄存器),NFSTAT(Nand Flash操作狀態(tài)寄存器),NFESTAT0/1(Nand Flash的ECC狀態(tài)寄存器),NFMECC0/1(Nand Flash用于數(shù)據(jù)的ECC寄存器),以及NFSECC(Nand Flash用于IO的ECC寄存器)。

          (1)NFCONF:2440的NFCONF寄存器是用來設(shè)置NAND Flash的時(shí)序參數(shù)TACLS、TWRPH0、TWRPH1。配置寄存器的[3:0]是只讀位,用來指示外部所接的Nand Flash的配置信息,它們是由配置引腳NCON,GPG13,GPG14和GPG15所決定的(比如說K9F2G08U0A的配置為NCON、GPG13和GPG14接高電平,GPG15接低電平,所以[3:0]位狀態(tài)應(yīng)該是1110)。

          (2)NFCONT:用來使能/禁止NAND Flash控制器、使能/禁止控制引腳信號(hào)nFCE、初始化ECC。它還有其他功能,在一般的應(yīng)用中用不到,比如鎖定NAND Flash。

          (3)NFCMMD:對于不同型號(hào)的Flash,操作命令一般不一樣。參考前面介紹的K9F2G08U0A命令序列。

          (4)NFADDR:當(dāng)寫這個(gè)寄存器時(shí),它將對Flash發(fā)出地址信號(hào)。只用到低8位來傳輸,所以需要分次來寫入一個(gè)完整的32位地址,K9F2G08U0A的地址序列在圖4已經(jīng)做了詳細(xì)說明。

          (5)NFDATA:只用到低8位,讀、寫此寄存器將啟動(dòng)對NAND Flash的讀數(shù)據(jù)、寫數(shù)據(jù)操作。

          (6)NFSTAT:只用到位0,用來檢測NAND是否準(zhǔn)備好。0:busy,1:ready。

          NFCONF寄存器使用TACLS、TWRPH0、TWRPH1這3個(gè)參數(shù)來控制NAND Flash信號(hào)線CLE/ALE與寫控制信號(hào)nWE的時(shí)序關(guān)系,它們之間的關(guān)系如圖6和圖7所示:

          圖6 CLE/ALE時(shí)序圖

          圖7 nWE和nRE時(shí)序圖

          TACLS為CLE/ALE有效到nWE有效之間的持續(xù)時(shí)間,TWRPH0為nWE的有效持續(xù)時(shí)間,TWRPH1為nWE無效到CLE/ALE無效之間的持續(xù)時(shí)間,這些時(shí)間都是以HCLK為單位的。通過查閱K9F2G08U0A的數(shù)據(jù)手冊,我們可以找到并計(jì)算與S3C2440相對應(yīng)的時(shí)序:K9F2G08U0A中的Twp與TWRPH0相對應(yīng),Tclh與TWRPH1相對應(yīng), TACLS應(yīng)該是與Tcls相對應(yīng)。K9F2G08U0A給出的都是最小時(shí)間, 2440只要滿足它的最小時(shí)間即可。TACLS、TWRPH0、TWRPH1這三個(gè)變量取值大一些會(huì)更保險(xiǎn),在這里,這三個(gè)值分別取1,2和0。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: S3C2440NandFlashK9F2G08U0

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();