豪威(OmniVision)的 OV7670 CMOS 圖像傳感器主要控制是使用 SCCB(Serial Camera Control Bus /串列攝像機控制匯流排)匯流排,SCCB 是類似 I2C 匯流排,最高時鐘頻率爲400kHZ,SCCB 通訊時序,其作用是設置晶片內部寄存器,以控制圖像的各種所需功能。當 OV7670 工作時,通過設備位址來進行讀/寫操作,OV7670 模組的寫地址是 0x42,讀地址是 0x43,只要和其它設備用不同的 SCCB 讀/寫位址,就不會影響 OV7670 的讀/寫操作。
SCCB匯流排連接 |
SCCB (Serial Camera Control Bus /串列攝像機控制匯流排)的操作原理:
在進行資料傳輸階段,SDA 的變化只能在 SCK為低電平的時候,如果在 SCK 高電平的時候有SDA 的變化,則可能表示的是 I2C 的 Start 或者 Stop
- Start - 當 SCK 為高時,SDA 從高跳變到低表示 I2C 匯流排的 Start
- ACK - 每次傳輸 8個bit以後,接收方都會有一個回應,如果為低表示 ACK,表示 OK,如果為高表示 NACK,但不表示就有問題,比如 Master 接收 Slave 的資料的過程中不想接收了,就可以發送 NACK
- 地址 Address - 在定址段,在 7位格式的位址中,發送的 8位元資料前七位元為位址,如 0x42, 最後一位表示此次發起的是讀還是寫,讀為高電平,寫為低電平
- Stop - 當 SCK 為高時,SDA 從低跳變到高表示匯流排的 Stop
SCCB 匯流排時序 |
寫操作是三個階段構成一個傳輸的寫,每一階段都是 9位,具體如下:
- ID 地址(7位 ID 地址 + 1位讀寫控制 + don’t care) + 要寫的寄存器地址(8位寄存器地址 + don’t care)+ 要寫入的數據(8位數據+don’t care)
- 其中,“don’t care” 可以是任意類型的信號,ACK、NOACK 等都可以
- 要強調的是ID地址,寫爲 0x42,讀爲 0x43 , 0x42 即 ID 地址的讀寫控制位爲 0,0x43 即 ID 地址的讀寫控制位爲 1
SCCB 3 Phase寫時序 |
SCCB 不支持 repeat start,因爲 SCCB 沒有重複起始的概念,因此在 SCCB 的讀週期中,當主機發送完片內寄存器地址後,必須發送總線停止條件。不然在發送讀命令時,從機將不能產生 Don’t care 響應信號。即每一個傳輸都要有開始和結束來釋放總線 (start + stop),這也是SCCB 與 I2C 不同的一個地方。
SCCB 讀時序:
讀時序分爲兩個階段
- start + ID地址(7位 ID地址 + 1位寫控制 + don’t care)+ 可讀的寄存器地址(8位寄存器地址 + don’t care)+ stop
- start + ID地址(7位 ID地址 + 1位讀控制 + don’t care)+指定寄存器裏面的數據的數據(8位數據 + NA)+ stop
- 完成一次數據讀取
SCCB 3 Phase讀時序 |
OV7670 行輸出時序 |
VGA 全幀輸出下的時序圖 |
※ DIY - ESP32:OV7670 CMOS VGA 圖像傳感器介紹(十八)
※ DIY - ESP32:OV7670 CMOS VGA 圖像傳感器原理(十九)
※ DIY - ESP32:AverLogic AL422B FIFO 晶片介紹(二十一)
※ DIY - ESP32:AverLogic AL422B FIFO 晶片原理(二十二)
※ DIY - ESP32:OV7670 + AL422B FIFO 圖像傳感器模組介紹(二十三)
※ DIY - ESP32:ESP32 + OV7670 + AL422B 攝像頭模組硬件(二十四)
※ DIY - ESP32:ESP32 + OV7670 + AL422B 攝像頭模組程式(二十五)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組電路(二十六)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組 I/O 程式(二十七)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組 INT 程式(二十八)
※ DIY - ESP32:ESP32 OV7670 數位靜態相機 DSC 程式(二十九)
2018年 11月 3日 天氣報告
氣溫:23.1度 @ 20:10
相對濕度:百分之 77%
天氣:多雲
沒有留言:
張貼留言