版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 基于dspic30f6010a的并口nandflash驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn) 陸鵬摘 要本文通過分析8位并口nand flash的工作時(shí)序,設(shè)計(jì)其在dspic30f 6010a單片機(jī)下的軟件驅(qū)動(dòng),能夠?qū)崿F(xiàn)對nand flash的讀寫擦除等各種操作。關(guān)鍵詞nand flash;dspic30f6010a;并口;驅(qū)動(dòng)中圖分類號: tp316.2 文獻(xiàn)標(biāo)識碼: adoi:10.19694/ki.issn2095-2457.2020.09.0440 前言nand flash
2、是嵌入式設(shè)計(jì)中常見的存儲器。8位并口nand flash是指數(shù)據(jù)線寬度為8位,通信接口為并行接口的nand flash,在其與微處理器的配合應(yīng)用中,nand fla sh與微處理器一般采用如圖1所示的連接方式。微處理器軟件驅(qū)動(dòng)的設(shè)計(jì)是根據(jù)nand flash的工作時(shí)序,通過配置相關(guān)寄存器進(jìn)行相應(yīng)操作來實(shí)現(xiàn)的。本文中nand flash使用micron公司的mt29f2g08系列進(jìn)行說明,微處理器則使用了microchip公司的16位高性能單片機(jī)dspic30f6010a。1 nand flash信號時(shí)序從軟件驅(qū)動(dòng)角度來講,nand flash最基本的操作有四種,即命令輸入、地址輸入、數(shù)據(jù)輸入、
3、數(shù)據(jù)輸出。所有的nand flash接口命令都是由這四種操作組合而成,以mt29f2g08的read page命令為例,它是由兩個(gè)命令輸入操作(0x00,0x30)、五個(gè)地址輸入操作以及若干數(shù)據(jù)輸出操作組成,read page命令時(shí)序如圖2所示。因此如果在微處理上實(shí)現(xiàn)這四種基本操作,就能實(shí)現(xiàn)所有的接口命令,即實(shí)現(xiàn)了nand flash的驅(qū)動(dòng)設(shè)計(jì)。為了實(shí)現(xiàn)這四種操作,我們需要明確兩個(gè)內(nèi)容:一,四種操作中接口信號的電平;二,接口信號及各信號之間的時(shí)間要求。這兩項(xiàng)內(nèi)容均在nand flash的器件手冊上有明確要求。以mt29f2g08為例,在它的的異步接口模式列表中(表1),我們可以得到四種操作的接
4、口信號電平要求。以命令輸入(comm and input)為例,從表1中可以得到接口信號電平要求為:當(dāng)ce#為低,cle為高,ale為低,we#的上升沿,wp#為高時(shí),完成命令輸入操作。接口信號及各信號之間的時(shí)間要求通過時(shí)序定義來得到。命令輸入的時(shí)序定義如圖3所示,接口信號的時(shí)間要求在表2中列出。因命令輸入發(fā)生在we#上升沿,因此與we#上升沿相關(guān)的幾個(gè)時(shí)間是設(shè)計(jì)的關(guān)鍵所在:twp寫使能脈沖寬度時(shí)間-最小為10ns;tds數(shù)據(jù)建立時(shí)間-最小7ns,即命令輸入后we#需至少保持使能7ns才可以置高;tdh數(shù)據(jù)保持時(shí)間-最少5ns,即we#置高后命令需要至少保持5ns;tcls命令鎖存使能建立時(shí)間
5、-最少10ns;tclh命令鎖存使能保持時(shí)間-最小為5ns,即we#置高后cle需至少保持為高5ns。得到接口信號的電平和時(shí)間要求后,就可以在微處理器上編程實(shí)現(xiàn)對nand flash的各種操作。2 軟件驅(qū)動(dòng)實(shí)現(xiàn)在進(jìn)行nand flash驅(qū)動(dòng)編程之前,我們需要對微處理器dspic30f6010a的i/o按照圖1所示的連接方式進(jìn)行配置,分別將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í)為輸出端口,在數(shù)據(jù)輸出操作時(shí)為輸
6、入端口。時(shí)間方面,本例中dspic30f6010a系統(tǒng)時(shí)鐘設(shè)置為24mhz,因此指令周期fcy為24mhz/4為6mhz,即一條指令所用時(shí)間為167ns。以命令輸入操作為例,將其定義為函數(shù)flashwritecmd(),為函數(shù)定義一個(gè)參數(shù)cmd,根據(jù)上一小節(jié)所講,按照命令輸入的時(shí)序要求,將函數(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(),以這四個(gè)函數(shù)為基礎(chǔ)即可實(shí)現(xiàn)所有接口命令函數(shù),下面以接口命令read page為例說明。將read page命令定義為函數(shù)flashreadbyte(),為函數(shù)定義五個(gè)參數(shù),read_num讀取字節(jié)數(shù)量,byteaddr字節(jié)地址,pageaddr頁地址,blockaddr塊地址,以及buf字節(jié)存儲位置。如圖1所示,read page命令需要首先發(fā)送命令0x00,然后發(fā)送五個(gè)周期的地址,再發(fā)送命令0x30,之后等待r/b#(rdy)信號為高后才能進(jìn)行數(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;依照類似方法可實(shí)現(xiàn)nand flash規(guī)定的所有接口命令。需要注意的是在實(shí)現(xiàn)函數(shù)時(shí),要將時(shí)間留出余量,以免出現(xiàn)異常錯(cuò)誤。3 結(jié)論本文介紹的驅(qū)動(dòng)程序已經(jīng)應(yīng)用在項(xiàng)目中,實(shí)際結(jié)果顯示程序功能正確、穩(wěn)定可靠。雖然驅(qū)動(dòng)是基于dspic30f6010a單片機(jī),但其方法可以用于任意微處理器,此外驅(qū)動(dòng)可適用于任何符合onfi1.0標(biāo)準(zhǔn)的nand flash器件,有良好的通用性。參考文獻(xiàn)1rino micheloni,luca crippa,alessi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年四川省廣元市利州區(qū)人力資源和社會保障局考試招聘21人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年貴州黔南州事業(yè)單位面向應(yīng)征入伍大學(xué)畢業(yè)生招聘72人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年江蘇蘇州昆山市千燈鎮(zhèn)招聘工作人員38人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年江蘇建湖縣事業(yè)單位招聘擬聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川省眉山市廣播電視臺考試招聘10人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川瀘州市納溪區(qū)事業(yè)單位招聘工作人員63人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川樂山馬邊縣事業(yè)單位招聘工作人員111人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 工業(yè)園區(qū)土地復(fù)墾承諾書
- 通訊網(wǎng)絡(luò)建設(shè)合同審核流程
- 2024年短期借款協(xié)議模板詳細(xì)版版
- 統(tǒng)編版六年級語文詞句段運(yùn)用練習(xí)
- 打葉復(fù)烤工藝流程簡圖課件
- 施工現(xiàn)場入場安全教育課件
- ce自我聲明模板
- 克與千克說課課件
- 國開電大行管本科《政府經(jīng)濟(jì)學(xué)》期末考試總題庫2024版
- 生產(chǎn)與運(yùn)作管理第三版課后習(xí)題含答案版
- 高頻考點(diǎn)之評價(jià)與文本互證考題專練-2024年高考語文二輪復(fù)習(xí)三點(diǎn)突破講解專練
- 《高鐵酸鉀的制備》課件
- 上海財(cái)經(jīng)大學(xué)《801經(jīng)濟(jì)學(xué)》歷年考研真題及詳解
- 城市交通樞紐運(yùn)營故障應(yīng)急預(yù)案
評論
0/150
提交評論