<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于三星S3C2440A的Micro2440視覺處理平臺(tái)的構(gòu)建

          基于三星S3C2440A的Micro2440視覺處理平臺(tái)的構(gòu)建

          作者: 時(shí)間:2010-04-13 來源:網(wǎng)絡(luò) 收藏
          嵌入式機(jī)器人系統(tǒng)通常需要高速、功能接口豐富的器系統(tǒng),而最新的開發(fā)板采用了器,該ARM920T內(nèi)核,工作頻率400 MHz,0.13 μm的工藝制造,具有高性價(jià)比、低功耗、高性能的特點(diǎn)[1],同時(shí)內(nèi)部集成了LCD、CMOS攝像頭等接口模塊,能夠高速快捷地完成視頻信號(hào)處理,而且豐富的外圍接口提供了系統(tǒng)良好的擴(kuò)展特性。另外核心板可以與底板分離單獨(dú)運(yùn)行,為進(jìn)一步縮小體積預(yù)留了空間。無論是圖像的處理還是視頻流的處理,首先都需要完成,本文在開發(fā)板的基礎(chǔ)上實(shí)現(xiàn)了處理,完成了圖像、視頻的處理和顯示功能,并提出了顏色通道的背景差分法,完成目標(biāo)物體中心的實(shí)時(shí)檢測(cè)。
          1 系統(tǒng)整體流程
          設(shè)計(jì)首先完成了基本的硬件初始化,而CMOS攝像頭驅(qū)動(dòng)以及相應(yīng)的圖像處理作為一個(gè)單獨(dú)的模塊進(jìn)行加載運(yùn)行。該嵌入式系統(tǒng)的加載啟動(dòng)任務(wù)是由BootLoader(BootLoader是嵌入式系統(tǒng)加電后運(yùn)行的第一段程序)來完成的。BootLoader分為兩個(gè)階段:第一階段通常由匯編語言實(shí)現(xiàn)完成部分硬件的初始化,創(chuàng)建C語言運(yùn)行環(huán)境;第二階段繼續(xù)進(jìn)行初始化完成MMU、LCD顯示等設(shè)置。在系統(tǒng)完成基本硬件的初始化工作后,便可以啟動(dòng)攝像頭進(jìn)行圖像、視頻的采集處理,系統(tǒng)結(jié)構(gòu)如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/151933.htm


          BootLoader的第一階段啟動(dòng)的流程依次為:ARM啟動(dòng)或重啟→設(shè)置中斷向量→禁止看門狗、中斷→設(shè)置時(shí)鐘→Sdram初始化→復(fù)制RO/RW段到Sdram→ZI段清零→堆棧初始化→跳轉(zhuǎn)到main函數(shù)。第二階段則完成了以下操作:main函數(shù)→端口初始化→設(shè)置中斷請(qǐng)求→設(shè)置主頻→串口初始化→設(shè)置MMU→打開Cache→LCD初始化。ARM系統(tǒng)MMU的設(shè)計(jì)為了便于實(shí)現(xiàn),采用了2段式的虛擬地址分配方式,每個(gè)頁(Section)的大小設(shè)置為1MB;同時(shí)為了減少對(duì)S3C2440地址的修改,采用了虛擬地址與物理地址相同的地址分配方式。
          2 LCD設(shè)計(jì)
          Micro2440開發(fā)板配有240×320/NEC3.5英寸T- FT真彩液晶屏,正確設(shè)置后能夠顯示清晰的圖像、視頻。的LCD控制器支持的屏幕大小包括480×640、240×320以及160×160等尺寸,能夠產(chǎn)生VFRAME、VLINE、VCLK、VM等控制信號(hào)。這些控制信號(hào)的使用需要配置的C端口為L(zhǎng)CD控制。同時(shí)LCD的數(shù)據(jù)線VD[0]~ VD[7]也由C端口控制,VD[8]~VD[23]則由D端口控制,需要設(shè)置做為L(zhǎng)CD數(shù)據(jù)線。由于使用的是TFT真彩液晶屏,需要把LCD控制寄存器設(shè)置為TFT模式,這里設(shè)置為TFT的16BPP(Bits Per Pixel)模式;同時(shí)還需要對(duì)LCDCON5進(jìn)一步設(shè)置為5:6:5或5:5:5:1格式,這里設(shè)置RGB格式為5:6:5格式,此信號(hào)在OV9650傳輸如圖2所示[2]。以便和攝像頭的視頻輸出格式相一致,否則需要進(jìn)行格式的轉(zhuǎn)化。在設(shè)置完幀緩存地址后,寫入數(shù)據(jù),便可以實(shí)現(xiàn)圖像的顯示,格式轉(zhuǎn)換過程如圖3所示。

          3 攝像頭驅(qū)動(dòng)設(shè)計(jì)
          Micro2440開發(fā)板的配套攝像頭型號(hào)為OV9650,該攝像頭具有130萬像素,輸出視頻格式為YCbCr格式,同時(shí)S3C2440A的CAMIF(Camera Interface) 提供了ITU-R BT.601/656 8位標(biāo)準(zhǔn)輸入的支持[3],最大可采樣4 096×4 096像素的圖像[4],在Preview模式下支持輸出RGB 16/24 bit格式,這對(duì)于數(shù)字圖像的處理帶來了便利條件。S3C2440A的CAMIF與OV9650的連接如圖4所示。


          OV9650驅(qū)動(dòng)流程如下:設(shè)置Camera全局控制寄存器,并復(fù)位→配置S3C2440A的J端口→使能OV9650的Normal模式→設(shè)置接口時(shí)鐘→通過I2CSCL,I2C-SDA與SID_C, SID_D信號(hào)建立S3C2440A與OV9650的通信→設(shè)置OV9650的寄存器組→初始化3C2440A攝像頭接口,包括捕獲圖像的寬、高、偏移、輸入格式、輸出格式、緩沖區(qū)地址等→將OV9650將LCD緩沖區(qū)地址更改到Camera的緩沖區(qū)地址,以顯示Camera圖像→清除中斷→設(shè)置中斷處理函數(shù)→開始捕獲圖像。
          其中,OV9650與S3C2440A的通信采用了兩線制的SCCB (Serial Camera Control Bus) [5],通過該接口可實(shí)現(xiàn)各種圖像增強(qiáng)和控制功能,如自動(dòng)曝光、自動(dòng)增益、自動(dòng)白平衡控制等,以及控制圖像色彩、飽和度、銳化、鏡頭校準(zhǔn)等[6]。S3C2440A控制端口產(chǎn)生SCCB的啟動(dòng)、停止等控制信號(hào),SCCB 協(xié)議中開始條件定義為:在SID_C 為高電平時(shí), SID_D出現(xiàn)一個(gè)下降沿,則SCCB開始傳輸;停止條件定義為:在SID_C為高電平時(shí), SID_D出現(xiàn)一個(gè)上升沿,則SCCB停止傳輸;在數(shù)據(jù)傳輸時(shí),SID_C為高電平時(shí),需要SID_D上的數(shù)據(jù)的穩(wěn)定,以便傳輸,如圖5所示。


          以寫一位數(shù)據(jù)傳輸為例,基本流程為:將數(shù)據(jù)放在SID_D上→啟動(dòng)SID_C進(jìn)行傳輸→延時(shí)傳輸后停止SID_C;同理,傳輸8位數(shù)據(jù)則需循環(huán)8次。類似地,讀取時(shí)基本流程為:?jiǎn)?dòng)SID_C→讀取SID_D→停止SID_C。一個(gè)完整的數(shù)據(jù)傳輸?shù)膶懼芷陧樞驗(yàn)椋簩憦脑O(shè)備的ID→寫設(shè)備寄存器的地址→將此寄存器中寫入數(shù)據(jù)。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();