北京信息科技大學 自動化學院,北京100192
2015年,李克強總理的政府工作報告中將“互聯(lián)網(wǎng)+”正式被納入頂層設計,成為國家經(jīng)濟社會發(fā)展的重要戰(zhàn)略。“互聯(lián)網(wǎng)+”計劃將重點促進以云計算、物聯(lián)網(wǎng)、大數(shù)據(jù)等為代表的新一代信息技術與現(xiàn)代制造業(yè)、生產(chǎn)性服務業(yè)等的融合創(chuàng)新,嵌入式技術作為物聯(lián)網(wǎng)里的重要環(huán)節(jié)將會得到更為廣泛的應用。
μC/OS-III(Micro Control Operation System Three)是一種基于ROM運行的、可刪減、可擴展、可升級、可固化、基于優(yōu)先級的實時內(nèi)核,能夠滿足當今的實時內(nèi)核所需求的大部分功能。由于μC/OS-III支持靈活移植,廣泛適用在微處理器與控制器,性能優(yōu)越性遠超大多數(shù)商業(yè)操作系統(tǒng)[1]。
在STM32芯片上移植μC/OS-III能夠大幅度提高芯片的應用水平。為了提高控制芯片的工作效率,本論文將研究如何將μC/OS-III移植到STM32F107中。STM32F107可以直接連接互聯(lián)網(wǎng),運行速度極快并且兼顧STM32的必備功能[2]。實現(xiàn)μC/OS-III在STM32F107的移植和應用,提高芯片的處理功能,對于嵌入式系統(tǒng)的開發(fā)具有重要意義。
本次研究的嵌入式系統(tǒng)是以STM32F107為主控芯片,系統(tǒng)搭配有LCD觸摸屏和攝像頭。采用外部的穩(wěn)定5V電源作為電源輸入,DC-DC電源模塊將5V降到3.3V為STM32供電;3.5吋電阻式顯示觸摸屏可以顯示信息;30萬像素攝像頭可進行外部實時圖像信息采集;SIM900A實現(xiàn)2G網(wǎng)絡通訊功能;USB接頭、Ethernet接口和串口可以實現(xiàn)與外界的連接功能[3]圖1為系統(tǒng)硬件關系圖。


STM32F107具有高達14個通信接口,并且含有CRC計算單元。芯片具有10/100 Internet MAC,DMA和SRAM(4K字節(jié)):硬件支持IEEE1588,所有封裝都支持MII和RMII接口。所以該芯片十分適合于嵌入式方面的設計應用[4]。攝像頭、顯示屏分別與STM32連接引腳如圖2所示。
硬件系統(tǒng)電源分配如圖3所示。首先通過外接5V作為系統(tǒng)的電源,然后通過AMS1117-3.3V產(chǎn)生穩(wěn)定3.3V電壓。AMS1117是系列的電源模塊,不同的版本能夠通過外圍電阻調(diào)節(jié)實現(xiàn)1.25V~13.8V電壓輸出。通常都是采用的1.8V、2.5V、2.85V、3.3V和5V固定電壓的型號。本電路中在3.3V電壓的范圍下進行設計。輸出電流最大可達到800mA,電壓與電流都符合系統(tǒng)要 求。AMS1117-3.3V電壓調(diào)節(jié)電路的連接如圖4所示。
在我們試驗中與電路板,或者芯片的直接接觸機率較大,人體的極高靜電電壓沖擊下很容易就會造成系統(tǒng)內(nèi)芯片工作異常,所以在電路中設計使用了兩個瞬態(tài)抑制二極管(TVS), 其 TVS具有瞬間吸收高能量的作用,并將兩級的電壓控制于預定值。本次設計中使用SMBJ3.3A、SMBJ5.0A,分別用于保護3.3V電路與5V電路[5]。電路原理圖如圖5所示。



此3.5in.電阻式顯示觸摸屏控制部分芯片XPT2046,這款芯片主要用在移動終端。該芯片具有采樣與保持、模數(shù)轉換、串口數(shù)據(jù)穩(wěn)定輸出等功能。該芯片通過ADC采樣能夠感知壓力。XPT2046支持從1.5V到5.25V的低電壓I/O接口。片內(nèi)集成溫度傳感器。芯片功耗可小于0.75mW。當采用觸摸屏模式時,最好設置成差分模式,這樣能夠極大程度上抵消掉驅動器開關操作時的寄生電阻和外部的電磁干擾造成的檢測誤差,進而大幅度地增強了轉換精準度[6]。顯示屏電路如圖6所示。

OV7670是1/6in.CMOS 圖像傳感器,可以達到30萬像素圖像采集效果。該模塊由SCCB 總線控制,能夠傳輸整幀、子采樣、截取顯示窗口等方式的全部分辨率8位圖影。VGA圖像最高達到30frame/s,能夠自如地把控圖像的質(zhì)量、數(shù)據(jù)采集的數(shù)據(jù)格式和傳輸數(shù)據(jù)的格式。伽瑪曲線、白平衡、度、色度等都能夠用SCCB接口編程。
OV7670攝像頭模塊里面包含了一個AL422B芯片。AL422b 具有先進先出功能的存儲空間。攝像頭的所有動態(tài)內(nèi)存的操作都是由內(nèi)部動態(tài)內(nèi)存控制器完成的[7]。PC影像架構要包含有640×480或者720×480字節(jié)的存儲空間,AL422B能夠提供超出一倍的存儲空間,對于提高視頻采集效率具有重要意義。OV7670的原理圖如圖7所示。
修改bsp.c和bsp.h文件。在bsp.c文件里只需修改局部的DWT代碼,DWT是CM3中的三種跟蹤源之一,要啟動跟蹤源就需要DEMCR寄存器中的TRCENA位置1,該寄存器的地址為0XE000EDFC。DWT組件中有許多寄存器,如果要用時鐘計時功能就需要將CTRL寄存器中的bit0位置1。至于對bsp.h的修改僅需進行一些頭文件的添加:

(1)修改os_cpu_c.c文件。在os_cpu_c.c的頭文件部分添加includes.h。
(2)修改os_cfg_app.h文件。它主要用于配置任務優(yōu)先級、堆棧、μC/OS-III的系統(tǒng)時鐘節(jié)拍等[8]。可根據(jù)需要進行修改相關內(nèi)容。
(3)修改SYSTEM文件夾內(nèi)的sys.h文件。將SYSTEM_SUPPORT_UCOS將其定義為1,此時就是支持μC/OS-III系統(tǒng)。語句如下所示:
#define SYSTEM_SUPPORT_UCOS 1。系統(tǒng)移植后編譯運行驗證,如圖8所示。

LCD采用的是 NT35310液晶控制器,該控制器自己配有顯示內(nèi)存,可以緩存一定的顯示數(shù)據(jù),顯存的大小為320×480×18/8。采用的是16位的RGB565格式儲存色彩數(shù)據(jù)。通過NT35310指令來實現(xiàn)LCD屏的功能,NT3510的18位數(shù)據(jù)線和LCD GRAM對應關系來自由設置掃描方向。通過指令0x2A用于設定列的地址,這一個指令就能夠設置橫坐標。指令0x2B是用來設置縱軸坐標也就是y軸的指令,該指令的默認掃描方式是是在從左到右,從上到下的掃描方式。指令0x2C是用于寫 GRAM,通過這個指令在可以持續(xù)發(fā)送信息往 LCD里面GRAM輸入顏色數(shù)據(jù)。指令0x2E是用于讀 GRAM,也就是用于讀取NT35310的顯存。

在對TFTLCD顯示的軟件設置當中,首先進行復位和初始化的設置,指令0x2A與0x2B用于設定掃描方式,從而設置位置坐標。當NT35310接到指令0x2C后,有效數(shù)據(jù)位寬變?yōu)?6位,此時能夠持續(xù)輸入LCD的GRAM 數(shù)據(jù),然后寫入顏色數(shù)據(jù)并在LCD顯示相關信息。如果沒有寫GRAM指令,那么通過讀指令0x2E讀出數(shù)據(jù),然后通過控制器處理。之后可以循環(huán)此流程或者退出工作。信息在TFTLCD顯示的程序流程如圖9所示。
此次程序設計采用QVGA 模式,以RGB565格式輸出顏色數(shù)據(jù)。由于有了FIFO,所以,現(xiàn)在只需要關心兩方面的程序設計:
首先,怎樣的程序設計才能將圖像信息存儲到FIFO里面,當打開設備后,第一個OV7670同步信號到達控制器后,F(xiàn)IFO寫數(shù)據(jù)指針復位,并且使能FIFO寫功能。當?shù)诙€OV7670數(shù)據(jù)到來時中斷寫功能,實現(xiàn)一幀數(shù)據(jù)的采集。存儲一幀圖像信息的流程圖見10所示。
其次,怎樣的代碼設計才能從FIFO里面讀取影像數(shù)據(jù),首先要FIFO讀指針復位并且設置讀時鐘頻率,先讀取高字節(jié)數(shù)據(jù)再設置讀取低字節(jié)數(shù)據(jù)頻率并讀取低字節(jié)數(shù)據(jù),一幀圖像就讀完了。圖11為讀取影像數(shù)據(jù)的流程圖。需要注意的是,為了避免數(shù)據(jù)不被覆蓋,在FIFO充滿存儲空間之前讀取FIFO數(shù)據(jù)。



通過OV7670的工作特點結合在STM32F107硬件和一系列軟件系統(tǒng)設計,設計出高效的視頻處理系統(tǒng)。如圖12為視頻采集和顯示的結果。將軟件μC/OS-III系統(tǒng)屏蔽,和非屏蔽系統(tǒng)相比,μC/OS-III系統(tǒng)在效率、穩(wěn)定性、用戶使用靈活性方面都有明顯的提高。
基于μC/OS-III系統(tǒng)下的嵌入式物視頻處理系統(tǒng)。通過STM32F107為控制數(shù)據(jù)采集與傳輸?shù)目刂坪诵模摽刂葡到y(tǒng)根據(jù)OV7670的工作特點結合在STM32F107硬件系統(tǒng)上的,給出了應用程序設計的流程圖和關鍵性的設計實現(xiàn)數(shù)據(jù)采集。通過設計的電路接口傳輸?shù)娇刂破鳎ㄟ^控制器的控制實現(xiàn)對視頻數(shù)據(jù)在LCD顯示屏的顯示功能。通過實驗的測試,該系統(tǒng)實現(xiàn)了所設計的視頻數(shù)據(jù)處理功能。
此系統(tǒng)將圖像顯示技術、嵌入式編程技術、嵌入式系統(tǒng)移植技術等結合在一起。實現(xiàn)理想的視頻顯示、圖像采集等功能,所以要求本嵌入式系統(tǒng)要有十分高的穩(wěn)定性、實時性等特點,對于開發(fā)μC/OS-III系統(tǒng)下的嵌入式設計具有重要的借鑒意義。
