SCCB总线与IIC区别

2,821次阅读
没有评论

SCCB 是简化的 I2C 协议,SIO- l 是串行时钟输入线,SIO- O 是串行双向数据线,分别相当于 I2C 协议的 SCL 和 SDA。SCCB 的总线时序与 I2C 基本相同,它的响应信号 ACK 被称为一个传输单元的第 9 位,分为 Don’t care 和 NA。Don’t care 位由从机产生;NA 位由主机产生,由于 SCCB 不支持多字节的读写,NA 位必须为高电平。另外,SCCB 没有重复起始的概念,因此在 SCCB 的读周期中,当主机发送完片内寄存器地址后,必须发送总线停止条件。不然在发送读命令时,从机将不能产生 Don’t care 响应信号。

由于 I2C 和 SCCB 的一些细微差别,所以采用 GPIO 模拟 SCCB 总线的方式。SCL 所连接的引脚始终设为输出方式,而 SDA 所连接的引脚在数据传输过程中,通过设置 IODIR 的值,动态改变引脚的输入 / 输出方式。SCCB 的写周期直接使用 I2C 总线协议的写周期时序; 而 SC-CB 的读周期,则增加一个总线停止条件。

SCCB 是和 I2C 相同的一个协议。SIO_C 和 SIO_D 分别为 SCCB 总线的时钟线和数据线。目前,SCCB 总线通信协议只支持 100Kb/ s 或 400Kb/ s 的传输速度,并且支持两种地址形式:①从设备地址(ID Address,8bit),分为读地址和写地址,高 7 位用于选中芯片,第 0 位是读 / 写控制位(R/W),决定是对该芯片进行读或写操作;②内部寄存器单元地址(Sub_ Address,8bit),用于决定对内部的哪个寄存器单元进行操作,通常还支持地址单元连续的多字节顺序读写操作。SCCB 控制总线功能的实现完全是依靠 SIO_C、SIO_D 两条总线上电平的状态以及两者之间的相互配合实现的。SCCB 总线传输的启动和停止条件如图

过程:采用简单的三相 (Phase) 写数据的方式,即在写寄存器的过程中先发送 OV7649 的 ID 地址(ID Address),然后发送写数据的目地寄存器地址(Sub_address),最后发送要写入的数据(Write Data), 见图 3。如果给连续的寄存器写数据,写完一个寄存器后,OV7649 会自动把寄存器地址加 1,程序可继续向下写,而不需要再次输入 ID 地址,从而三相写数据变为了两相写数据,由于本系统只需对有限个不连续寄存器进行配置,如果采用对全部寄存器都加以配置这一方法的话,会浪费很多时间和资源,所以我们只对需要更改数据的寄存器进行写数据。对于每一个需更改的寄存器,都采用三相写数据的方法。

正文完
 0
评论(没有评论)