新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32的嵌入式雙目圖像采集系統設計

        基于STM32的嵌入式雙目圖像采集系統設計

        作者: 時間:2012-12-22 來源:網絡 收藏

        1 引言

        本文引用地址:http://www.104case.com/article/257210.htm

        隨著圖像處理技術及嵌入式系統的發展,利用嵌入式系統進行圖像處理,已使如視頻監控、視頻電話和視頻會議等應用成為可能。嵌入式系統上進行則是實現這些應用的前提[1~2]。

        雙目立體視覺通常由兩個攝像頭從兩個不同的角度,同時獲取外界物體的兩幅圖像,或由單獨一個攝像頭在不同時間、不同位置獲取外界物體的兩幅圖像,并基于視差的原理來獲取外界物體的三維幾何信息,復現外界物體的形狀和位置。

        目前已有很多方案實現在嵌入式平臺上的。本文基于嵌入式的系統選擇了意法半導體(ST)公司生產的F103ZET6芯片為主控芯片,FIFO結構的AL422B芯片實現圖像數據緩存,SD卡實現圖像存儲以及四線制電阻觸摸屏實現外部控制[3]。實現通過OV7670雙攝像頭采集圖像數據,經主芯片控制存儲、顯示[4]。

        2 嵌入式主控芯片介紹

        ARM Cortex-M 處理器是一系列定位于深度嵌入式開發應用設計的。F103ZET6是由意法半導體(ST)公司生產的新一代內核處理器,具有以下特點:

        性能和能效:具有高性能和低動態能耗,在90nm基礎上提供了12.5DMIPS/mW 的性能,處理器確保對于同時需要低能耗和出色性能的應用不存在折衷。

        豐富的連接:功能和性能的巧妙組合使基于的設備可以有效處理多個I/O 通道和協議標準,如USB OTG(On-The-Go)[5]。

        3 μC/OS-II操作系統介紹

        μC/OS-II操作系統實時性有保障,延時可預測,代碼可小到2K,完全可以滿足設計需要。C/OS-II移植過程中只選擇用戶和系統兩種模式。μC/OS-II包括任務調度、時間管理、內存管理、資源管理(信號量、郵箱、消息隊列)四大部分,沒有文件系統、網絡接口、輸入輸出界面。它的移植只與4個文件相關:匯編文件(OS_CPU_A.ASM)、處理器相關C文件(OS_CPU.H、OS_CPU_C.C)和配置文件(OS_CFG.H)[6~7]。

        4 系統硬件設計

        系統采用ARM 處理器作為核心,負責對系統設備初始化、數據總線仲裁、承載操作系統運行;為了彌補圖像傳輸過程中的時鐘偏差和圖像顯示不流暢等缺點,采用AL422B圖像緩存芯片;圖像經主芯片控制將于液晶屏顯示,并存貯于SD卡中。系統結構圖如圖1所示[8]。


        4.1 核心器件選型

        系統的核心ARM 處理器使用由意法半導體公司生產的新一代Cortex-M3內核的F103ZET6,具有高性能和低動態能耗,帶有FSMC 外設可以外掛NAND FLASH、SRAM等,支持代碼從擴展的外部存儲器中直接運行,而不需要首先調入內部SRAM,便于系統的數據傳輸[9]。

        圖像傳感器采用Ommivision公司的OV7670 CMOS攝像頭,較CCD 攝像頭具有較高的性價比,具有標準的SCCB接口,兼容I2 C接口,其高靈敏度和自動畫面控制功能滿足檢測系統的精度要求[10]。

        4.2 檢測電路設計

        系統采用集成了A/D和DSP的圖像傳感器模塊,通過SCCB總線,由STM32完成定義相應寄存器和初始化;通過寄存器可設置圖像數據輸出格式,系統選擇RGB565格式輸出,一個像素點占16位,而像素數據總線為D0-D7,因此用兩個PCLK時鐘周期分別輸出高8位和低8位;


        圖2 圖像傳感器模塊接口

        XCLK是由CPLD 提供的輸入時鐘;VSYNC、HREF分別在每幀、每行開始和結束時電平發生跳變,供CPLD 判斷[11]。圖像傳感器模塊接口如圖2所示。

        4.3 數據緩存電路設計

        數據緩存使用AverLogic公司推出的一個存儲容量為393216字節×8位的FIFO存儲芯片AL422B,其所有的尋址、刷新等操作都由集成在芯片內部的控制系統完成。數據緩存接口如圖3所示,DO0-DO7是8位寫出數據總線;DI0-DI7是8位寫入數據總線;CE引腳為片選,OE為輸出控制,WE是寫操作控制;通過STM32的FSMC與外設連接。采用AL422B芯片對連續的數據流進行緩存,防止在進機和存儲操作時丟失數據;數據集中起來進行進機和存儲,避免了頻繁的總線操作,減輕CPU的負擔。


        圖3 數據緩存接口圖

        4.4 實時顯示電路設計

        系統的實時顯示采用了ILI9325主控的2.4寸65536色TFT液晶屏,兼容系統需要的16位總線寬度的RGB格式圖像,最高可顯示320*240 分辨率;內部集成圖像RAM,因而將其接入STM32的FSMC外設控制器,采用LCD8080i接口方式;CS為片選,RD、RW 分別為讀寫控制,RS是寄存器選擇引腳,如圖4所示[13]。

        5 系統軟件設計

        STM32F103ZET6編程在Keil uVision4環境下通過C語言實現。系統的主流程如圖5所示。


        圖5 系統的軟件流程

        5.1 文件OS_CPU.H的編寫

        1)μC/OS-II不使用C語言中的short、int、long等于處理器相關的數據類型,而是以移植性更強的整數數據類型代替,這樣直觀、便于移植。所以必須對操作系統和ARM體系結構的數據類型進行統一。

        2)雖然ARM 處理器對堆棧向上及向下的兩種增長模式都予以支持,但是通常系統僅支持堆棧從上往下長,并且是滿遞減堆棧,所以文件中定義堆棧增長方式的常量OS_STK_GROWTH的值應為1.

        3)定義聲明使能中斷、結束中斷、任務切換等函數。

        5.2 文件OS_CPU.C的編寫

        1)任務堆棧初始化函數OSTaskStkInit()堆棧的概念在ARM 體系結構和系統移植中非常重要,是在ARM 處理器中利用有限的寄存器完成數據和狀態記錄的載體。在編寫堆棧初始化函數OSTaskStkInit()之前,必須根據處理器的結構特點確定堆棧的結構,所以需要對ARM 體系結構有充分的認識。根據ARM 體系結構每種運行模式14個通用寄存器,有一個或兩個狀態寄存器,很容易該寫出OSTaskStkInit()的代碼。

        TCB結構體中OSTCBStkPtr總是指向用戶堆棧最高地址,該地址空間內存放用戶堆棧長度,其上空間存放系統堆棧映像,即:用戶堆??臻g大小=系統堆棧空間大?。?。

        2)μC/OS-II分別使用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()來開中斷和開中斷,可以直接在C語言編程中應用。

        3)可以根據ARM特點和移植目標,增加應用函數。例如處理器模式轉換函數、人物初始指令集函數、鉤子函數等。

        5.3 文件OS_CPU_A.ASM 的編寫

        這個文件采用匯編語言編寫。完成了系統軟中斷的地址分配、相應的存儲區域等,編寫了任務級任務切換函數OS_TASK_SW()、中斷級任務切換函數OSIntCtxSw()、啟動最高優先級任務函數0SStartHighRdy()等函數。完成了C語言和機器硬件語言的對接。

        6 結語

        本文在基于STM32核心嵌入式μC/OS-II平臺上利用的、雙向的、可靠的、無重復的數據連接,加上Vxworks系統自身的實時性強和可靠性高等優點,該通信方式完全滿

        足某型車載武器系統的高速實時網絡通信要求,在實際的操作使用中,取得了良好的效果。

        立即加入意法半導體技術社區



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 普兰店市| 灌南县| 建湖县| 屏东县| 鸡东县| 林芝县| 温州市| 咸阳市| 昌江| 呼玛县| 九龙坡区| 融水| 女性| 长海县| 文成县| 军事| 霍城县| 合水县| 中宁县| 南溪县| 平武县| 武陟县| 启东市| 比如县| 文昌市| 莱阳市| 兴和县| 罗田县| 高淳县| 施秉县| 望江县| 平昌县| 保定市| 上高县| 惠州市| 旬邑县| 武威市| 曲沃县| 长宁区| 双辽市| 浮梁县|