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