一種應(yīng)用于ARM7的CMOS圖像采集系統(tǒng)
配置的具體方法如下:采用三相寫數(shù)據(jù)的方式,即在寫寄存器過程中要先發(fā)送OV7640的ID地址,然后發(fā)送數(shù)據(jù)的目的寄存器地址,接著為要寫的數(shù)據(jù)。如果給連續(xù)的寄存器寫數(shù)據(jù),寫完一個(gè)寄存器后,OV7640會(huì)自動(dòng)把寄存器地址加1,程序可繼續(xù)向下寫,而不需要再次輸入地址,從而三相寫數(shù)據(jù)變?yōu)榱藘上鄬憯?shù)據(jù),由于本系統(tǒng)中只需要對(duì)有限個(gè)不連續(xù)寄存器的數(shù)據(jù)進(jìn)行更改,如果采用對(duì)全部寄存器都加以配置這一方法的話,會(huì)浪費(fèi)很多時(shí)間和資源,所以我們只對(duì)需要更改數(shù)據(jù)的寄存器進(jìn)行寫數(shù)據(jù)。對(duì)于每一個(gè)變化的寄存器,都采用三相寫數(shù)據(jù)的方法。三相寫數(shù)據(jù)的傳輸周期如圖3所示。
系統(tǒng)配置完畢后,將進(jìn)行圖像數(shù)據(jù)的采集。在采集圖像的過程中,最主要的是判別一幀圖像數(shù)據(jù)的開始和結(jié)束時(shí)刻。在仔細(xì)研究了OV7640輸出同步信號(hào)(VSYNC是垂直同步信號(hào)、HREF是水平同步信號(hào)、PCLK是輸出數(shù)據(jù)同步信號(hào))的基礎(chǔ)上,用C語言實(shí)現(xiàn)了采集過程起始點(diǎn)的精確控制。圖4表示了圖像采集期間三個(gè)同步信號(hào)的時(shí)序關(guān)系示意圖。
VSYNC的上升沿表示一幀新的圖像的到來,下降沿表示一幀圖像數(shù)據(jù)采集的開始(CMOS圖像傳感器是按列采集圖像的)。HREF是水平同步信號(hào),其上升沿表示一列圖像數(shù)據(jù)的開始。PCLK是輸出數(shù)據(jù)同步信號(hào)。當(dāng)HREF為高電平期間,才能開始有效的數(shù)據(jù)采集,PCLK下降沿的到來表明數(shù)據(jù)的產(chǎn)生,PCLK每出現(xiàn)一個(gè)下降沿傳輸一位數(shù)據(jù)。HREF為高電平期間共傳輸640位數(shù)據(jù)。在一幀圖像中,即VSYNC為低電平期間,HREF出現(xiàn)480次高電平。當(dāng)下一個(gè)VSYNC信號(hào)的上升沿到來時(shí),就表明分辨率640*480的圖像采集過程結(jié)束。
4. 軟件編程設(shè)計(jì)
本文的軟件設(shè)計(jì)是運(yùn)行于uCLinux環(huán)境下的標(biāo)準(zhǔn)C程序。軟件設(shè)計(jì)的主要步驟是,在系統(tǒng)加電時(shí),對(duì)系統(tǒng)進(jìn)行初始化,包括S3C4510B的初始化和SCCB的配置,配置完后,當(dāng)接受到開始采集信號(hào)后,根據(jù)同步信號(hào)的狀態(tài)判斷是否開始采集數(shù)據(jù),采集完一幀圖像后將數(shù)據(jù)存入FLASH中。由于篇幅有限,下面給出了采集部分的程序代碼:
評(píng)論