OV7620的控制采用SCCB(SeriaI Camera ControlBus)協議。SCCB是簡化的I2C協議,SIO-l是串行時鐘輸入線,SIO-O是串行雙向數據線,分別相當於I2C協議的SCL和SDA。SCCB的總線時序與I2C基本相同,它的響應信號ACK被稱為壹個傳輸單元的第9位,分為Don’t care和NA。Don’t care位由從機產生;NA位由主機產生,由於SCCB不支持多字節的讀寫,NA位必須為高電平。另外,SCCB沒有重復起始的概念,因此在SCCB的讀周期中,當主機發送完片內寄存器地址後,必須發送總線停止條件。不然在發送讀命令時,從機將不能產生Don’t care響應信號。
由於I2C和SCCB的壹些細微差別,所以采用GPIO模擬SCCB總線的方式。SCL所連接的引腳始終設為輸出方式,而SDA所連接的引腳在數據傳輸過程中,通過設置IODIR的值,動態改變引腳的輸入/輸出方式。SCCB的寫周期直接使用I2C總線協議的寫周期時序;而SC-CB的讀周期,則增加壹個總線停止條件。
OV7620功能寄存器的地址為0x00~0x7C(其中,不少是保留寄存器)。通過設置相應的寄存器,可以使OV7620工作於不同的模式。例如,設置OV7620為連續掃描、RGB原始數據16位輸出方式,需要進行如下設置:
I2CSendByte()為寫寄存器函數,它的第1個參數OV7620為宏定義的芯片地址0x42,第2個參數為片內寄存器地址,第3個參數為相應的寄存器設定值。