亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于dsPIC30F6010A的并口NANDFlash驅(qū)動設(shè)計與實現(xiàn)

        2020-05-18 02:44:46陸鵬
        科技視界 2020年9期
        關(guān)鍵詞:定義信號

        陸鵬

        摘 要

        本文通過分析8位并口NAND Flash的工作時序,設(shè)計其在dsPIC30F 6010A單片機(jī)下的軟件驅(qū)動,能夠?qū)崿F(xiàn)對NAND Flash的讀寫擦除等各種操作。

        關(guān)鍵詞

        NAND Flash;dsPIC30F6010A;并口;驅(qū)動

        中圖分類號: TP316.2 ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼: A

        DOI:10.19694/j.cnki.issn2095-2457.2020.09.044

        0 前言

        NAND Flash是嵌入式設(shè)計中常見的存儲器。8位并口NAND Flash是指數(shù)據(jù)線寬度為8位,通信接口為并行接口的NAND Flash,在其與微處理器的配合應(yīng)用中,NAND Fla sh與微處理器一般采用如圖1所示的連接方式。微處理器軟件驅(qū)動的設(shè)計是根據(jù)NAND Flash的工作時序,通過配置相關(guān)寄存器進(jìn)行相應(yīng)操作來實現(xiàn)的。本文中NAND Flash使用Micron公司的MT29F2G08系列進(jìn)行說明,微處理器則使用了Microchip公司的16位高性能單片機(jī)dsPIC30F6010A。

        1 NAND Flash信號時序

        從軟件驅(qū)動角度來講,NAND Flash最基本的操作有四種,即命令輸入、地址輸入、數(shù)據(jù)輸入、數(shù)據(jù)輸出。所有的NAND Flash接口命令都是由這四種操作組合而成,以MT29F2G08的READ PAGE命令為例,它是由兩個命令輸入操作(0x00,0x30)、五個地址輸入操作以及若干數(shù)據(jù)輸出操作組成,READ PAGE命令時序如圖2所示。

        因此如果在微處理上實現(xiàn)這四種基本操作,就能實現(xiàn)所有的接口命令,即實現(xiàn)了NAND Flash的驅(qū)動設(shè)計。

        為了實現(xiàn)這四種操作,我們需要明確兩個內(nèi)容:一,四種操作中接口信號的電平;二,接口信號及各信號之間的時間要求。這兩項內(nèi)容均在NAND Flash的器件手冊上有明確要求。以MT29F2G08為例,在它的的異步接口模式列表中(表1),我們可以得到四種操作的接口信號電平要求。以命令輸入(Comm and Input)為例,從表1中可以得到接口信號電平要求為:當(dāng)CE#為低,CLE為高,ALE為低,WE#的上升沿,WP#為高時,完成命令輸入操作。

        接口信號及各信號之間的時間要求通過時序定義來得到。命令輸入的時序定義如圖3所示,接口信號的時間要求在表2中列出。因命令輸入發(fā)生在WE#上升沿,因此與WE#上升沿相關(guān)的幾個時間是設(shè)計的關(guān)鍵所在:tWP寫使能脈沖寬度時間-最小為10ns;tDS數(shù)據(jù)建立時間-最小7ns,即命令輸入后WE#需至少保持使能7ns才可以置高;tDH數(shù)據(jù)保持時間-最少5ns,即WE#置高后命令需要至少保持5ns;tCLS命令鎖存使能建立時間-最少10ns;tCLH命令鎖存使能保持時間-最小為5ns,即WE#置高后CLE需至少保持為高5ns。

        得到接口信號的電平和時間要求后,就可以在微處理器上編程實現(xiàn)對NAND Flash的各種操作。

        2 軟件驅(qū)動實現(xiàn)

        在進(jìn)行NAND Flash驅(qū)動編程之前,我們需要對微處理器dsPIC30F6010A的I/O按照圖1所示的連接方式進(jìn)行配置,分別將CE#、RE#, WE#、R/B#、ALE、CLE、WP#、I/O[7:0]配置到所需的I/O口,其中CE#、RE#、WE#、ALE、CLE、WP#為輸出端口,R/B#為輸入端口,I/O[7:0]在命令輸入、地址輸入、數(shù)據(jù)輸入三種操作時為輸出端口,在數(shù)據(jù)輸出操作時為輸入端口。時間方面,本例中dsPIC30F6010A系統(tǒng)時鐘設(shè)置為24MHz,因此指令周期FCY為24MHz/4為6MHz,即一條指令所用時間為167ns。

        以命令輸入操作為例,將其定義為函數(shù)FlashWriteCmd(),為函數(shù)定義一個參數(shù)cmd,根據(jù)上一小節(jié)所講,按照命令輸入的時序要求,將函數(shù)編寫如下:

        void FlashWriteCmd(unsigned char cmd)

        {

        TRISDATA &= ~(0x00FF) ; // RE0~RE7輸出

        ALE=0;

        CLE=1;

        _nop_(); ?_nop_(); //tCLS

        WE=0;

        _nop_(); ?_nop_(); _nop_(); _nop_();

        _nop_(); ?_nop_(); _nop_(); _nop_();

        _nop_(); ?_nop_(); _nop_(); _nop_();//tWP

        DATAOUT= ((DATAOUT ?& 0xFF00) | cmd);

        _nop_(); ?_nop_(); //tDS

        WE=1;

        _nop_(); ?_nop_(); ?_nop_();// tDH, tCLH

        CLE=0;

        }

        按同樣思路完成其他三種基本操作的函數(shù)編程,分別定義為:地址輸入函數(shù)FlashWriteAddr(),數(shù)據(jù)輸入函數(shù)Flash Wr itePort(),數(shù)據(jù)輸出函數(shù)FlashReadPort(),以這四個函數(shù)為基礎(chǔ)即可實現(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)信號為高后才能進(jìn)行數(shù)據(jù)讀取,依此函數(shù)編程如下:

        void FlashReadByte(unsigned int

        Read_number,unsigned int ByteAddr,unsigned

        char PageAddr,unsigned int BlockAddr,unsigned

        char *buf)

        {

        unsigned int j,

        CE=0;

        FlashWriteCmd(0x00); //讀命令周期1

        FlashWriteAddr(ByteAddr&0xff); //寫字節(jié)低位地址

        FlashWriteAddr((ByteAddr>>8)&0x3f); //寫字節(jié)高位地址

        FlashWriteAddr(PageAddr); //寫頁地址

        FlashWriteAddr((BlockAddr>>1)&0xff); //寫塊低位地址

        FlashWriteAddr((BlockAddr>>9)&0x0F); //寫塊高位地址

        FlashWriteCmd(0x30); //讀命令周期2

        delay_us(20);

        NAND_WAITREADY();//等待RDY信號置高

        for(j=0;j

        {

        ClrWdt();

        *buf=FlashReadPort(); //讀取數(shù)據(jù)

        buf++;

        }

        CE=1;

        }

        依照類似方法可實現(xiàn)NAND Flash規(guī)定的所有接口命令。需要注意的是在實現(xiàn)函數(shù)時,要將時間留出余量,以免出現(xiàn)異常錯誤。

        3 結(jié)論

        本文介紹的驅(qū)動程序已經(jīng)應(yīng)用在項目中,實際結(jié)果顯示程序功能正確、穩(wěn)定可靠。雖然驅(qū)動是基于dsPIC30F6010A單片機(jī),但其方法可以用于任意微處理器,此外驅(qū)動可適用于任何符合ONFI1.0標(biāo)準(zhǔn)的NAND Flash器件,有良好的通用性。

        參考文獻(xiàn)

        [1]Rino Micheloni,Luca Crippa,Alessia Marelli.Inside NAND Flash Memories.

        [2]MT29F2G08 NAND Flash Memory Datasheet.Micron Technology,Inc.

        [3]dsPIC30F6010A/6015 Datasheet.Microchip Technology,Inc.

        猜你喜歡
        定義信號
        信號
        鴨綠江(2021年35期)2021-04-19 12:24:18
        永遠(yuǎn)不要用“起點”定義自己
        海峽姐妹(2020年9期)2021-01-04 01:35:44
        完形填空二則
        定義“風(fēng)格”
        孩子停止長個的信號
        基于LabVIEW的力加載信號采集與PID控制
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        一種基于極大似然估計的信號盲抽取算法
        修辭學(xué)的重大定義
        山的定義
        亚洲AV无码乱码精品国产草莓| 性无码免费一区二区三区在线| 内射囯产旡码丰满少妇| 无码精品色午夜| av天堂一区二区三区精品| 大陆老熟女自拍自偷露脸| 伊人久久大香线蕉av网禁呦| 国产在线观看入口| 亚洲综合久久久中文字幕| 男女啪啪视频高清视频| 国产乱子伦农村xxxx| 俺也去色官网| 男男互吃大丁视频网站| 精品亚洲一区二区三区四区五| 欧美性受xxxx狂喷水| 欧洲中文字幕| 日本高清人妻一区二区| 制服丝袜一区二区三区| 国产又滑又嫩又白| 国内精品福利在线视频| 成熟的女人毛茸茸色视频| 永久免费人禽av在线观看| 国产免费久久精品国产传媒| 亚洲av噜噜狠狠蜜桃| 国产精品午夜夜伦鲁鲁| 无码国模国产在线观看| 少妇无码av无码去区钱| 日本午夜伦理享色视频| 国产亚洲精品第一综合另类| 亚洲av无码一区二区三区性色| 日韩欧美亚洲国产一区二区三区| av网页免费在线观看| 国产精品久久久国产盗摄| 特黄aa级毛片免费视频播放| 亚洲第一女人天堂av| 亚洲va久久久噜噜噜久久天堂| 亚洲av无码一区二区三区性色| 中文字幕日韩熟女av| 免费久久久一本精品久久区| 88久久精品无码一区二区毛片| 亚洲AV秘 无码一区二区三|