創(chuàng)龍教儀實驗教程詳解:6-1 基于CMOS數(shù)字攝像頭采集LCD顯示實驗
一、案例詳情:
實驗平臺
創(chuàng)龍教儀嵌入式教學實驗箱:TL6748-PlusTEB(點擊查看詳情)
實驗名稱
基于 CMOS 數(shù)字攝像頭采集 LCD 顯示
實驗目的
掌握 OV2640 攝像頭的工作原理
掌握 VPIF 總線的工作原理
實現(xiàn) VPIF 總線控制 攝像頭采集圖像,并顯示在 LCD 上
二、實驗原理:
1、OV2640攝像頭
OV2640 是世界上第一個 1/4 英寸 2 百萬像素視頻傳感器,同時是 OmniVision 最新的2.2 微米 OmniPixel2?架構的視頻傳感器,可支持 200 萬像素,分辨率可高達 1600x1200,幀率可達 30 幀/秒,最高幀率可達 60 幀/秒。

OV2640攝像頭采集圖像時,會先經(jīng)過感光元件,采樣的信號經(jīng)過運放,再進行AD轉換,AD量化之后得到數(shù)字化的視頻信號會進行控制調整,最終通過視頻輸出接口輸出。除此之外還有其他的一些信號接口,比如時鐘輸入,像素時鐘,行同步信號,幀同步信號,時序產(chǎn)生和邏輯控制單元等等。

圖像數(shù)據(jù)在HREF為高的時候輸出,當HREF變高后,每一個PCLK時鐘,輸出一個字節(jié)數(shù)據(jù)。比如我們采用UXGA時序RGB565格式輸出,每2個字節(jié)組成一個像素的顏色(低字節(jié)在前,高字節(jié)在后),這樣每行輸出總共有1600*2個PCLK周期,輸出1600*2個字節(jié)。

幀輸出時序則是當HREF輸出高電平時開始讀取一行像素點,當?shù)碗娖綍r不操作,重復操作即可讀取一幀圖像。OV2640支持:RGB565或JPEG輸出。RGB565輸出時,時序如圖所示。JPEG輸出時,PCLK大大減少,且HREF不連續(xù),數(shù)據(jù)流以0XFF,0XD8開頭,以0XFF,0XD9結束。

2、VPIF接口
Video Port Interface (VPIF), 是一種視頻接口。VPIF的通道0和通道1只能用于接收數(shù)據(jù),通道2和通道3只能用于發(fā)送數(shù)據(jù)。
(路徑:VPIF的詳細介紹可以查看光盤資料“Datasheet\CPU“目錄下的TMS320C6748 DSP Technical Reference Manual.pdf文檔的第34小節(jié)。)

VPIF 接口主要支持三種協(xié)議的傳輸:BT-656、BT-1120和Raw Capture mode。

其中,VPIF 端口接收通道支持BT-656、BT-1120和Raw Capture mode三種協(xié)議。

VPIF 端口發(fā)送通道只支持BT-656和BT-1120兩種協(xié)議。

VPIF 支持三種格式:NTSC、PAL和普通圖像格式。

3、程序流程
程序流程設計中首先要進行外設使能配置,接著進行DSP中斷初始化和LCD的初始化,然后初始化配置I2C和OV2640攝像頭,初始化VPIF總線。最后攝像頭采集接收數(shù)據(jù)并將數(shù)據(jù)顯示在LCD上。

4、程序框架詳解
(1)打開工程,查看工程的主函數(shù)。
(2)在程序中首先初始化計數(shù)器,用于性能測試,測試輸出視頻的幀率。

(3)配置外設使能;
在PSC初始化中使能VPIF總線。
(4)進行DSP中斷初始化;
先初始化 DSP 中斷控制器;
再使能 DSP 全局中斷。

(5)進行硬件中斷初始化;
首先注冊LCD中斷服務函數(shù),用于顯示;
然后映射LCD中斷事件到INT5可屏蔽中斷;
最后使能INT5可屏蔽中斷;
接著注冊I2C中斷服務函數(shù),用于配置攝像頭模塊的寄存器;
然后映射I2C中斷事件到INT6可屏蔽中斷;
最后使能INT6可屏蔽中斷。
(6)進行LCD初始化;
首先使能LCD模塊;
調用LCD引腳復用配置函數(shù);
接著初始化LCD相關配置,例如LCD時鐘配置、DMA控制器配置、模式配置和光柵控制器的配置等。

(7)進行I2C引腳復用配置。
(8)接著初始化I2C相關配置;
I2C復位;
配置總線速度為 100KHz;
設置從器件地址為0x30;
使能I2C。

(9)復位OV2640攝像頭,為軟復位。
(10)加入一個延時。
(11)初始化OV2640攝像頭;
通過I2C配置攝像頭寄存器為SVGA 800*600,數(shù)據(jù)緩存格式是RGB565。

(12)初始化VPIF;
首先進行VPIF引腳復用配置;
接著禁用中斷和捕獲。
配置VPIF寄存器,例如數(shù)據(jù)位寬、存儲模式、接受模式、捕獲方式等。
接收的數(shù)據(jù)會先存到FIFO,當數(shù)據(jù)達到256字節(jié)的時候觸發(fā)EDMA進行數(shù)據(jù)搬移。
(13)進入While(1)循環(huán)。使用查詢方式,查詢中斷的產(chǎn)生。完成圖像捕獲并送到LCD顯示。
(14)接收的數(shù)據(jù)按幀存儲到一個區(qū)域,有兩個接收緩存數(shù)組rxBuf0和rxBuf1(乒乓類型),輪流接收數(shù)據(jù)。讀取的時候也是一幀一幀的讀取。
(15)rxBufPtr是接收緩存的數(shù)據(jù)。
(16)srcBuff是接收到的數(shù)據(jù)。
(17)dstBuff是LCD顯示的數(shù)據(jù)。
(18)最后幀率計算和顯示。

三、實驗設備

硬件:TL2640I 攝像頭

四、實驗步驟
1、DSP開發(fā)流程
開發(fā)過程中,首先選擇CCS的工作區(qū),接著導入、編譯工程,完成軟件開發(fā)后進行硬件連接,再配置仿真器文件,加載GEL文件,最后將CCS連接實驗箱,加載并運行程序。

2、硬件連接
(1)將 TL2640I 攝像頭模塊連接到實驗板的 VPIF 接口;
(2)連接仿真器和電腦的USB接口;
(3)將撥碼開關撥到DEBUG模式01111,連接實驗箱電源,撥動電源開關上電。

3、軟件操作
(1)導入工程,選擇Demo文件夾下的對應工程;
(2)編譯工程;
(3)將CCS連接實驗箱并加載程序;

(4)點擊運行程序;
(5)在LCD屏幕上會顯示攝像頭采集的圖像,并顯示幀率;
(6)實驗結束后,先點擊黃色按鈕暫停程序運行,再點擊紅色按鈕退出CCS與實驗箱的連接,最后實驗箱斷電即可。
