在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 2440裸機(jī)學(xué)習(xí)心得(下)

        2440裸機(jī)學(xué)習(xí)心得(下)

        作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
        攝像頭驅(qū)動(dòng)
        一些概念:
        攝像接口的主時(shí)鐘信號(hào)由USB PLL產(chǎn)生,它的頻率為96MHz,再經(jīng)過(guò)分頻處理后輸出給攝像頭,攝像頭再根據(jù)該時(shí)鐘信號(hào)產(chǎn)生三個(gè)同步時(shí)鐘信號(hào)(像素時(shí)鐘、幀同步時(shí)鐘和行同步時(shí)鐘),反過(guò)來(lái)再輸入回s3c2440。
        OV9650內(nèi)部有大量的寄存器需要配置,這就需要另外的數(shù)據(jù)接口。
        OV9650的數(shù)據(jù)接口稱為SCCB(串行攝像控制總線),它由兩條數(shù)據(jù)線組成:一個(gè)是用于傳輸時(shí)鐘信號(hào)的SIO_C,另一個(gè)是用于傳輸數(shù)據(jù)信號(hào)的SIO_D。SCCB的傳輸協(xié)議與IIC的極其相似,只不過(guò)IIC在每傳輸完一個(gè)字節(jié)后,接收數(shù)據(jù)的一方要發(fā)送一位的確認(rèn)數(shù)據(jù),而SCCB一次要傳輸9位數(shù)據(jù),前8位為有用數(shù)據(jù),而第9位數(shù)據(jù)在寫周期中是Don’t-Care位(即不必關(guān)心位),在讀周期中是NA位。SCCB定義數(shù)據(jù)傳輸?shù)幕締卧獮橄啵╬hase),即一個(gè)相傳輸一個(gè)字節(jié)數(shù)據(jù)。
        SCCB只包括三種傳輸周期,即3相寫傳輸周期(三個(gè)相依次為設(shè)備從地址,內(nèi)存地址,所寫數(shù)據(jù)),2相寫傳輸周期(兩個(gè)相依次為設(shè)備從地址,內(nèi)存地址)和2相讀傳輸周期(兩個(gè)相依次為設(shè)備從地址,所讀數(shù)據(jù))。當(dāng)需要寫操作時(shí),應(yīng)用3相寫傳輸周期,當(dāng)需要讀操作時(shí),依次應(yīng)用2相寫傳輸周期和2相讀傳輸周期。(這些讀寫和IIC一樣~)
        OV9650有兩個(gè)只讀寄存器——0x1C和0x1D,用于存放廠家ID,數(shù)據(jù)分別為0x7F和0xA2,我們可以通過(guò)讀取它們來(lái)判斷s3c2440是否連接了OV9650。當(dāng)確認(rèn)連接了OV9650后,我們就可以把VGA(640×480)模式下YUV彩色空間的配置數(shù)組寫入OV9650內(nèi)(二維數(shù)組:第一個(gè)表示寄存器地址,第二個(gè)表示要寫入的數(shù)據(jù))
        注意比較三個(gè)變量的含義:
        Width = 640 //源寬度
        PrDstWidth =480 //目標(biāo)寬度
        SrcWidth =640-WinHorOffset*2; //偏移后寬度
        驅(qū)動(dòng)函數(shù)編寫步驟:
        外圍基礎(chǔ)準(zhǔn)備硬件初始化
        IIC初始化,LCD初始化,UPLL時(shí)鐘初始化(96M,0V9650系統(tǒng)時(shí)鐘),
        GPIO初始化(GPJ),硬件和軟件復(fù)位攝像頭(GPJ12為CAMERARESET,rCIGCTRL)
        0V9650寄存器配置
        A、讀取OV9650廠商ID,驗(yàn)證是否工作
        B、復(fù)位所有OV9650寄存器
        C、配置OV9650寄存器(用規(guī)定的二維數(shù)組直接配)
        攝像頭接口初始化
        攝像頭接口的一些寄存器初始化:rCIGCTRL,rCIWDOFSTrCISRCFMT
        rCIPRTRGFMT,rCIPRTAREA
        B、設(shè)置內(nèi)存首地址為L(zhǎng)CD緩存數(shù)組首地址:rCIPRCLRSA1~4
        C、計(jì)算水平和垂直縮放比率和位移量,以及主水平、垂直比率
        放入以下三個(gè)寄存器中rCIPRSCPRERATIO,rCIPRSCPREDSTrCIPRSCCTRL
        中斷函數(shù)開啟和指向
        控制臺(tái)菜單的編寫與實(shí)現(xiàn)
        顯示視頻
        rCIPRSCCTRL|=(1<<15); //預(yù)覽縮放開啟
        rCIIMGCPT =(1<<31)|(1<<29); //預(yù)覽縮放捕捉使能
        截圖,定格
        rCIPRSCCTRL &=~(1<<15); //預(yù)覽縮放關(guān)閉
        rCIIMGCPT &=~((1<<31)|(1<<29)); //預(yù)覽縮放捕捉不使能
        視頻定格后,LCD_BUFFER數(shù)組就是圖像數(shù)據(jù)
        放大,縮小
        調(diào)節(jié)偏移量HOffset,VOffset,每次改變后重新初始化攝像頭接口
        四個(gè)額外寫出需注意的函數(shù):
        1、計(jì)算主突發(fā)長(zhǎng)度和剩余突發(fā)長(zhǎng)度CalculateBurstSize
        2、/計(jì)算預(yù)縮放比率及移位量CalculatePrescalerRatioShift
        3、中斷函數(shù)(只清中斷,不干別的) camera_interrupt
        4、SCCB總線函數(shù)的讀寫(像IIC)Rd_SCCB,Wr_SCCB
        網(wǎng)卡驅(qū)動(dòng)
        DM9000的一些基本概念:
        DM9000對(duì)外來(lái)說(shuō)只有兩個(gè)端口——地址口和數(shù)據(jù)口,地址口用于輸入內(nèi)部寄存器的地址,而數(shù)據(jù)口則完成對(duì)某一寄存器的讀寫。DM9000的CMD引腳用來(lái)區(qū)分這兩個(gè)端口,當(dāng)CMD引腳為0時(shí),DM9000的數(shù)據(jù)線上傳輸?shù)氖羌拇嫫鞯刂?,?dāng)CMD引腳為1時(shí),傳輸?shù)氖亲x寫數(shù)據(jù)。
        我們把DM9000的A8和A9接為高電平,把A4~A7接為低電平,并且把DM9000的AEN接到s3c2440的nGCS4引腳上,則DM9000的端口基址為0x20000300,如果再把DM9000的CMD引腳接到s3c2440的ADDR2引腳上0x20000304(怎么計(jì)算?)
        查了一下書,是和存儲(chǔ)控制器有關(guān)系,每個(gè)nGCSx對(duì)應(yīng)128M地址空間,8個(gè)nGCSx對(duì)應(yīng)1G地址。
        nGCS4剛好對(duì)應(yīng)0x20000000開始的地址,但為什么是0x20000300?
        再加上IObase:300
        如果將DM9000的CMD引腳接到s3c2440的ADDR2,由于CMD引腳的高低電平?jīng)Q定地址口和數(shù)據(jù)口,那么,ADDR2為0時(shí),訪問(wèn)的
        就是地址口,所以地址口的起始地址為ARRD2為0的情況,即0x20000000;ADDR2為1時(shí),(LADDR3~LADDR0 = 0100)訪問(wèn)的就是數(shù)
        據(jù)口,所以數(shù)據(jù)口的地址即0x20000004。
        如果要寫入DM9000中的某個(gè)寄存器,則先把該寄存器的地址賦予DM_ADDR_PORT,然后再把要寫入的數(shù)據(jù)賦予DM_DATA_PORT即可。讀取DM9000中的某個(gè)寄存器也類似。
        DM9000寄存器介紹在數(shù)據(jù)手冊(cè)11頁(yè)開始:
        DM9000內(nèi)部有0x3FF大小的SRAM用于接受和發(fā)送數(shù)據(jù)緩存。在發(fā)送或接收數(shù)據(jù)包之前,數(shù)據(jù)是暫存在這個(gè)SRAM中的。當(dāng)需要連續(xù)發(fā)送或接收數(shù)據(jù)時(shí),我們需要分別把DM9000寄存器MWCMD或MRCMD賦予數(shù)據(jù)端口,這樣就指定了SRAM中的某個(gè)地址,并且在傳輸完一個(gè)數(shù)據(jù)后,指針會(huì)指向SRAM中的下一個(gè)地址,從而完成了連續(xù)訪問(wèn)數(shù)據(jù)的目的。
        基于ARP協(xié)議的DM9000編寫步驟:
        初始化EINT7中斷,設(shè)置中斷函數(shù)入口
        因?yàn)镈M9000的數(shù)據(jù)中斷引腳INT是連接到s3c2440的外部中斷7引腳上的
        編寫好讀和寫DM9000寄存器函數(shù),用其配置DM9000的寄存器
        并使其用中斷方式接收網(wǎng)卡數(shù)據(jù),查詢方式發(fā)送數(shù)據(jù)
        (這步挺難的,很多寄存器要配置,對(duì)照著Datasheet和別人的程序)
        注:DM9000內(nèi)的寄存器的地址宏定義時(shí),不用管基址,直接按OFFSET定義
        編寫好DM9000發(fā)送和接受函數(shù)(位寬為16)
        分別把DM9000寄存器MWCMD或MRCMD賦予數(shù)據(jù)端口
        接受數(shù)據(jù)時(shí)要注意,按照規(guī)定的格式來(lái)編寫
        定義一個(gè)符合ARP協(xié)議格式的數(shù)組,用于數(shù)據(jù)傳輸
        將該數(shù)組作為發(fā)送函數(shù)形參發(fā)給PC機(jī)請(qǐng)求包
        編寫中斷函數(shù),清屏蔽
        將接收函數(shù)中的數(shù)組內(nèi)容,用串口打印出控制臺(tái)
        SD卡驅(qū)動(dòng)
        SD(全名為Secure Digital Memory Card,安全數(shù)碼卡)
        s3c2440集成了SD控制器,可以方便地讀寫SD、MMC和對(duì)SDIO進(jìn)行操作。
        可以用SDIO控制器來(lái)編,也可用SPI總線來(lái)編
        SDIO的應(yīng)用是未來(lái)嵌入式系統(tǒng)最重要的接口技術(shù)之一,會(huì)取代目前GPIO式的SPI接口
        具體的CMD命令和協(xié)議內(nèi)容自己看回資料了。
        我使用的SD卡為手機(jī)的內(nèi)存卡(不是MMC),型號(hào)為SDHC_V20_CARD,支持PLV2.0協(xié)議
        主要講編寫簡(jiǎn)單的SD讀寫步驟:
        準(zhǔn)備工作,編寫要使用到一堆東西:
        檢查SDIO命令發(fā)送,接收是否結(jié)束函數(shù)Chk_CMD_End(int cmd, int be_resp)
        使用到的CMD和ACMD函數(shù)(這部分要配置寄存器,要查值,比較難,參考別人的吧)
        編寫一個(gè)要用的結(jié)構(gòu)體SD_STRUCT,用于記錄cCardType和iCardRCA等
        SD卡識(shí)別模式:
        初始化:時(shí)鐘400K,Type B, clk enable,SD卡模式,F(xiàn)IFO reset
        CMD 0——》reset指令
        CMD 8——》工作電壓范圍,初始化SDHC卡,看是否支持PLV2.0,返回類型
        CMD 55——》RCA為0x0,使用ACMD41前必須使用
        ACMD 41——》識(shí)別卡能否在給定的VDD下工作
        CMD 2——》查卡的CID信息
        CMD 3——》要求系統(tǒng)給SD卡發(fā)送一個(gè)新相對(duì)地址RCA
        改時(shí)鐘頻率:25M,準(zhǔn)備進(jìn)入transfer狀態(tài)
        CMD 7——》進(jìn)入transfer狀態(tài)
        ACMD 6——》設(shè)置總線寬度為4bit
        數(shù)據(jù)傳輸模式:
        若需要擦除:
        {
        CMD 32——》start address
        CMD 33——》end address
        CMD 38——》erase
        }注意:擦除后必須要進(jìn)行復(fù)位,即重新初始化前面步驟,不然不能進(jìn)行讀寫
        單塊寫或多塊寫
        CMD 7——》transfer模式
        單塊讀或多塊讀
        拓展:
        將攝像頭捕捉的圖像,寫進(jìn)SD卡中,然后再還原顯示出來(lái)
        注意一個(gè)點(diǎn):
        就是要將LCD_BUFFER[480][272]的二維數(shù)組轉(zhuǎn)化為L(zhǎng)CD_BUFFER_SD[480*272]一維
        一個(gè)疑問(wèn)?好像只需51200就可將整幅圖像都顯示出來(lái),而不需要480*272那么多
        附加部分(有空研究):
        文件系統(tǒng)的構(gòu)建:

        上一頁(yè) 1 2 3 下一頁(yè)

        關(guān)鍵詞: 2440v裸機(jī)學(xué)

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉