SCCB 接口:攝像頭控制的串行通信標(biāo)準(zhǔn)(下)
一、SCCB 與 I2C 的異同
SCCB 接口源于 I2C 協(xié)議,兩者在物理層和協(xié)議層有諸多相似之處,但也存在關(guān)鍵差異:
1. 相同點
均采用兩根信號線(時鐘線和數(shù)據(jù)線)實現(xiàn)通信
都支持多從機架構(gòu),通過地址區(qū)分不同設(shè)備
采用開漏輸出和上拉電阻的電氣設(shè)計
數(shù)據(jù)傳輸以 8 位為單位,伴隨應(yīng)答機制
這些共性使得熟悉 I2C 的開發(fā)者能夠快速掌握 SCCB 的使用方法,甚至可以通過軟件配置使 I2C 控制器兼容 SCCB 通信。
2. 兼容性
雖然存在差異,SCCB 與 I2C 仍具有一定兼容性:
多數(shù) SCCB 設(shè)備可接受 I2C 控制器發(fā)出的標(biāo)準(zhǔn)命令
通過調(diào)整 I2C 的時序參數(shù)(降低速率、放寬建立 / 保持時間),可實現(xiàn)與 SCCB 設(shè)備的通信
反之,SCCB 控制器通常無法兼容高速 I2C 設(shè)備
在實際應(yīng)用中,很多微處理器通過軟件模擬 SCCB 時序,而非使用專用硬件控制器,這種靈活性進一步增強了兼容性。
二、SCCB 接口的配置與實現(xiàn)
1. 硬件實現(xiàn)方式
SCCB 接口的實現(xiàn)有兩種常見方式:
軟件模擬
通過通用 IO 口(GPIO)模擬 SCCB 時序
優(yōu)點:無需專用硬件支持,適用于任何微處理器
缺點:占用 CPU 時間,速率較低
實現(xiàn)要點:精確控制 GPIO 的高低電平切換時間,滿足 t_HIGH 和 t_LOW 要求
軟件模擬的關(guān)鍵代碼片段(以寫操作為例):
// 延時函數(shù),確保至少5us低電平
void sccb_delay() {
for(int i = 0; i < 100; i++) __NOP();
}
// 發(fā)送起始條件
void sccb_start() {
SIO_D_LOW();
sccb_delay();
SIO_C_LOW();
}
// 發(fā)送停止條件
void sccb_stop() {
SIO_C_HIGH();
sccb_delay();
SIO_D_HIGH();
}
// 發(fā)送一個字節(jié)并返回應(yīng)答狀態(tài)
bool sccb_write_byte(uint8_t data) {
bool ack;
for(int i = 7; i >= 0; i--) {
// 設(shè)置數(shù)據(jù)位
if(data & (1 << i)) SIO_D_HIGH();
else SIO_D_LOW();
sccb_delay();
// 時鐘脈沖
SIO_C_HIGH();
sccb_delay();
SIO_C_LOW();
}
// 讀取應(yīng)答位
SIO_D_INPUT(); // 切換為輸入
sccb_delay();
SIO_C_HIGH();
ack = (SIO_D_READ() == 0); // 低電平表示應(yīng)答
sccb_delay();
SIO_C_LOW();
SIO_D_OUTPUT(); // 切換回輸出
return ack;
}
硬件控制器
部分微處理器(如 STM32、NXP Kinetis)的 I2C 控制器可通過配置時序兼容 SCCB
優(yōu)點:不占用 CPU 時間,通信更可靠
缺點:需要控制器支持,靈活性較低
硬件實現(xiàn)時需將 I2C 的時鐘頻率降低到 100kbps 以下,并禁用快速模式和 PEC 校驗功能。
2. 地址分配
SCCB 設(shè)備的 7 位地址由廠商預(yù)設(shè),通??赏ㄟ^硬件引腳調(diào)整部分位,以避免地址沖突:
OmniVision 攝像頭通常使用 0x42(寫)和 0x43(讀)作為默認地址
GalaxyCore 傳感器常用 0x20(寫)和 0x21(讀)
部分設(shè)備通過 AD0 引腳可切換地址的最低位
在多設(shè)備系統(tǒng)中,需確保所有 SCCB 設(shè)備的地址唯一,必要時通過硬件引腳配置不同地址。
三、SCCB 接口的典型應(yīng)用
1. 攝像頭配置
SCCB 最主要的應(yīng)用是配置 CMOS 圖像傳感器的工作參數(shù),典型配置項包括:
分辨率設(shè)置:通過寄存器配置輸出圖像的寬度和高度
幀率控制:調(diào)整傳感器的積分時間和輸出速率
曝光參數(shù):設(shè)置自動曝光模式、曝光時間和增益
白平衡:配置紅 / 藍增益,調(diào)整圖像色溫
圖像質(zhì)量:設(shè)置降噪、銳化等圖像增強功能
電源管理:控制傳感器的工作模式和功耗
例如,通過 SCCB 配置 OmniVision OV7670 攝像頭分辨率的流程:
// 初始化SCCB通信
sccb_init();
// 寫入寄存器:設(shè)置格式為QVGA
sccb_write(OV7670_ADDR, 0x12, 0x04); // 0x12寄存器控制圖像格式
// 設(shè)置水平尺寸
sccb_write(OV7670_ADDR, 0x32, 0x00); // HOUT低8位
sccb_write(OV7670_ADDR, 0x33, 0x1E); // HOUT高8位(0x1E0=480)
// 設(shè)置垂直尺寸
sccb_write(OV7670_ADDR, 0x34, 0x00); // VOUT低8位
sccb_write(OV7670_ADDR, 0x35, 0x14); // VOUT高8位(0x140=320)
2. 狀態(tài)讀取
除了配置參數(shù),SCCB 還可用于讀取傳感器的狀態(tài)信息:
讀取設(shè)備 ID 寄存器,確認傳感器型號
獲取溫度傳感器數(shù)據(jù),進行溫度補償
讀取幀同步信號狀態(tài),同步主機與傳感器
獲取錯誤狀態(tài)寄存器,診斷通信問題
3. 系統(tǒng)集成
在實際系統(tǒng)中,SCCB 通常與圖像數(shù)據(jù)傳輸接口配合工作:
SCCB 負責(zé)傳輸控制信號(低速)
MIPI-CSI 或并行接口負責(zé)傳輸圖像數(shù)據(jù)(高速)
這種分離設(shè)計使控制通道和數(shù)據(jù)通道各自優(yōu)化,兼顧了可靠性和傳輸效率。
四、SCCB 接口的優(yōu)缺點與發(fā)展趨勢
1. 優(yōu)點
硬件簡單:僅需兩根信號線,無需專用控制器
實現(xiàn)容易:時序要求寬松,軟件模擬簡單
可靠性高:開漏輸出設(shè)計支持多設(shè)備共存,應(yīng)答機制確保數(shù)據(jù)正確傳輸
低功耗:空閑時總線處于高電平,幾乎不消耗電流
2. 缺點
速率較低:最高速率通常限制在 400kbps,不適合大量數(shù)據(jù)傳輸
功能單一:僅支持基本的寄存器讀寫,缺乏復(fù)雜的錯誤處理和流控制
兼容性有限:主要用于圖像傳感器,其他外設(shè)支持較少
無仲裁機制:多主機場景下可能出現(xiàn)總線沖突
3. 發(fā)展趨勢
隨著圖像傳感器數(shù)據(jù)速率的提升,SCCB 作為控制接口仍將長期存在,但也在向以下方向發(fā)展:
與高速接口融合:在 MIPI-CSI-2 等高速接口中嵌入控制通道,減少信號線數(shù)量
增強功能:部分廠商的新型傳感器在 SCCB 基礎(chǔ)上增加了中斷信號和喚醒功能
向后兼容:新傳感器仍保留 SCCB 接口,確保與傳統(tǒng)系統(tǒng)的兼容性
向 I2C 靠攏:越來越多的傳感器同時支持 SCCB 和標(biāo)準(zhǔn) I2C 模式,提高靈活性