馬經權,王中剛,康國旗
(武漢信息傳播職業技術學院,湖北 武漢 430223)
基于STM32F103的圖像采集系統設計
馬經權,王中剛,康國旗
(武漢信息傳播職業技術學院,湖北 武漢 430223)
本設計以STM32F103為控制核心,設計了一個圖像采集系統。該系統使用CMOS攝像頭來OV7670獲取圖像數據,在微控制器的控制下,將圖像信息經緩存器緩存后存入到SD卡中,并通過LCD實時顯示。該系統硬件資源精簡,采集的圖像顯示清晰、實用性強,適合便攜式圖像采集系統使用。
STM32F103;圖像傳感器;圖像采集;LCD
本設計圖像采集系統在便攜式電子裝備、機器視覺等一些領域被廣泛使用,其核心技術是實時圖像的采集技術。采集圖像處理的速度及質量會影響產品的整體性能。現階段較多的圖像采集系統都用ARM,DSP技術,但系統較復雜而且成本高,應用較困難。本項目設計的圖像采集系統是基于STM32F103,具有圖像質量好,功耗低、實時性好、成本低等優點。
本設計的圖像采集系統主要由STM32F103微處理器、OV7670攝像頭、AL422B幀緩存器、TFT類液晶屏、SD存儲卡及其他傳輸外設構成。圖像采集系統的整體設計如圖1所示。

圖1 圖像采集系統整體設計
1.1 主控制器
ST公司基于ARMCortex- M3內核的設計的STM32F103是一款32位的MCU,其工作頻率可以達到72 MHz,在正常的工作頻率下,其指令的處理速度可以達到1.25 MIPs/ MHz,但其電流消耗量較低,僅為27 mA;將STM32F103作為圖像采集系統的控制核心,可極大地提高圖像采集系統的性能。
1.2 CMOS攝像頭
本設計選用OmniVision公司的OV7670。OV7670可以輸出8位圖像數據,3中不同的RGB /YCbCr /YUV的圖像格式,在圖像數據的傳輸過程中幀頻可以達到30幀/S的高速率,能夠支持的圖像分辨率可以達到640×480 ppi,電壓與主控的供電電壓一致為3.3 V。OV7670帶有標準的SCCB總線傳輸數據,而SCCB接口是兼容I2C接口。
1.3 FIFO幀緩沖器
本設計將AL422B作為數據處理的RAM。AL422B是一款FIFO存儲芯片,存儲容量可達到384 K×8 B,工作頻率可以達到50 MHz。在此系統中,一個完整幀圖像包含的像素點的個數為320×240,存儲完整一幀圖像的像素點所需要的存儲空間為153 600字節,所以AL422B的性能指標是滿足系統的設計需求。
1.4 SD卡存儲器
SD卡存儲器被廣泛地使用在電子裝備產品中。本設計選用金士頓4G的SD卡作為存儲器來使用,存儲卡可以將幀圖像的像素點的信息加以存儲,為后期的信息處理提供方便。
1.5 TFT液晶屏及其他外設
本設計將3.2寸TFT液晶屏作為顯示屏來使用,此TFT液晶屏分辨率為240×320 ppi,將STM32的FSMC總線與液晶屏的數據引腳直接相連。其他的外設主要包括復位電路、晶振電路、JTAG 調試電路及WiFi無線傳輸模塊等。
1.6 圖像采集電路設計
本設計用24 MHz晶振給圖像傳感器OV7670提供系統時鐘。為了解決STM32與OV7670兩者間的數據傳輸速率不一致,現將FIFO作為幀緩存器連接在兩者之間,攝像頭將采集的像素數據先緩存到AL422B后再送到MCU。為將攝像頭采集的圖像數據自動地寫到緩存中,采用了一個74HC00與非門芯片,來產生符合AL422B 寫時序的信號。圖像采集模塊與STM32F103的接口電路如圖2所示。
本設計主控通過I2C總線產生控制信號來模擬SCCB總線通信,從而來對OV7670寄存器進行初始化,此外還需要對行場同步信號、開窗及輸出格式進行配置。
1.7 存儲模塊
本設計中SD采用SPI總線,將SD卡的CMD引腳、CLK引腳、DATA0引腳、DATA3引腳分別與與STM32F103的SPI3_ MOSI引腳、SPI3_SCK引腳,SPI3_MOS引腳相連,其中DATA3作為片選CS,黨SD卡收到復位指令時,如果片選CS信有效則會啟動SPI總線,SD存儲卡在 SPI3_SCK引腳的控制下,通過數據口DATA0來完成圖像像素數據的寫入。

圖2 圖像采集模塊與STM32F103接口電路示意
在軟件的系統設計過程中,對每個功能模塊的初始化是非常關鍵的步驟,在開始實現圖像采集的功能之前,必須確保對各個功能模塊成功初始化。圖像采集系統的初始化主要指對MCU,OV7670、通訊SCCB總線、AL422B等模塊的初始化。各模塊初始化完成后,STM32F103檢測VSYNC引腳上的電平變化,通過其引腳上產生的中斷信號來控制緩沖器對圖像像素數據的讀寫。
2.1 配置SCCB總線的相關參數
對攝像頭的寄存器參數的配置要通過SCCB接口總線來完成,所以必須優先設計SCCB總線通訊的程序。SCCB總線的主要函數模塊設計如下。
(1)SCCB接口初始化的函數。
Void InitSCCBBus( ){
GPIO_Init TypeDef GPIO_InitStructure;}//將GPIO引腳進行初始化
(2)SCCB接口的開始信號產生的函數。Void startSCCBBus(){
SCCBBus_SID_H();}//將SCCB的數據線配置成高電平。
2.2 攝像頭的寄存器的參數配置
當完成SCCB總線能夠正常工作后,然后再配置攝像頭的相關參數,相關參數主要是關于增益控制、顯示模式的選擇、輸出格式的控制等參數。OV7670的寄存器參數配置函數如下。
Const char changereg[CHANGE_REG_NUM] []={{0x12,0x14}; //將顯示模式設置為VGA
{0x40,0xd0};...} //將輸出格式設置為RGB565。
2.3 緩沖器AL422B的初始化
在圖像數據傳輸過程中,OV7670輸出的圖像數據要先存到AL422B進行緩存,所以必須要對AL422B完成初始化操作。緩沖器初始化函數如下。
Void AL422B_GPIO_Init(){
RCC->APB2ENR|=1<<2;...}//將系統時鐘進行使能操作。
在系統完成初始化后,然后進行打開中斷的操作,來開始圖像像素數據的采集。當VSYNC上面檢測到中斷信號時,系統開始采集圖像像素數據,控制器直接控制緩沖器的讀寫使能信號,來進行圖像像素數據的實時采集,與此同時將采集到的圖像數據存放到SD存儲卡中。
LCD顯示圖片像素為240×320。本設計了實現了對圖像的實時采集功能,采集的圖像質量好,LCD預覽效果好。本系統的整個產品小巧便攜帶、系統能耗較低、圖像采集的效率高,特別是具有良好的可擴展性。用戶可以把采集到的像素數據經過壓縮編碼處理后,然后利用WiFi模塊傳輸到上位機,從而達到遠程采集圖像信息的目的。
[1]黃智偉,于紅利,寧志剛,等.基于STM32F147的圖像采集系統設計[J].單片機與嵌入式系統應用,2012(10):48-51.
[2]曾浩,張祺,鄭斯凱.基于STM32F407的圖像遠程采集終端[J].工業控制計算機,2014(11):81-83.
[3]蔣薇,原明亭.指針式儀表圖像數據采集與顯示系統的設計與實現[J].工業控制計算機,2013(8):96-97.
Design of image acquisition system based on STM32F103
Ma Jingquan, Wang Zhonggang, Kang Guoqi
(Wuhan Vocational College of Communications and Publishing, Wuhan 430223, China)
An image acquisition system taking STM32F103 as the control core is designed. The system uses CMOS camera to obtain image data OV7670, under the control of the micro controller the image information is stored in the SD card after the buffer is cached and real-time displays it through LCD. The image information is buffered by the cache and stored in the SD card, and real-time display through the LCD. The system hardware has reduced resource, the image captured is clear and has strong practicability, which is suitable for use in portable image acquisition system.
STM32F103; image sensor; image acquisition; LCD
馬經權(1988— ),男,湖北荊州,碩士;研究方向:嵌入式工業控制及智能便攜式裝備。