STM32和OV2640的嵌入式圖像采集系統(tǒng)設(shè)計(jì)
摘要:基于STM32嵌入式系統(tǒng)及200萬攝像頭OV2640設(shè)計(jì)了圖像采集系統(tǒng),分析了系統(tǒng)的基本硬件架構(gòu),分別對不同模塊的功能特點(diǎn)作出了簡單的介紹;對系統(tǒng)的軟件設(shè)計(jì)給出了詳細(xì)的說明,介紹了系統(tǒng)初始化的基本思路和流程,以及相關(guān)外圍設(shè)備模塊在程序中的使用;并給出了系統(tǒng)的整體設(shè)計(jì)思路,實(shí)現(xiàn)了系統(tǒng)的穩(wěn)定運(yùn)行。
本文引用地址:http://www.ex-cimer.com/article/201609/304502.htm引言
隨著電子產(chǎn)品向低功耗、低價格、智能化的方向發(fā)展,利用視頻傳感器采集圖像成為研究熱點(diǎn),如可視門鈴、安全監(jiān)控、賽車自動循跡、煙葉圖像采集、草本葉子圖像采集等。本文根據(jù)在線采集、分析、存儲圖像的需求,設(shè)計(jì)了嵌入式圖像采集系統(tǒng),運(yùn)用嵌入式芯片STM32對圖像信息進(jìn)行采集、顯示和存儲。
1 系統(tǒng)結(jié)構(gòu)與功能
圖像采集系統(tǒng)以基于ARM公司的Cortex—M3內(nèi)核的STM32F103RBT6(以下簡稱STM32)處理器為核心,配合OV2640攝像頭和TFT液晶顯示器,是一款采集像素多、實(shí)時性好且成本低廉的圖像采集系統(tǒng)。
系統(tǒng)的硬件結(jié)構(gòu)框圖如圖1所示,系統(tǒng)通過J—Link口實(shí)現(xiàn)程序在STM32上的仿真、在線調(diào)試,利用J—LINK仿真編程器將編譯之后的二進(jìn)制文件燒寫到Flash中,系統(tǒng)每次上電時便可從Flash啟動文件系統(tǒng),圖像采集系統(tǒng)采用OV2640攝像頭模塊,輸出顯示采用2.4英寸TFT液晶顯示屏,可將采集到的數(shù)據(jù)保存在SD卡中。當(dāng)存儲按鍵按下時,系統(tǒng)接收中斷,同時將從OV2640攝像頭采集到的數(shù)據(jù)顯示在液晶顯示屏上。
2 硬件設(shè)計(jì)
2.1 CPU處理器
本系統(tǒng)用的是32位的Cortex-M3內(nèi)核的STM32芯片STM32F103RBT6,支持Thumb2指令集,STM32F103RBT6內(nèi)部的Flash有128K,SRAM大小為20 K,有64個增強(qiáng)I/O口、2個USART、2個12位的A/D轉(zhuǎn)換器。它的供電電壓為2.0~3.6 V,擁有省電模式,可以保證低功耗需求。CPU主頻最高可以達(dá)到72 MHz。
2.2 OV2640攝像頭
OV2640具有體積小、工作電壓低、兼容I2C總線接口等特點(diǎn)。通過SCCB總線控制,支持RawRGB、RGB(GRB4:2:2、RGB565/555/444)、YUV(4:2:2)和YCbCr(4:2:2)輸出格式,可以輸出整幀、二次轉(zhuǎn)換分辨率、取特定區(qū)域等方式的各種分辨率的8位或10位的圖像幀數(shù)據(jù),UXGA(1 632×1 232)圖像最高達(dá)到15 fps。因此,編程者可選擇不同圖像質(zhì)量、數(shù)據(jù)格式,而且,OV2640的高靈敏度適合低照度環(huán)境,它的低電壓特性適合嵌入式開發(fā)應(yīng)用,攝像頭數(shù)據(jù)口連接CPU的示意圖如圖2所示。采用攝像頭的8位數(shù)據(jù)模式,攝像頭高8位接CPU的I/O口的低8位,低2位懸空。
2. 3 SCCB總線
SCCB(OmniVision Serial Camera Control Bus)與I2C總線協(xié)議類似,使用SIO-0和SIO-1兩根數(shù)據(jù)線進(jìn)行傳輸和控制。SIO-1是控制線,提供傳輸過程中的時鐘脈沖控制信號,SIO-0是串行雙向數(shù)據(jù)傳輸線,根據(jù)控制信號通過串行的方式發(fā)送數(shù)據(jù)。在很多設(shè)計(jì)中,經(jīng)常采用I/O口模擬I2C總線的傳輸,對于SCCB,也可以采用這樣的方式。
采用I/O口模擬SCCB總線的要點(diǎn)如下:對于SCL所連接的引腳,在寄存器中設(shè)置為輸出,而SDA所接的引腳,在數(shù)據(jù)傳送過程中,基于IODIR值的改變,動態(tài)改變引腳為輸入或輸出方式。
2.4 LCD顯示模塊
本設(shè)計(jì)所用的為2.4英寸的TFT液晶顯示屏,內(nèi)部集成有ILI9320 LCD控制芯片,可以直接控制數(shù)據(jù)的顯示。ILI9320可以用來讀寫寄存器、GRAM,還可顯示動態(tài)圖形的RGB輸入接口。顯示控制芯片有RGB接口模式與i80系統(tǒng)接口模式,設(shè)計(jì)選用i80-system接口模式。
i80-system接口是通過設(shè)置IM[3:0]來決定的,同時這幾個位也決定了數(shù)據(jù)傳輸位數(shù)的模式,通過硬件設(shè)置IM0位高電平,IM1位高電平,把模式設(shè)置為了8位i80-system接口傳輸模式。連接示意圖如圖3所示。
要寫數(shù)據(jù)到屏上顯示,只需要對寄存器0x0022進(jìn)行寫操作即可,當(dāng)這個寄存器的數(shù)據(jù)更新時,地址指針(AC)會自動增加或減小,讀數(shù)據(jù)也是同樣的道理。
2.5 SD卡接口電路設(shè)計(jì)
通常而言,SD卡電路設(shè)計(jì)有兩種模式:SPI模式和SD卡模式,由于引腳資源限制,對于連接STM32的方式,采用第一種設(shè)計(jì)電路,通過STM32上面的SPI接口來和SD卡進(jìn)行數(shù)據(jù)通信,引腳如圖4所示。
在SPI模式中,數(shù)據(jù)通過STM32的MOSI與MISO進(jìn)行傳送,SCK信號線用來提供工作時鐘,當(dāng)SD卡收到復(fù)位命令(CMD0)時,SD卡立即進(jìn)入SPI
模式。要注意的是,在發(fā)送CMD0之前須發(fā)送大于74個的時鐘周期;另外,在SD卡初始化時,CLK時鐘頻率最大不能超過400 kHz。
3 軟件設(shè)計(jì)
3.1 系統(tǒng)初始化
系統(tǒng)初始化主要是對CPU時鐘進(jìn)行初始化,以及設(shè)置外圍電路的時鐘分頻比,設(shè)置中斷。其流程可描述如下:
3.2 攝像頭初始化
首先,通過SCCB總線設(shè)置OV2640的寄存器數(shù)據(jù),主要是配置攝像頭輸出數(shù)據(jù)格式類型和輸出圖像數(shù)據(jù)大小,達(dá)到初始化OV2640的目的OV2640初始化流程較為簡單,偽代碼如下:
評論