一. 什么是SCCB协议?
SCCB (Serial Camera Control Bus)是 OmniVision公司公布的串行摄像机控制总线协议,相当于一个简易的I2C 协议。SCCB有三线和两线之分,三线的是一主机多从机,两线的是一主机一从机。
- SCCB_E:使能信号,低电平有效。
- SIO_D:双向数据总线,可由主设备或从设备驱动,空闲时拉高。
- SIO_C:单向时钟总线,只能由主设备驱动,高电平数据有效,空闲时拉高。
- PWDN:输出/输入关闭。
二. SCCB时序分析
1. 起始信号
当SCCB_E拉低之后,SIO_D在SIO_C高电平期间拉低,表示一次数据传输开始。
2. 停止信号
当SCCB_E拉低之后,SIO_D在SIO_C为高电平期间拉高,表示一次数据传输结束。
3. 数据传输
在 SCCB协议中,一个基本传输单元称作一个相(phase),一个相包含总共9比特,前8比特为数据,它的响应信号ACK被称为一个传输单元的第9位,分为Don’t care和 NA(No ACK)。Don’t care位由从机产生;NA位由主机产生,由于SCCB不支持多字节的读写,NA位必须为高电平。
SCCB没有重复起始的概念,因此在 SCCB的读周期中,当主机发送完片内寄存器地址后,必须发送总线停止条件。
不然在发送读命令时,从机将不能生Don’t care响应信号。
写数据到从机被定义为写传输,从机中读数据被定义为读传输,每个传输都要有开始位(start)和结束位(sotp);完整的数据传输包括两个或三个phase,每一个phase包含9位数据,其中高8位为所要传输的数据,最低位根据器件读写情况有不同的取值:
每一个阶段组成:8位数据+don’t care/NA
- 如果是主机发送数据,即进行写操作,第9位就为don’t care;
- 如果是从机发送数据,即为读操作,第九位就为NA。
3.1 三相写传输
ID Addr :表示从机的器件地址以及读/写控制位;0:写寄存器,1:读寄存器
Sub Addr:写控制字节,表示从机的寄存器地址;
Write Data :表示写入的1字节数据;
3个相后面的的最后1位X都是 Don’t-Care bits。
3.2 两相写传输:读数据第一阶段
ID Addr :表示从机的器件地址以及写控制位;
Sub Addr :表示从机的寄存器地址;
2个相后面的的最后1位X都是 Don’t-Care bits。
3.3 两相读传输:读数据第二阶段
ID Addr :表示从机的器件地址以及读控制位;读控制字节
Read Data:表示接收从机发送的数据;
X都是 Don’t-Care bits;NA必须为1。