OV7725攝像頭只能作為從機,通過SCCB協議配置內置的172個寄存器。因此首先要了解的就是SCCB總線
1、SCCB協議簡述
SCCB協議有兩線也有三線,兩線為SIO_C與SIO_D,三線為SIO_E、SIO_C與SIO_D。
2線的SCCB總線只能是一個主器件對一個從器件控制,但3線SCCB接口可以對多個從器件控制,因此當只有一個從機(slave device)時用兩線,有多個從機時用三線。
其中SIO_C只能由主機配置(FPGA),SIO_D是一個三態門,雙向數據線,既可以由主機控制,也可以由從機控制。
2、數據傳輸
當寫數據到從機被定義為寫傳輸(write transmission),當從機中讀數據被定義為讀傳輸 (read transmission),每一個傳輸都要有開始和結束來釋放總線(start + sotp)
完整的數據傳輸包括兩個或三個階段,每一個階段包含9位數據,其中高8位為所要傳輸的數據,最低位根據器件所處情況有不同的取值:
總結如下:
每一個階段組成:8位數據+don't care/NA
如果是主機發送數據,即進行寫操作,第九位就為don't care
如果是從機發送數據,即為讀操作,第九位就為NA.
在進行主器件寫操作時,全部階段的最低位均是Don’t care bit
在進行主器件讀操作時,第一階段的最低位是自由位,第二階段的最低位為NA,請結合第三部分好好理解
3、SCCB的讀寫操作
寫操作是三個階段構成一個傳輸的寫,每一階段都是9位,具體如下
ID地址(7位ID地址+1位讀寫控制+don't care) + 要寫的寄存器地址(8位寄存器地址+don't care) +要寫入的數據(8位數據+don't care)
要強調的是ID地址,寫為8'h42,讀為8'h42 , 8'h42即ID地址的讀寫控制位為0,8'h43即ID地址的讀寫控制位為1
總結為: start + ID地址(42)+ 寄存器地址 + 數據 + stop

4、讀傳輸由2個階段的傳輸組成,共有兩個傳輸
2個階段寫傳輸 + 2個階段讀傳輸,每一相都是9位,具體如下
ID地址(7位ID地址+1位讀寫控制+don't care)+ FPGA要向從機寫入即將要讀的寄存器地址(8位寄存器地址+don't care)
ID地址(7位ID地址+1位讀寫控制+don't care) +從機向FPGA發送被指定寄存器里面的數據的數據(8位數據+
NA)
在NA位的時候,主機要配合將數據線為驅動為高電平。
要注意的是第一個ID地址為8'h42,因為是FPGA即將要之星寫操作
第二個ID地址為8'h43,因為是從機向FPGA發送數據,即執行的是讀操作。
總結為:
start1+ ID地址(42)+ 寄存器地址 +stop1+start 1 +ID地址(43)+ 數據 + stop2
此處為什么要有start 1和start 2 呢?
因為SCCB沒有重復起始的概念,因此在SCCB的讀周期中,當主機發送完片內寄存器地址后,必須發送總線停止條件。不然在發送讀命令時,從機將不能產生Don’t care響應信號。即每一個傳輸都要有開始和結束來釋放總線 (start + sotp),這也是SCCB與I2C不同的一個地方。
重復起始的概念:
在主控器控制總線期間完成了一次數據通信(發送或接收)之后,如果想繼續占用總線再進行一次數據通信(發送或接收),而又不釋放總線,就需要利用重啟動Sr信號時序。重啟動信號Sr既作為前一次數據傳輸的結束,又作為后一次數據傳輸的開始。利用重啟動信號的優點是,在前后兩次通信之間主控器不需要釋放總線,這樣就不會丟失總線的控制權,即不讓其他主器件節點搶占總線。
5、時序
起始信號

停止信號

繼續學習,繼續分享,還有好多不懂的。
轉載請注明出處:http://www.cnblogs.com/aslmer/p/5965229.html