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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S5PV210(TQ210)學(xué)習(xí)筆記——Nand配置

          S5PV210(TQ210)學(xué)習(xí)筆記——Nand配置

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          S5PV210的Nand flash跟2440和6410的Nand flash配置差不多,不同的是S5PV210的功能更加強(qiáng)大,尤其是S5PV210的硬件ECC(本文不涉及S5PV210中Nand ECC配置)。整體上來講,S5PV210的Nand flash配置還是非常簡(jiǎn)單的。

          其實(shí),配置一個(gè)模塊往往需要以下幾個(gè)步驟:

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

          (1)根據(jù)原理圖,理清模塊的接線方式,對(duì)于Nand flash來說,就是看看Nand flash接到了哪些GPIO上,然后把對(duì)應(yīng)的GPIO配置為Nand功能即可。

          (2)閱讀S5PV210手冊(cè),掌握相關(guān)模塊控制器的功能、操作方式及寄存器配置。

          (3)閱讀模塊芯片手冊(cè),掌握模塊的訪問控制時(shí)序。

          我們按照以上步驟進(jìn)行配置,首先是模塊GPIO的配置,我的開發(fā)板是TQ210,Nand flash芯片是K9K8G08U0B,接線方式如下圖:

          其中:

          (1)Xm0FRnB0~Xm0FRnB3,Xm0FCLE,Xm0FALE,Xm0FWEn,Xm0FREn這八根腳連接到了MP0_3上,查看MP0_3控制寄存器可知,需將MP0_3CON配置為0x22222222;

          (2)Xm0CSn2~Xm0CSn5四根腳連接到了MP0_1的2~5腳上,故MP0_1CON的8~23位應(yīng)該配置為0x3333;

          (3)Xm0DATA0~Xm0DATA7這八根腳連接到了MP0_6上,故MP0_6應(yīng)該配置為0x22222222;

          這樣,GPIO配置好了,接下來我們配置下Nand flash的控制寄存器,大體瀏覽下Nand flash的寄存器功能后我們可以發(fā)現(xiàn),如果不使用ECC功能可以只配置NFCONF和NFCONT兩個(gè)寄存器,我們的Nand flash是SLC型Nand,Page大小為2048,寫入地址需要5個(gè)周期(這些從Nand flash芯片手冊(cè)上很容易找到),故NFCONF應(yīng)該配置如下:

          NFCONF=(3<<23)|(1<<12)|(2<<8)|(0<<4)|(1<<1); //依次為:禁止ECC,TACLS,TWPRH0,TWPRH1,SLC、2K、5周期。

          其中TACLS、TWPRH0和TWPRH1需要閱讀手冊(cè)來確定,韋東山老師講述了確定方式,但是,我配置時(shí)完全按照手冊(cè)上的最小時(shí)間設(shè)置時(shí)沒有能夠正常訪問,我是自己嘗試出來的,先將三個(gè)參數(shù)都設(shè)置為7,然后慢慢減小,最后測(cè)試出來設(shè)置為1、2、0,但是這樣不一定是最穩(wěn)定的,一般來講,數(shù)值略大一些會(huì)更穩(wěn)定,但是為了不影響訪問效率,這個(gè)值也不能設(shè)太大,先按照最小情況設(shè)置,當(dāng)發(fā)現(xiàn)有讀取錯(cuò)誤或其他不穩(wěn)定現(xiàn)象時(shí)再適當(dāng)提高參數(shù)值。

          然后就是NFCONT寄存器,NFCONT的配置就更簡(jiǎn)單了,我們不設(shè)置ECC,只需要設(shè)置0位和1位就可以了:

          NFCONT = (1<<1)|(1<<0);//禁止片選,使能Nand

          這樣,Nand flash的初始化函數(shù)就出來了:

          1. voidnand_init(){
          2. NFCONF=(3<<23)|(1<<12)|(2<<8)|(0<<4)|(1<<1);
          3. NFCONT=(1<<0)|(1<<1);
          4. MP0_1CON&=~(0xffff<<8);
          5. MP0_1CON|=0x3333<<8;
          6. MP0_3CON=0x22222222;
          7. MP0_6CON=0x22222222;
          8. nand_reset();
          9. }
          至于nand_reset,通常是Nand flash配置完成之后就進(jìn)行一次reset,這樣使Nand flash恢復(fù)到最初狀態(tài)。

          這樣,Nand flash初始化好了,但是要訪問Nand flash還需要按照時(shí)序?qū)ζ洳僮?,Nand方式啟動(dòng)時(shí)只需要實(shí)現(xiàn)Nand flash的讀操作,為此,這里只列舉一下幾個(gè)讀相關(guān)的操作:

          (1)Nand flash reset

          1. staticvoidnand_reset(){
          2. nand_select_chip();
          3. nand_cmd(0xff);
          4. nand_wait();
          5. nand_deselect_chip();
          6. }
          (2)Nand flash寫地址
          1. staticvoidnand_addr(unsignedlongpage_addr,unsignedlongpage_offset){
          2. NFADDR=(page_offset>>0)&0xFF;
          3. NFADDR=(page_offset>>8)&0x7;
          4. NFADDR=(page_addr)&0xFF;
          5. NFADDR=(page_addr>>8)&0xFF;
          6. NFADDR=(page_addr>>16)&0x07;
          7. }
          (3)Nand flash讀ID
          1. voidnand_read_id(charid[]){
          2. inti;
          3. nand_select_chip();
          4. nand_cmd(0x90);
          5. NFADDR=0;
          6. for(i=0;i<5;i++)
          7. id[i]=nand_read();
          8. nand_deselect_chip();
          9. }
          (4)Nand flash讀頁數(shù)據(jù)
          1. voidnand_read_page(unsignedchar*buf,unsignedlongpage_addr){
          2. inti;
          3. nand_select_chip();
          4. nand_cmd(0);
          5. nand_addr(page_addr,0);
          6. nand_cmd(0x30);
          7. nand_wait();
          8. for(i=0;i!=PAGE_SIZE;++i){
          9. *buf++=nand_read();
          10. }
          11. nand_deselect_chip();
          12. }

          上面是幾個(gè)比較重要的Nand flash讀相關(guān)的操作函數(shù),到這里,您自己補(bǔ)充一下引用到的小函數(shù)就可以正常的進(jìn)行Nand flash操作了,我把我寫的代碼上傳到我的CSDN資源里,如果需要的話可以拿去參考。另外,如果需要編寫Nand flash寫操作的代碼可以參考一下本人博客中6410的Nand flash配置部分和Nand flash的芯片手冊(cè),原理都是相通的。



          關(guān)鍵詞: S5PV210Nand配

          評(píng)論


          技術(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); })();