徐平 薛凌云 祝磊 陳秉強
摘要:為了進一步加深學生對嵌入式系統的理解,更好地將專業課所學的知識和基本實驗操作完整地結合起來,提高學生的動手實踐能力和團隊協作能力,本學院開設了以嵌入式系統為研究對象的工程實訓課程。本次工程實訓以STM32單片機為主控單元,采用串行攝像機控制總線(SCCB)驅動OV7670圖像傳感器輸出RGB565 QVGA的圖像數據,并實時顯示在TFT-LCD上的圖像采集與顯示系統。結果表明,通過工程實訓課程,使理論和實踐緊密結合,培養了學生靈活應用嵌入式系統知識解決工程問題的能力,取得了良好的教學效果。
關鍵詞:工程實訓;STM32;OV7670;圖像采集與顯示
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2018)21-0260-02
一、引言
嵌入式系統工程實訓是本學院儀器儀表類專業大學生本科期間必修的一門專業實訓課程,其目標是為了讓同學們更加熟練地掌握嵌入式系統的實踐操作,從而更好地將專業課知識和基本實踐操作結合。國內現在普遍將嵌入式系統定義為以實際應用為核心,計算機技術為基礎,軟件和硬件具備可移植性,符合系統對費用、尺寸、可靠性、性能高標準的計算機系統。通常來說,嵌入式系統是一個將控制程序存儲在ROM中的嵌入式處理器控制板。近些年,微型電子技術和集成電路技術發展迅速,這使得基于嵌入式系統的圖像獲取與處理方案越來越多。STM32F103,一款基于ARM Cortex-M3內核的微控制器,它的時鐘頻率最為72MHz,具備耗能低、功能多、體積小、可靠性高等優點。OV7670,美國OV公司出的一款(CMOS)圖像傳感器,其像素為30萬,通過串行攝像頭控制總線(SCCB)進行控制,輸出為并行的8位圖像數據。本次嵌入式系統工程實訓將STM32F103ZET6微控制器作為主控處理芯片,將OV7670作為圖像采集模塊,將TFT-LCD作為圖像顯示模塊,設計圖像采集顯示系統,并增加按鍵功能,使采集到的圖片可調節光照模式、飽和度、亮度以及對比度。
二、系統總體方案
本系統主要分為STM32F103ZET6微控制器模塊、OV7670圖像采集模塊、TFT-LCD圖像顯示模塊。主要工作原理為:STM32F103ZET6通過對OV7670寄存器的讀寫來控制每一幀圖像的采集,通過對TFT-LCD寄存器的讀寫控制每一幀圖像的顯示。OV7670的時鐘頻率為24MHz,使用開發板自帶的IO接口傳輸數據難度大且對CPU的占用率非常高。為解決這一問題,本系統中采用AL422B作為緩存器,采集到的數據先進行緩存,一幀圖像緩存完時,通過STM32F103ZET6將這幀圖像實時顯示在TFT-LCD上。
三、硬件設計
1.OV7670。本圖像采集與顯示系統用開發板上的IO接口來控制OV7670。將SIO_C口設置成推挽輸出,SIO_D口讀取數據時上拉輸入、寫入數據時設成推挽輸出,再由SCCB的工作時序編寫程序。OV7670的圖像數據通過D[7∶0]輸出,該功能就是在PCLK(像素時鐘)、VSYNC(幀同步信號)以及HREF/HSYNC(行同步信號)的控制下進行的。HREF為高電平時,圖像數據輸出;HREF正階躍時,每個PCLK輸出一字節數據,且數據格式為RGB565時,每兩個字節構成一個像素的顏色。
2.TFT-LCD。本圖像采集和顯示系統將TFT-LCD作為顯示模塊,其大小為2.8寸,分辨率為320×240。本圖像采集和顯示系統中一幀圖像的數據量為150KB。為加快顯示,以STM32F103ZET6的FSMC來驅動TFT-LCD,即靈活的靜態存儲控制器(flexible static memory controller),將TFT-LCD視為外部SRAM來處理。將TFT-LCD的RS信號引腳視為地址線,與STM32F103ZET6的FSMC_A10引腳相連。其目的是用于判斷傳輸的是命令還是數據。TFT-LCD以及外部1MB SRAM均連接于FSMC總線,用各自的信號加以片選,TFT-LCD和FSMC_NE4引腳相連接,SRAM和FSMC_NE3引腳相連接。特別地,TFT-LCD傳輸數據為16位時,STM32F103ZET6的地址總線HADDR[0]是沒被接入的,也就是說HADDR[25∶1]才真正處于工作狀態,則對應關系變為:HADDR[25∶1]→FSMC[24∶0]。此時TFT-LCD寫命令的地址為0x6C000000+0x07FE(0x0800)。TFT-LCD中ILI9320的寫入比讀取效率高,因此將FSMC設為異步方式A。
四、軟件設計
1.主程序。主程序由初始化、按鍵掃描、按鍵處理及圖像采集與顯示等模塊組成。初始化模塊包括延時函數、中斷、串口、按鍵、LCD、OV7670的初始化;按鍵掃描與處理程序用于進行不同模式下按鍵的檢測及調用相應的處理程序;圖像的采集與顯示模塊用于進行OV7670 CMOS攝像頭圖像數據的采集,并將采集的圖像直接顯示在LCD顯示屏上。
2.按鍵掃描與處理。我們可以通過KEY0設置光照模式(5種模式),通過KEY1設置色飽和度,通過KEY2設置亮度,通過WK_UP設置對比度。
3.圖像采集與顯示。OV7670攝像頭模塊保存采集到的數據的工作原理:①等待OV7670同步信號;②FIFO的寫指針復位;③FIFO的寫使能;④再次等待OV7670同步信號;⑤FIFO的寫禁止。通過上面5步,我們就可以完成1幀圖像數據的存儲了。在存儲完了一幀圖像之后,我們就可以開始讀取圖像數據了,讀取圖像數據的過程:①FIFO的讀指針復位;②給FIFO讀時鐘讀取像素高字節;③給FIFO讀時鐘讀取像素低字節;④給FIFO讀時鐘讀取下個像素高字節;⑤循環讀取剩余像素(QVGA、RGB565格式,1幀圖像數據共320*240=76800個像素)。一共需循環讀取320*240*2次,這樣才能讀取1幀的圖像數據,再把這些數據寫入TFT-LCD,這樣就可以看到攝像頭捕捉到的畫面了。
五、結論
本次嵌入式系統工程實訓課程學生設計了基于STM32和OV7670的圖像采集與顯示系統,并增加了按鍵模塊以調節圖像顯示相關參數的功能,工程實訓小組成員以組內分工的形式通過對系統的不斷調試和測試,按要求實現了圖像采集和顯示的功能,通過知識與實踐相結合的實踐教學方式,在使學生進一步了解嵌入式系統,提高綜合素質和創新能力的同時,也圓滿完成了教學任務。
參考文獻:
[1]嵌入式系統[Z].[2017-01-17].
www.eeworld.com.
[2]李寧.基于MDK的STM32處理器開發應用[M].北京:北京航空航天大學出版社,2008:7-13.
[3]羅超,景林,易金聰.基于STM32的便攜式海量溫濕度記錄儀設計[J].電子技術應用,2012,(12):83-86.
[4]Omni Vision Technology[Z].OV7670 Datasheet[2017-01-17].http://www.ovt.com.