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);
}
SCCB(I2C)时序相关推荐
- S5PV210之GPIO模拟I2c时序之pcf8591与at24xx linux3.0.8驱动
目录:一. 说明 二. 驱动程序说明及问题 三. 案例一 四. 案例二 一. 说明 mini210开发板上带了at24c08, 看了linux内核自带的at24.c的驱动程序,编译下载到看 ...
- linux下I2C驱动发送IO时序,I2C驱动情景分析——怎样控制I2C时序
内核版本:linux-3.4.2 源程序: linux-3.4.2\drivers\i2c\busses\I2c-s3c2410.c 这次要解决的问题是:如何配置soc的I2C模块,输出想要的时 ...
- s5pv210——I2C基础详解、I2C时序详解
以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除 . 参考博客: http://blog.csdn.net/oqqhutu12345678/article/details/65445338 h ...
- 11.SCCB接口时序的实现
SCCB接口时序的实现 SCCB接口时序与IIC协议基本一致,是其简化版本,且SCCB协议兼容IIC协议. 基本时序介绍 最常用的时序是3线控制数据传输的方式,基本时序图如下. 具体的控制信号,则是先 ...
- STM32模拟I2C时序读写EEPROM精简版
平台:STM32ZET6(核心板)+ST-LINK/V2+SD卡+USB串口线+外部EEPROM(不需要上拉电阻) 工程介绍:主要文件在USER组中,bsp_i2c_ee.c,bsp_i2c_ee.h ...
- OV7670 的SCCB (I2C)波形记录
前两天,客户的YACD511SBDBC与我们的芯片无法通信,根据分析是,hold time 的问题,顺便测了几个好使的OV7670的SCCB(其实就是I2C) 读写的波形(数字模式),反正也不能浪费了 ...
- I2C协议---I2C时序图解析
一.I2C协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART.CAN 等通讯 ...
- s5pv210 i2c 时序
1 低层时序 ①. 底层时序 ******** 低层时序: ①.空闲: scl clk都是高电平②.起始位: 一个时间段,这个段时间内,SCL高电平, SDA 出现下降沿 , 接收方收到以后,知道了, ...
- i2c时序图的详细讲解
i2c简易时序图 启动信号: SCL为高电平的时候,SDA由高电平向低电平跳变.结束信号:SCL为高电平的时候,SDA由低电平向高电平跳变. 应答信号: I2C总线上的所有数据都是以8位字节传送的,发 ...
最新文章
- java desktop类 能打开共享文件夹中的文件吗_计算机二级之JAVA篇
- Web服务集成CRM的应用
- 老公和老婆的15个关于......
- 2440启动代码分析
- 邪恶的编码魔咒,你中招没?
- POJ - 3494
- sscom32串口测试软件连接串口时有时会造成设备异常,更换别的串口软件后正常,特此记录
- 对接第三方顺丰丰桥电子面单打印接口教程
- Hadoop3.3.1详细教程(四)Linux集群搭建+免密登录
- PS CC2018替换/修改图片上的文字内容
- Python for s60[1_pys60简介]
- 网站PV,UV是什么意思?
- 使用python的模拟退火算法估计heston期权定价模型的五个参数(新)
- python画喜羊羊_PYTHON养成日记 DAY-8
- 7-2 单词首字母大写 (15 分)
- 无法为数据库中的对象分配空间,因为'PRIMARY'文件组已满问题处理方式
- 香港4月1日5G商用,月费198港元起
- 读取.nc文件数据及可视化
- 零数科技受邀加入中国信通院隐私计算联盟
- MATLAB测试一阶惯性滞后系统、PID参数采用Simulink整定结果