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