基於STM32和OV7670的影象採集與顯示系統設計論文
摘 要:為了進一步加深學生對嵌入式系統的理解, 更好地將專業課所學的知識和基本實驗操作完整地結合起來, 提高學生的動手實踐能力和團隊協作能力, 本學院開設了以嵌入式系統為研究物件的工程實訓課程。本次工程實訓以STM32微控制器為主控單元, 採用序列攝像機控制匯流排 (SCCB) 驅動OV7670影象感測器輸出RGB565 QVGA的影象資料, 並實時顯示在TFT-LCD上的影象採集與顯示系統。結果表明, 透過工程實訓課程, 使理論和實踐緊密結合, 培養了學生靈活應用嵌入式系統知識解決工程問題的能力, 取得了良好的教學效果。
關鍵詞: 工程實訓; STM 32; OV7670; 影象採集與顯示;
Abstract: In order to further improve students' understanding of embedded systems, improve students' operational ability and teamwork ability, the college has set up an engineering training course for the study of embedded systems.This engineering training course group designed STM 32 MCU as the main control unit, using serial camera control bus (SCCB) control OV7670 image sensor output RGB565 QVGA image data, while real-time display on the TFT-LCD image Acquisition and display system.The results show that, through the process of engineering training, the theory and practice are closely integrated, and the students' ability to solve engineering problems by using embedded system knowledge is cultivated.
Keyword: engineering training; STM 32; OV7670; image acquisition and display;
一、引言
嵌入式系統工程實訓是本學院儀器儀表類專業大學生本科期間必修的一門專業實訓課程, 其目標是為了讓同學們更加熟練地掌握嵌入式系統的實踐操作, 從而更好地將專業課知識和基本實踐操作結合。國內現在普遍將嵌入式系統定義為以實際應用為核心, 計算機技術為基礎, 軟體和硬體具備可移植性, 符合系統對費用、尺寸、可靠性、效能高標準的計算機系統。通常來說, 嵌入式系統是一個將控制程式儲存在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攝像頭模組儲存採集到的資料的工作原理: (1) 等待OV7670同步訊號; (2) FI-FO的寫指標復位; (3) FIFO的寫使能; (4) 再次等待OV7670同步訊號; (5) FIFO的寫禁止。透過上面5步, 我們就可以完成1幀影象資料的儲存了。在儲存完了一幀影象之後, 我們就可以開始讀取影象資料了, 讀取影象資料的過程: (1) FIFO的讀指標復位; (2) 給FIFO讀時鐘讀取畫素高位元組; (3) 給FIFO讀時鐘讀取畫素低位元組; (4) 給FIFO讀時鐘讀取下個畫素高位元組; (5) 迴圈讀取剩餘畫素 (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.