<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > S5PV210(TQ210)學(xué)習筆記——Nand配置

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

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

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

本文引用地址:http://dyxdggzs.com/article/201611/322805.htm

(1)根據原理圖,理清模塊的接線(xiàn)方式,對于Nand flash來(lái)說(shuō),就是看看Nand flash接到了哪些GPIO上,然后把對應的GPIO配置為Nand功能即可。

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

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

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

其中:

(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位應該配置為0x3333;

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

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

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

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

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

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

這樣,Nand flash的初始化函數就出來(lái)了:

  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恢復到最初狀態(tài)。

這樣,Nand flash初始化好了,但是要訪(fǎng)問(wèn)Nand flash還需要按照時(shí)序對其操作,Nand方式啟動(dòng)時(shí)只需要實(shí)現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寫(xiě)地址
  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讀頁(yè)數據
  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)的操作函數,到這里,您自己補充一下引用到的小函數就可以正常的進(jìn)行Nand flash操作了,我把我寫(xiě)的代碼上傳到我的CSDN資源里,如果需要的話(huà)可以拿去參考。另外,如果需要編寫(xiě)Nand flash寫(xiě)操作的代碼可以參考一下本人博客中6410的Nand flash配置部分和Nand flash的芯片手冊,原理都是相通的。



關(guān)鍵詞: S5PV210Nand配

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>