SCCB(I2C)时序

SCCB协议

SCCB(OmniVision serial camera control bus),即串行摄像机控制总线。OmniVision 公司已经定义和

采纳的SCCB总线是一种三线结构的串行总线,用于完成对绝大多数OmniVision 系列图像传芯片功能的控制。

在简化的引脚封装中,SCCB总线可以工作在改进的两线工作方式下。

两线SCCB接口有两条通迅连接线,即SIO_D(数据线)和 SIO_C(时钟线),下面是双总线功能原理图:

在双总线情况下,要求主控机有以下两种功能之一来支持SCCB通迅:

1、主控器件支持并能保持数据在三态模式;

2、如果不支持三态,

 

二、管脚功能

主控器件管脚描述

从控器件管脚描述

SCCB——E 信号

低电平有效,一个高到低的转换表明数据传输开始;一个低到高的转换表明数据传输结束;数据传输过程保持为低

电平;高电平表明总线处于空闲状态。在SCCB——E表明数据传输开始之前主机必须将数据线SIO——D置为1,这样可以避免

总线数据传输开始之前的总线不确定状态的出现。

SIO——C 信号

高电平有效,当处于空闲状态时必须被拉高;当启动传输后,SIO——C被拉低表明数据传输的开始,传输过程中高电平

表明一位数据正在传输,所以SIO——D的数据变化只能在SIO——C为低时发生,一位传输时间定义为tCYC,最小为10us

三总线数据传输

SIO——D信号

可以被主机和从机驱动,当总线处于空闲时保持悬浮或三态;

在传输Don‘t-Car()e或NA位时,总线浮动和争用是允许的

SIO——C的一个高电平表明一位数据的传输,SIO——D只能在SIO——C的低电平期间发生变化,但在传输的开始和结束

也有例外,在SCCB——E断言并且SIO——C拉低之前,SIO——D可以被拉低,在SIO——C拉高之前和去断言之前,SIO——D

也可以被拉低。

数据传输的起始

SCCB——E由高到低的变化,表明数据传输的开始,在SCCB——E断言之前,主机必须把SIO——D拉高,这样可以避免

在数据传输之前传输一个不确定的总线状态;在SCCB——E去断言之后,主机必须把SIO——D拉高在一个定义的时间段

内,来再次避免一个不确定状态的总线状态传输。

在启动传输过程中有两个时间参数,TPRA和TPRC,TPRC被定义为SID——D预充电时间,这表明SIO——D必须先于

SCCB——E被拉高的时间,最小值为15ns,TPRA被是指在SIO——D拉低之前,SID——E必须被断言的时间,最小为1.25us。

数据传输的终止

 

 TPSC是SCCB——E去断言后,SIO——D保持逻辑高电平的时间,最小为15ns,TPSA

是SIO——D去断言后,SCCB——E必须保持低电平的时间,最小为0ns

自我总结:

首先,要有开始信号。

开始信号是在clock为高的时候,data的下降沿作为起始信号。

void startSCCB(void)
{
    SCCB_SID_H();     //数据线拉高
    DDelay_us(500);
    SCCB_SIC_H();   //在时钟线高的时候数据线由高至低
    DDelay_us(500);
    SCCB_SID_L();
    DDelay_us(500);
    SCCB_SIC_L(); //数据线恢复低电平,单操作函数必要
    DDelay_us(500);
}

再就是写数据的时序。

SIO_D的改变只能在clock为低时改变,clock为高时数据发送出去。每发送完一帧后有个应答信号,由SCL为高时SDA的低电平作为应答信号。

for(j=0;j<8;j++) //循环8次发送数据
{
if((m_data<<j)&0x80)
{
SCCB_SID_H();
}
else
{
SCCB_SID_L();
}
DDelay_us(500);
SCCB_SIC_H();
DDelay_us(500);
SCCB_SIC_L();
DDelay_us(500);


}
DDelay_us(100);
SCCB_SID_IN;/*设置SDA为输入*/
DDelay_us(500);
SCCB_SIC_H();
DDelay_us(100);
if(SCCB_SID_STATE){tem=0;}   //SDA=1发送失败,返回0}
else {tem=1;}   //SDA=0发送成功,返回1
SCCB_SIC_L();
DDelay_us(500);
        SCCB_SID_OUT;/*设置SDA为输出*/

再就是结束信号,由SCL为高时,SDA的高电平跳变作为结束信号。

void stopSCCB(void)
{
    SCCB_SID_L();
    DDelay_us(500);
 
    SCCB_SIC_H();
    DDelay_us(500);
  


    SCCB_SID_H();
    DDelay_us(500);
   
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值