基于STM32的嵌入式雙目圖像采集系統(tǒng)設(shè)計
1 引言
本文引用地址:http://www.ex-cimer.com/article/257210.htm隨著圖像處理技術(shù)及嵌入式系統(tǒng)的發(fā)展,利用嵌入式系統(tǒng)進行圖像處理,已使如視頻監(jiān)控、視頻電話和視頻會議等應(yīng)用成為可能。嵌入式系統(tǒng)上進行圖像采集則是實現(xiàn)這些應(yīng)用的前提[1~2]。
雙目立體視覺通常由兩個攝像頭從兩個不同的角度,同時獲取外界物體的兩幅圖像,或由單獨一個攝像頭在不同時間、不同位置獲取外界物體的兩幅圖像,并基于視差的原理來獲取外界物體的三維幾何信息,復(fù)現(xiàn)外界物體的形狀和位置。
目前已有很多方案實現(xiàn)在嵌入式平臺上的圖像采集。本文基于嵌入式的圖像采集系統(tǒng)選擇了意法半導(dǎo)體(ST)公司生產(chǎn)的STM32F103ZET6芯片為主控芯片,F(xiàn)IFO結(jié)構(gòu)的AL422B芯片實現(xiàn)圖像數(shù)據(jù)緩存,SD卡實現(xiàn)圖像存儲以及四線制電阻觸摸屏實現(xiàn)外部控制[3]。實現(xiàn)通過OV7670雙攝像頭采集圖像數(shù)據(jù),經(jīng)主芯片控制存儲、顯示[4]。
2 嵌入式主控芯片介紹
ARM Cortex-M 處理器是一系列定位于深度嵌入式開發(fā)應(yīng)用設(shè)計的。STM32F103ZET6是由意法半導(dǎo)體(ST)公司生產(chǎn)的新一代Cortex-M3內(nèi)核處理器,具有以下特點:
性能和能效:具有高性能和低動態(tài)能耗,在90nm基礎(chǔ)上提供了12.5DMIPS/mW 的性能,Cortex-M3處理器確保對于同時需要低能耗和出色性能的應(yīng)用不存在折衷。
豐富的連接:功能和性能的巧妙組合使基于Cortex-M3的設(shè)備可以有效處理多個I/O 通道和協(xié)議標(biāo)準(zhǔn),如USB OTG(On-The-Go)[5]。
3 μC/OS-II操作系統(tǒng)介紹
μC/OS-II操作系統(tǒng)實時性有保障,延時可預(yù)測,代碼可小到2K,完全可以滿足設(shè)計需要。C/OS-II移植過程中只選擇用戶和系統(tǒng)兩種模式。μC/OS-II包括任務(wù)調(diào)度、時間管理、內(nèi)存管理、資源管理(信號量、郵箱、消息隊列)四大部分,沒有文件系統(tǒng)、網(wǎng)絡(luò)接口、輸入輸出界面。它的移植只與4個文件相關(guān):匯編文件(OS_CPU_A.ASM)、處理器相關(guān)C文件(OS_CPU.H、OS_CPU_C.C)和配置文件(OS_CFG.H)[6~7]。
4 系統(tǒng)硬件設(shè)計
系統(tǒng)采用ARM 處理器作為核心,負責(zé)對系統(tǒng)設(shè)備初始化、數(shù)據(jù)總線仲裁、承載操作系統(tǒng)運行;為了彌補圖像傳輸過程中的時鐘偏差和圖像顯示不流暢等缺點,采用AL422B圖像緩存芯片;圖像經(jīng)主芯片控制將于液晶屏顯示,并存貯于SD卡中。系統(tǒng)結(jié)構(gòu)圖如圖1所示[8]。
4.1 核心器件選型
系統(tǒng)的核心ARM 處理器使用由意法半導(dǎo)體公司生產(chǎn)的新一代Cortex-M3內(nèi)核的STM32F103ZET6,具有高性能和低動態(tài)能耗,帶有FSMC 外設(shè)可以外掛NAND FLASH、SRAM等,支持代碼從擴展的外部存儲器中直接運行,而不需要首先調(diào)入內(nèi)部SRAM,便于系統(tǒng)的數(shù)據(jù)傳輸[9]。
圖像傳感器采用Ommivision公司的OV7670 CMOS攝像頭,較CCD 攝像頭具有較高的性價比,具有標(biāo)準(zhǔn)的SCCB接口,兼容I2 C接口,其高靈敏度和自動畫面控制功能滿足檢測系統(tǒng)的精度要求[10]。
4.2 檢測電路設(shè)計
系統(tǒng)采用集成了A/D和DSP的圖像傳感器模塊,通過SCCB總線,由STM32完成定義相應(yīng)寄存器和初始化;通過寄存器可設(shè)置圖像數(shù)據(jù)輸出格式,系統(tǒng)選擇RGB565格式輸出,一個像素點占16位,而像素數(shù)據(jù)總線為D0-D7,因此用兩個PCLK時鐘周期分別輸出高8位和低8位;
圖2 圖像傳感器模塊接口
XCLK是由CPLD 提供的輸入時鐘;VSYNC、HREF分別在每幀、每行開始和結(jié)束時電平發(fā)生跳變,供CPLD 判斷[11]。圖像傳感器模塊接口如圖2所示。
4.3 數(shù)據(jù)緩存電路設(shè)計
數(shù)據(jù)緩存使用AverLogic公司推出的一個存儲容量為393216字節(jié)×8位的FIFO存儲芯片AL422B,其所有的尋址、刷新等操作都由集成在芯片內(nèi)部的控制系統(tǒng)完成。數(shù)據(jù)緩存接口如圖3所示,DO0-DO7是8位寫出數(shù)據(jù)總線;DI0-DI7是8位寫入數(shù)據(jù)總線;CE引腳為片選,OE為輸出控制,WE是寫操作控制;通過STM32的FSMC與外設(shè)連接。采用AL422B芯片對連續(xù)的數(shù)據(jù)流進行緩存,防止在進機和存儲操作時丟失數(shù)據(jù);數(shù)據(jù)集中起來進行進機和存儲,避免了頻繁的總線操作,減輕CPU的負擔(dān)。
圖3 數(shù)據(jù)緩存接口圖
4.4 實時顯示電路設(shè)計
系統(tǒng)的實時顯示采用了ILI9325主控的2.4寸65536色TFT液晶屏,兼容系統(tǒng)需要的16位總線寬度的RGB格式圖像,最高可顯示320*240 分辨率;內(nèi)部集成圖像RAM,因而將其接入STM32的FSMC外設(shè)控制器,采用LCD8080i接口方式;CS為片選,RD、RW 分別為讀寫控制,RS是寄存器選擇引腳,如圖4所示[13]。
5 系統(tǒng)軟件設(shè)計
STM32F103ZET6編程在Keil uVision4環(huán)境下通過C語言實現(xiàn)。系統(tǒng)的主流程如圖5所示。
圖5 系統(tǒng)的軟件流程
5.1 文件OS_CPU.H的編寫
1)μC/OS-II不使用C語言中的short、int、long等于處理器相關(guān)的數(shù)據(jù)類型,而是以移植性更強的整數(shù)數(shù)據(jù)類型代替,這樣直觀、便于移植。所以必須對操作系統(tǒng)和ARM體系結(jié)構(gòu)的數(shù)據(jù)類型進行統(tǒng)一。
2)雖然ARM 處理器對堆棧向上及向下的兩種增長模式都予以支持,但是通常系統(tǒng)僅支持堆棧從上往下長,并且是滿遞減堆棧,所以文件中定義堆棧增長方式的常量OS_STK_GROWTH的值應(yīng)為1.
3)定義聲明使能中斷、結(jié)束中斷、任務(wù)切換等函數(shù)。
5.2 文件OS_CPU.C的編寫
1)任務(wù)堆棧初始化函數(shù)OSTaskStkInit()堆棧的概念在ARM 體系結(jié)構(gòu)和系統(tǒng)移植中非常重要,是在ARM 處理器中利用有限的寄存器完成數(shù)據(jù)和狀態(tài)記錄的載體。在編寫堆棧初始化函數(shù)OSTaskStkInit()之前,必須根據(jù)處理器的結(jié)構(gòu)特點確定堆棧的結(jié)構(gòu),所以需要對ARM 體系結(jié)構(gòu)有充分的認(rèn)識。根據(jù)ARM 體系結(jié)構(gòu)每種運行模式14個通用寄存器,有一個或兩個狀態(tài)寄存器,很容易該寫出OSTaskStkInit()的代碼。
TCB結(jié)構(gòu)體中OSTCBStkPtr總是指向用戶堆棧最高地址,該地址空間內(nèi)存放用戶堆棧長度,其上空間存放系統(tǒng)堆棧映像,即:用戶堆??臻g大小=系統(tǒng)堆??臻g大小+1。
2)μC/OS-II分別使用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()來開中斷和開中斷,可以直接在C語言編程中應(yīng)用。
3)可以根據(jù)ARM特點和移植目標(biāo),增加應(yīng)用函數(shù)。例如處理器模式轉(zhuǎn)換函數(shù)、人物初始指令集函數(shù)、鉤子函數(shù)等。
5.3 文件OS_CPU_A.ASM 的編寫
這個文件采用匯編語言編寫。完成了系統(tǒng)軟中斷的地址分配、相應(yīng)的存儲區(qū)域等,編寫了任務(wù)級任務(wù)切換函數(shù)OS_TASK_SW()、中斷級任務(wù)切換函數(shù)OSIntCtxSw()、啟動最高優(yōu)先級任務(wù)函數(shù)0SStartHighRdy()等函數(shù)。完成了C語言和機器硬件語言的對接。
6 結(jié)語
本文在基于STM32核心嵌入式μC/OS-II平臺上利用的、雙向的、可靠的、無重復(fù)的數(shù)據(jù)連接,加上Vxworks系統(tǒng)自身的實時性強和可靠性高等優(yōu)點,該通信方式完全滿
足某型車載武器系統(tǒng)的高速實時網(wǎng)絡(luò)通信要求,在實際的操作使用中,取得了良好的效果。
立即加入意法半導(dǎo)體技術(shù)社區(qū)
評論