前言

IIC接口有比较广泛的应用,而SCCB(Serial Camera Control Bus,串行摄像头控制总线)是由OV(OmniVision的简称)公司定义和发展的三线式串行总线,该总线控制着摄像头大部分的功能,包括图像数据格式、分辨率以及图像处理参数等。主要用于摄像头控制,可以说SCCB是低配版的IIC。因为IIC可以实现多主多从,IIC规范文档中有提到多主机的时钟同步、总线仲裁功能。而SCCB的文档中则没有这部分内容,因为一般来说都是单个主机控制多个摄像头,只有一主多从的功能。

提示:以下是本篇文章正文内容,下面案例可供参考

一、信号线

SCCB与IIC的异同及FPGA实现的注意事项-LMLPHP
IIC只有两根信号线,SCCB的SIO_C、SIO_D和IIC的SCL、SDA分别对应,SCCB额外还有SCCB_E和PWDN两根控制线,这个影响不大。
SDA和SCL都是需要靠电阻上拉的,硬件设计上需要注意这一点。IIC的Ultra-Fast模式下,能够达到5MHz的传输速率,这时在硬件上,IIC采用的是推挽输出,为了进行区分,相应的信号称为USDA和USCL,仅在这时是不需要上拉电阻的。
SCCB如果要实现一主多从的话,需要用三根线,除了SIO_C和SIO_D,还有一根SCCB_E。而如果仅控制一个摄像头,那么可以只用两根线SIO_C和SIO_D。

二、SCCB数据传输格式

所谓数据传输的格式就是在一个启动信号和停止信号之间的内容,每一次传输作为一个传输周期。SCCB接口主要实现目的寄存器的读写功能。有三种基本操作,分别是“3-Phase Write”、“2-Phase Write”和“2-Phase Read”
Phase Write
SCCB与IIC的异同及FPGA实现的注意事项-LMLPHP
这里的IP address类似IIC的从机地址;sub-address是从机内的寄存器地址,也就是摄像头的一些控制寄存器的地址;最后就是要写入该寄存器的数据。
Phase Write
SCCB与IIC的异同及FPGA实现的注意事项-LMLPHP
与3-Phase Write相比,2-Phase Write只是确定了要访问的寄存器,但是没有往里面写数据。2-Phase Write后一定会有一个2-Phase Read,两者一起构成一个完整的读操作。
Phase Read
SCCB与IIC的异同及FPGA实现的注意事项-LMLPHP
2-Phase Read即读取目标寄存器的数据,它的前面一定要有一个3-Phase Write或者2-Phase Write用来明确目的寄存器的地址。

三、SCCB写(与IIC完全一致)

SCCB与IIC的异同及FPGA实现的注意事项-LMLPHP

即:start + phase_1 + phase_2 + phase_3 + stop

“X”的意思是“don’t care”,该位是由从机发出应答信号来响应主机表示当前ID Address、Sub-address和Write Data是否传输完成,但是从机有可能不发出应答信号,因此主机(此处指FPGA)可不用判断此处是否有应答,直接默认当前传输完成即可。“X”即IIC中的ACK应答位。

四、SCCB读

SCCB与IIC的异同及FPGA实现的注意事项-LMLPHP

在IIC读传输协议中,写完寄存器地址后会有restart即重复开始的操作;而SCCB读传输协议中没有重复开始的概念,在写完寄存器地址后,需发起总线停止信号。

即:start_1 + phase_1 + phase_2 + stop_1 + start_2 + phase_3 + phase_4 + stop_2

五、SCCB和IIC的区别

1.SCCB的应答位称为X,表示“don’t care”,而IIC应答位称为ACK。

2.SCCB只能单次读,而IIC除了单次读还支持连续读。

3.SCCB读操作中间有stop,而IIC读操作中间可以有stop也可以不需要stop,具体表现如下

SCCB读:start_1 + phase_1 + phase_2 + stop_1 + start_2 + phase_3 + phase_4 + stop_2
IIC读:start_1 + phase_1 + phase_2 + + start_2 + phase_3 + phase_4 + stop_2

除去上面三点,SCCB和IIC再无区别,因此如果只需要配置寄存器(只用到写),可以直接拿IIC的时序来当做SCCB用,如果需要读,读操作中间必须有一个stop。

08-22 00:25