SCCB (Serial Camera Control Bus) 是由OmniVision公司所定义的串行相机控制总线。用于控制OmniVision公司生产的Camera Sensor。本文通过对SCCB总线进行粗略的描述,并完成使用Xilinx的KC705中Microblaze完成对相机OV4689的配置。
第一部分 SCCB总线介绍
1. 总线描述
SCCB总线是的标准定义是一个3-wire制的串行总线(如图1),在实际的应用中,为了适应更小封装的sensor尺寸,现在的相机,一般情况下都使用2-wire来代替3-wire SCCB总线,其中SCCB_E信号被舍弃。在下面的描述中,我们就直接对2-wire串行总线进行描述。
图 1 SCCB 3-wire
需要说明的是,Camera Sensor在实际的通信传输中,只能作为从机来使用。并且2-wire的SCCB在实际的通信中,与IIC总线有很大的相似度。唯一不同的是SCCB在数据传输的过程中,在第9个SCL周期中的定义与IIC总线不同。
2. 总线信号定义
SIO_C
SIO_C信号是由主设备驱动的,是单向,高电平有效的控制信号。它表示了每一个传输位。在总线空闲时,主设备必须驱动SIO_C为1。在传输开始之后,SIO_C被驱动为逻辑0时,数据开始传输。在数据传输期间,SIO_C的逻辑1指示单个发送位。因此,只有当SIO_C被驱动为0时,SIO_D才能发生变化。单个发送位的周期被定义为tcyc,tcyc的最小值为10us.即时钟频率大于等于100KHz。可以看到,SIO_C信号与IIC的SCL信号是完全相同的。
SIO_D
SIO_D信号是双向数据信号,可以由主设备或从设备来驱动。当总线空闲时,它保持浮动或者处于三态。信号的保持是由主设备和从设备共同来决定的。这与IIC的SDA比较类似。不过需要说明的是,“处于浮动或者三态”这是在3-wire中的定义,当我们在使用2-wire的时候,为了与IIC的SDA线保持一致,将SIO_D在空闲时的状态定义为逻辑1.3. SCCB传输方式
注意 : 以下讨论主要针对于Camera Sensor 的 Register Address为8bit,16bit在后面的部分介绍
一个基本的数据传输元素被成为一个phase。SCCB所定义的传输方式分为以下三种:
- 3-phase写传输周期
- 2-phase写传输周期
- 2-phase读传输周期