2018年11月3日 星期六

DIY - ESP32:OV7670 CMOS VGA 圖像傳感器控制(二十)

DIY - ESP32:OV7670 CMOS VGA 圖像傳感器控制(二十):

豪威(OmniVision)的 OV7670 CMOS 圖像傳感器主要控制是使用 SCCB(Serial Camera Control Bus /串列攝像機控制匯流排)匯流排,SCCB 是類似 I2C 匯流排,最高時鐘頻率爲400kHZ,SCCB 通訊時序,其作用是設置晶片內部寄存器,以控制圖像的各種所需功能。當 OV7670 工作時,通過設備位址來進行讀/寫操作,OV7670 模組的寫地址是 0x42,讀地址是 0x43,只要和其它設備用不同的 SCCB 讀/寫位址,就不會影響 OV7670 的讀/寫操作。

SCCB匯流排連接
OV7670 模組 SCCB 匯流排和其它設備共用時,推薦使用不斷電—節電模式。當 OV7670 模組進入不斷電—節電模式時,SCCB 匯流排是處於空閒狀態,不會影響其它設備 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 匯流排時序
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
總結爲: start + ID 地址(0x42)+ 寄存器地址 + 數據 + stop

SCCB 3 Phase寫時序
而對於 I2C,在發送了寄存器地址後,可以不發送停止條件,直接啓動下一次的傳輸。
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
  • 完成一次數據讀取
總結爲: start1+ ID 地址(0x42)+ 寄存器地址 + stop1 + start 1 + ID 地址(0x43)+ 數據 + stop2

SCCB 3 Phase讀時序
OV7670 行輸出時序: 行輸出時序可用來控制一行像素的輸出情況,HREF 即一行輸出的開始和結束信號,同時在像素時鐘的同步下,輸出 8 位的像素信號。 

OV7670 行輸出時序
VGA 全幀輸出下的時序情況:(VGA 為例) 下圖顯示的是一副圖像輸出的情況下,各控制信號和數據信號的輸出。圖中,VGA=640X480 大小情況下,幀同步信號,行同步信號(HREF 或者 HSYNC,註:HSYNC 在其它場合下使用,CMOS 可以設置,更多時候用 HREF 即可)。

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%
天氣:多雲

沒有留言:

張貼留言