SCCB 接口:攝像頭控制的串行通信標(biāo)準(zhǔn)(上)
在圖像采集系統(tǒng)中,主機(jī)與圖像傳感器之間的控制信號(hào)交互需要一種簡(jiǎn)潔高效的通信協(xié)議。SCCB(Serial Camera Control Bus,串行攝像頭控制總線)作為專為攝像頭控制設(shè)計(jì)的串行通信接口,憑借其簡(jiǎn)單的硬件實(shí)現(xiàn)和可靠的通信機(jī)制,成為 CMOS 圖像傳感器領(lǐng)域的主流控制接口之一。本文將系統(tǒng)解析 SCCB 接口的通信原理、時(shí)序規(guī)范、實(shí)現(xiàn)方法及應(yīng)用場(chǎng)景,揭示其在圖像采集系統(tǒng)中的核心價(jià)值。
一、SCCB 接口的定義與定位
SCCB 接口是 OmniVision 公司為其 CMOS 圖像傳感器系列設(shè)備開發(fā)的專用控制總線,最初用于實(shí)現(xiàn)主機(jī)(如微處理器、FPGA)對(duì)圖像傳感器的配置與狀態(tài)讀取。作為一種簡(jiǎn)化的串行通信協(xié)議,SCCB 在保持與 I2C 協(xié)議兼容性的同時(shí),針對(duì)攝像頭控制場(chǎng)景進(jìn)行了優(yōu)化,具有以下核心特點(diǎn):
輕量級(jí)設(shè)計(jì):僅需兩根信號(hào)線即可實(shí)現(xiàn)雙向通信,硬件成本低
主從架構(gòu):支持單主機(jī)多從機(jī)的星形拓?fù)?,最多可連接 127 個(gè)從設(shè)備
低速可靠:通信速率通常在 100kbps-400kbps 之間,適合控制信號(hào)傳輸
地址可配置:每個(gè)從設(shè)備具有唯一的 7 位地址,支持靈活的設(shè)備擴(kuò)展
與通用通信接口(如 I2C、SPI)相比,SCCB 的定位更加專注:
不追求高速數(shù)據(jù)傳輸,而注重控制命令的可靠交互
針對(duì)攝像頭寄存器操作優(yōu)化了數(shù)據(jù)幀結(jié)構(gòu)
簡(jiǎn)化了時(shí)序要求,降低了嵌入式系統(tǒng)的實(shí)現(xiàn)難度
這種專業(yè)化設(shè)計(jì)使 SCCB 在手機(jī)攝像頭、安防監(jiān)控、機(jī)器視覺等領(lǐng)域得到廣泛應(yīng)用,尤其在 OmniVision、GalaxyCore 等主流圖像傳感器廠商的產(chǎn)品中成為標(biāo)準(zhǔn)配置。
二、SCCB 接口的通信原理
1. 物理層特性
SCCB 接口的物理層設(shè)計(jì)簡(jiǎn)潔高效,主要特性包括:
信號(hào)線組成:由兩根信號(hào)線構(gòu)成 ——SIO_C(Serial Interface Clock,串行接口時(shí)鐘)和 SIO_D(Serial Interface Data,串行接口數(shù)據(jù)),均為開漏輸出,需要外部上拉電阻(通常為 4.7kΩ)
電氣特性:支持 3.3V 電壓域,兼容 5V 輸入(通過電平轉(zhuǎn)換)
傳輸距離:適合板級(jí)短距離通信,典型傳輸距離小于 1 米
抗干擾能力:差分信號(hào)設(shè)計(jì)(通過上拉電阻實(shí)現(xiàn)),具備基本的噪聲抑制能力
這種總線結(jié)構(gòu)允許單個(gè)主機(jī)通過兩根信號(hào)線控制多個(gè)從設(shè)備,極大簡(jiǎn)化了硬件設(shè)計(jì)。
2. 數(shù)據(jù)幀結(jié)構(gòu)
SCCB 采用幀格式傳輸數(shù)據(jù),每個(gè)完整的通信周期包含地址幀和數(shù)據(jù)幀兩部分:
地址幀(Address Frame)
由 8 位組成,包含 7 位從設(shè)備地址和 1 位讀寫方向位(R/W#)
方向位為 0 表示寫操作(主機(jī)→從設(shè)備),為 1 表示讀操作(從設(shè)備→主機(jī))
示例:0x42(二進(jìn)制 1000010)表示地址為 0x21 的設(shè)備,執(zhí)行寫操作
數(shù)據(jù)幀(Data Frame)
由 8 位數(shù)據(jù)組成,根據(jù)操作類型不同有不同含義:
寫操作:表示要寫入的寄存器地址或寄存器數(shù)據(jù)
讀操作:表示從寄存器讀出的數(shù)據(jù)
應(yīng)答信號(hào)(ACK)
每傳輸完 8 位數(shù)據(jù)后,接收方需要返回 1 位應(yīng)答信號(hào)
應(yīng)答信號(hào)為低電平(0)表示接收成功,高電平(1)表示接收失敗或未響應(yīng)
一個(gè)完整的寫寄存器操作包含三個(gè)幀:
地址幀(從設(shè)備地址 + 寫方向)
數(shù)據(jù)幀(目標(biāo)寄存器地址)
數(shù)據(jù)幀(要寫入的數(shù)據(jù))
讀寄存器操作則包含四個(gè)幀:
地址幀(從設(shè)備地址 + 寫方向)
數(shù)據(jù)幀(目標(biāo)寄存器地址)
地址幀(從設(shè)備地址 + 讀方向)
數(shù)據(jù)幀(讀出的數(shù)據(jù))
這種幀結(jié)構(gòu)設(shè)計(jì)專門針對(duì)寄存器操作優(yōu)化,使讀寫過程直觀高效。
3. 通信時(shí)序
SCCB 的時(shí)序規(guī)范定義了信號(hào)間的時(shí)間關(guān)系,確保數(shù)據(jù)可靠傳輸:
關(guān)鍵時(shí)序參數(shù)
t_HIGH:SIO_C 高電平持續(xù)時(shí)間,最小為 4μs
t_LOW:SIO_C 低電平持續(xù)時(shí)間,最小為 5μs
t_SU:數(shù)據(jù)建立時(shí)間,SIO_D 信號(hào)在 SIO_C 上升沿前的穩(wěn)定時(shí)間,最小為 100ns
t_HD:數(shù)據(jù)保持時(shí)間,SIO_D 信號(hào)在 SIO_C 上升沿后的穩(wěn)定時(shí)間,最小為 100ns
t_RISE:信號(hào)上升時(shí)間,從 0.3V 到 3.0V 的時(shí)間,最大為 1μs
t_FALL:信號(hào)下降時(shí)間,從 3.0V 到 0.3V 的時(shí)間,最大為 1μs
寫操作時(shí)序
主機(jī)拉低 SIO_C,開始傳輸周期
在 SIO_C 低電平期間,主機(jī)設(shè)置 SIO_D 為地址幀的第一位
主機(jī)釋放 SIO_C(高電平),從設(shè)備采樣 SIO_D 上的數(shù)據(jù)
重復(fù)步驟 2-3,傳輸完 8 位地址幀
主機(jī)釋放 SIO_D,等待從設(shè)備返回 ACK(低電平)
按相同方式傳輸寄存器地址和數(shù)據(jù)
傳輸完成后,主機(jī)拉低 SIO_D,釋放 SIO_C,產(chǎn)生停止條件
讀操作時(shí)序
與寫操作類似,但在地址幀后增加一個(gè)讀方向的地址幀,且數(shù)據(jù)傳輸方向相反:
從設(shè)備在 SIO_C 高電平時(shí)輸出數(shù)據(jù)
主機(jī)在接收完 8 位數(shù)據(jù)后,不發(fā)送 ACK 信號(hào)(通過保持 SIO_D 高電平表示)
最后由主機(jī)產(chǎn)生停止條件結(jié)束通信
這些時(shí)序要求比 I2C 更為寬松,降低了軟件實(shí)現(xiàn)的難度。
4. 通信過程
SCCB 的通信過程遵循主從應(yīng)答機(jī)制,以寫寄存器操作為例:
起始條件:主機(jī)先拉低 SIO_D,再拉低 SIO_C,標(biāo)志通信開始
發(fā)送設(shè)備地址:主機(jī)在 SIO_C 時(shí)鐘控制下,逐位發(fā)送 8 位地址幀(7 位地址 + 1 位寫方向)
從設(shè)備應(yīng)答:從設(shè)備接收到匹配地址后,在第 9 個(gè)時(shí)鐘周期拉低 SIO_D 作為應(yīng)答
發(fā)送寄存器地址:主機(jī)繼續(xù)發(fā)送 8 位寄存器地址,從設(shè)備應(yīng)答
發(fā)送數(shù)據(jù):主機(jī)發(fā)送 8 位數(shù)據(jù)到指定寄存器,從設(shè)備應(yīng)答
停止條件:主機(jī)先拉高 SIO_C,再拉高 SIO_D,標(biāo)志通信結(jié)束
讀寄存器操作多出一個(gè)地址切換步驟:在發(fā)送寄存器地址后,主機(jī)重新發(fā)送帶讀方向的設(shè)備地址,然后接收從設(shè)備返回的數(shù)據(jù)。