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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于STM32+OV7670的低端視頻監(jiān)控系統(tǒng)設(shè)計(jì)

          基于STM32+OV7670的低端視頻監(jiān)控系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2014-05-04 來源:網(wǎng)絡(luò) 收藏

          摘要:本系統(tǒng)采用了意法半導(dǎo)體公司的F407微處理器作為核心,以作為監(jiān)控系統(tǒng)的視頻采集傳感器,并將傳感器采集的數(shù)據(jù)通過DMA控制器成功地發(fā)送至液晶模塊(SSD1289)顯示。該系統(tǒng)運(yùn)行流暢,為低端視頻監(jiān)控系統(tǒng)提供了一種新的解決方案。

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

          引言

          本系統(tǒng)著眼于經(jīng)濟(jì)型視頻監(jiān)控系統(tǒng),可應(yīng)用于工業(yè)自動(dòng)化設(shè)備、汽車安全駕駛、醫(yī)療設(shè)施或大樓供水、供電等系統(tǒng)的監(jiān)控,應(yīng)用前景廣闊、成本低廉、系統(tǒng)簡(jiǎn)潔。

          1 芯片簡(jiǎn)介

          1.1 F407簡(jiǎn)介

          本系統(tǒng)采用的處理器是意法半導(dǎo)體公司的F407,該處理器以32位Cortex—M4為內(nèi)核,具有浮點(diǎn)運(yùn)算功能的低端高速ARM,其內(nèi)部集成了大量可供立即使用的資源,如TFT液晶顯示器接口(Flexible Stactie Memory Control,F(xiàn)SMC)、攝像頭接口(Camera Inter face)、DMA控制器等,方便且實(shí)用。

          1.2 簡(jiǎn)介

          是OmniVision公司基于CMOS VGA的圖像傳感器,可通過SCCB總線控制輸出整幀、子采集、取窗口等操作,其VGA圖像最高可達(dá)到30 fps。其對(duì)外重要接口有:XCLK(時(shí)鐘輸入)、HREF(輸出行同步信號(hào))、VSYNC(輸出場(chǎng)同步信號(hào))、PCLK(輸出像素時(shí)鐘)、RESET(復(fù)位輸入信號(hào))、PWDN、SIO_C(SCCB總線時(shí)鐘信號(hào))、SIO_D(SCCB總線數(shù)據(jù)信號(hào))、D0~D7(攝像頭輸出數(shù)據(jù)信號(hào))。

          本系統(tǒng)采用的OV7670不帶FIFO,由STM32F407直接通過SCCB總線讀取數(shù)據(jù),并顯示在LCD上。

          2 硬件和軟件實(shí)現(xiàn)

          2.1 硬件實(shí)現(xiàn)

          本系統(tǒng)硬件電路實(shí)現(xiàn)簡(jiǎn)單,微處理器與系統(tǒng)主要外設(shè)連接如圖1所示,主要涉及STM32F407與TFT液晶模塊連接以及與OV7670圖像傳感器的連接,接口電路如圖2、圖3所示。

           

           

          STM32F407與TFT液晶模塊連接時(shí),僅需將該模塊考慮成一個(gè)SRAM即可,具體連接方式見圖2。唯一需要注意的是,液晶模塊RS和CS端與STM32F407的FSMC控制器的連接,本系統(tǒng)中RS連接FSMC_A0(PF0),CS連接FSMC_NE4(PG12),這些連接直接關(guān)系到軟件初始化時(shí)相關(guān)寄存器地址設(shè)置。

           

           

          如圖3所示,STM32F407與OV7670連接時(shí),OV7670的XLCK PC9可以選擇STM32F407的MC01或MC02引腳,同時(shí)PCI SOIC和SOID PC2引腳可以連接至I2C總線,也可以根據(jù)軟件設(shè)計(jì)定義其他I/O引腳(本系統(tǒng)采用了這種方案),OV7670的其他端口連接至DCMI相應(yīng)接口即可。

           

           

          2.2 軟件實(shí)現(xiàn)

          本系統(tǒng)的軟件設(shè)計(jì)關(guān)鍵點(diǎn)在于系統(tǒng)時(shí)鐘的配置、TFT液晶模塊初始化、OV7670圖像傳感器初始化、SCCB總線時(shí)序模擬。軟件程序流程圖如圖4所示。

           

           

          系統(tǒng)時(shí)鐘配置由RCC_Config()函數(shù)完成,函數(shù)內(nèi)部結(jié)構(gòu)如下:

           

           

          TFT液晶模塊初始化關(guān)鍵點(diǎn)在于FSMC控制器的配置和寄存器地址的計(jì)算。STM32F407的FSMC使用了AHB3提供的時(shí)鐘信號(hào),因而需要使能AHB3時(shí)鐘以及FSMC控制器復(fù)用的其他I/O端口所在時(shí)鐘信號(hào)。寄存器地址則需要根據(jù)液晶模塊的RS和CS端與FSMC接口的具體連接方式計(jì)算。由于STM32F4系列微處理器的FSMC控制器對(duì)外設(shè)備地址映射從0x60000000開始到0x9FFFFFFF結(jié)束,共有4個(gè)BANK組成,每個(gè)BANK大小為256 MB,每個(gè)BANK又分為4個(gè)小塊,每塊大小為64 MB。

          在TFT液晶初始化程序中選擇了BANK1,且CS連接FSMC NE4(PG12),故TFT液晶模塊的寄存器起始地址為0x6C000000;RS連接FSMC_A0(PF0),故TFT液晶模塊的RAM為0x6C000000+20×2=0x6C000002。如果在TFT液晶初始化程序中選擇了BANK1,且CS連接FSMC NE1(PD7),TFT液晶模塊的寄存器起始地址為0x60000000;RS連接FSMC A18(PD13),TFT液晶模塊的RAM為0x60000000+218×2=0x60080000。

          依次類推可以計(jì)算其他連接方法時(shí),液晶模塊的寄存器起始地址和RAM地址。代碼如下:

          #define LCD_RAM *(vu16*)((u32)0x6c000002) //定義RAM基地址

          #define LCD_REG *(vu16*)((u32)0x6c000000) //定義REG基地址

          OV7670圖像傳感器初始化關(guān)鍵點(diǎn)有兩個(gè),首先是微處理器的DCMI接口及DMA部分的配置,這些配置主要體現(xiàn)在DCMI接口、DMA控制器以及圖像傳感器用到的其他I/O端口所在時(shí)鐘總線使能方面;其次是OV7670本身寄存器配置方面。由于篇幅所限,現(xiàn)將一些重要的函數(shù)列出,并給出重要注釋,僅供參考。

           

           

           

           

          SCCB總線時(shí)序模擬可以根據(jù)SCCB標(biāo)準(zhǔn)中定義的時(shí)序進(jìn)行程序編寫,這一部分為大家所熟知,不再贅述。

          結(jié)語

          通過以上程序編寫、軟件和硬件的調(diào)試,最終得到比較滿意的結(jié)果,如圖5所示。

           

           

          雖然視頻圖像顯示有點(diǎn)模糊,且畫面略有頓挫感,但是可以通過軟件、硬件的再優(yōu)化提升畫面效果,同時(shí)也為STM32F407和OV7670在視頻監(jiān)控系統(tǒng)中的應(yīng)用提供思路。

          led顯示器相關(guān)文章:led顯示器原理




          關(guān)鍵詞: STM32 OV7670

          評(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); })();