基于dsPIC30F6010A的并口NANDFlash驅動設計與實現(xiàn)_第1頁
基于dsPIC30F6010A的并口NANDFlash驅動設計與實現(xiàn)_第2頁
基于dsPIC30F6010A的并口NANDFlash驅動設計與實現(xiàn)_第3頁
基于dsPIC30F6010A的并口NANDFlash驅動設計與實現(xiàn)_第4頁
基于dsPIC30F6010A的并口NANDFlash驅動設計與實現(xiàn)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、    基于dspic30f6010a的并口nandflash驅動設計與實現(xiàn)    陸鵬摘 要本文通過分析8位并口nand flash的工作時序,設計其在dspic30f 6010a單片機下的軟件驅動,能夠實現(xiàn)對nand flash的讀寫擦除等各種操作。關鍵詞nand flash;dspic30f6010a;并口;驅動中圖分類號: tp316.2             文獻標識碼: adoi:10.19694/ki.issn2095-2457.2020.09.0440 前言nand flash

2、是嵌入式設計中常見的存儲器。8位并口nand flash是指數(shù)據(jù)線寬度為8位,通信接口為并行接口的nand flash,在其與微處理器的配合應用中,nand fla sh與微處理器一般采用如圖1所示的連接方式。微處理器軟件驅動的設計是根據(jù)nand flash的工作時序,通過配置相關寄存器進行相應操作來實現(xiàn)的。本文中nand flash使用micron公司的mt29f2g08系列進行說明,微處理器則使用了microchip公司的16位高性能單片機dspic30f6010a。1 nand flash信號時序從軟件驅動角度來講,nand flash最基本的操作有四種,即命令輸入、地址輸入、數(shù)據(jù)輸入、

3、數(shù)據(jù)輸出。所有的nand flash接口命令都是由這四種操作組合而成,以mt29f2g08的read page命令為例,它是由兩個命令輸入操作(0x00,0x30)、五個地址輸入操作以及若干數(shù)據(jù)輸出操作組成,read page命令時序如圖2所示。因此如果在微處理上實現(xiàn)這四種基本操作,就能實現(xiàn)所有的接口命令,即實現(xiàn)了nand flash的驅動設計。為了實現(xiàn)這四種操作,我們需要明確兩個內(nèi)容:一,四種操作中接口信號的電平;二,接口信號及各信號之間的時間要求。這兩項內(nèi)容均在nand flash的器件手冊上有明確要求。以mt29f2g08為例,在它的的異步接口模式列表中(表1),我們可以得到四種操作的接

4、口信號電平要求。以命令輸入(comm and input)為例,從表1中可以得到接口信號電平要求為:當ce#為低,cle為高,ale為低,we#的上升沿,wp#為高時,完成命令輸入操作。接口信號及各信號之間的時間要求通過時序定義來得到。命令輸入的時序定義如圖3所示,接口信號的時間要求在表2中列出。因命令輸入發(fā)生在we#上升沿,因此與we#上升沿相關的幾個時間是設計的關鍵所在:twp寫使能脈沖寬度時間-最小為10ns;tds數(shù)據(jù)建立時間-最小7ns,即命令輸入后we#需至少保持使能7ns才可以置高;tdh數(shù)據(jù)保持時間-最少5ns,即we#置高后命令需要至少保持5ns;tcls命令鎖存使能建立時間

5、-最少10ns;tclh命令鎖存使能保持時間-最小為5ns,即we#置高后cle需至少保持為高5ns。得到接口信號的電平和時間要求后,就可以在微處理器上編程實現(xiàn)對nand flash的各種操作。2 軟件驅動實現(xiàn)在進行nand flash驅動編程之前,我們需要對微處理器dspic30f6010a的i/o按照圖1所示的連接方式進行配置,分別將ce#、re#, we#、r/b#、ale、cle、wp#、i/o7:0配置到所需的i/o口,其中ce#、re#、we#、ale、cle、wp#為輸出端口,r/b#為輸入端口,i/o7:0在命令輸入、地址輸入、數(shù)據(jù)輸入三種操作時為輸出端口,在數(shù)據(jù)輸出操作時為輸

6、入端口。時間方面,本例中dspic30f6010a系統(tǒng)時鐘設置為24mhz,因此指令周期fcy為24mhz/4為6mhz,即一條指令所用時間為167ns。以命令輸入操作為例,將其定義為函數(shù)flashwritecmd(),為函數(shù)定義一個參數(shù)cmd,根據(jù)上一小節(jié)所講,按照命令輸入的時序要求,將函數(shù)編寫如下:void flashwritecmd(unsigned char cmd)trisdata &= (0x00ff) ; / re0re7輸出ale=0;cle=1;_nop_();  _nop_(); /tclswe=0;_nop_();  _nop_(); _nop

7、_(); _nop_();_nop_();  _nop_(); _nop_(); _nop_();_nop_();  _nop_(); _nop_(); _nop_();/twpdataout= (dataout  & 0xff00) | cmd);_nop_();  _nop_(); /tdswe=1;_nop_();  _nop_();  _nop_();/ tdh, tclhcle=0;按同樣思路完成其他三種基本操作的函數(shù)編程,分別定義為:地址輸入函數(shù)flashwriteaddr(),數(shù)據(jù)輸入函數(shù)flash wr ite

8、port(),數(shù)據(jù)輸出函數(shù)flashreadport(),以這四個函數(shù)為基礎即可實現(xiàn)所有接口命令函數(shù),下面以接口命令read page為例說明。將read page命令定義為函數(shù)flashreadbyte(),為函數(shù)定義五個參數(shù),read_num讀取字節(jié)數(shù)量,byteaddr字節(jié)地址,pageaddr頁地址,blockaddr塊地址,以及buf字節(jié)存儲位置。如圖1所示,read page命令需要首先發(fā)送命令0x00,然后發(fā)送五個周期的地址,再發(fā)送命令0x30,之后等待r/b#(rdy)信號為高后才能進行數(shù)據(jù)讀取,依此函數(shù)編程如下:void flashreadbyte(unsigned intr

9、ead_number,unsigned int byteaddr,unsignedchar pageaddr,unsigned int blockaddr,unsignedchar *buf)unsigned int j,ce=0;flashwritecmd(0x00); /讀命令周期1flashwriteaddr(byteaddr&0xff); /寫字節(jié)低位地址flashwriteaddr(byteaddr>>8)&0x3f); /寫字節(jié)高位地址flashwriteaddr(pageaddr); /寫頁地址flashwriteaddr(blockaddr>&

10、gt;1)&0xff); /寫塊低位地址flashwriteaddr(blockaddr>>9)&0x0f); /寫塊高位地址flashwritecmd(0x30); /讀命令周期2delay_us(20);nand_waitready();/等待rdy信號置高for(j=0;j<read_number;j+)< p>clrwdt();*buf=flashreadport(); /讀取數(shù)據(jù)buf+;ce=1;依照類似方法可實現(xiàn)nand flash規(guī)定的所有接口命令。需要注意的是在實現(xiàn)函數(shù)時,要將時間留出余量,以免出現(xiàn)異常錯誤。3 結論本文介紹的驅動程序已經(jīng)應用在項目中,實際結果顯示程序功能正確、穩(wěn)定可靠。雖然驅動是基于dspic30f6010a單片機,但其方法可以用于任意微處理器,此外驅動可適用于任何符合onfi1.0標準的nand flash器件,有良好的通用性。參考文獻1rino micheloni,luca crippa,alessi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論