SCCB协议下ov7670调试

花了一整天的时间终于完成了SCCB的读写,并成功在瑞莎RX23T上读取了图像,在这里记录一下调试过程。

OV7725摄像头只能作为从机,通过SCCB协议配置内置的201个寄存器。

I2C基础部分请参考:[(原创) 巩固理解I2C协议(MCU,经验)](http://www.cnblogs.com/hechengfei/p/4117840.html)


1.SCCB与I2C区别

SCCB与IIC的区别:
1.1 写操作一样,都是

  1. Start
  2. 发送slaveAddress
  3. ACK
  4. 发送REG Address
  5. ACK
  6. 发送Data
  7. ACK
  8. Stop

1.2 其他操作一样,ACK、NACK等


1.3 读操作不同
而对于I2C,在发送了寄存器地址后,可以不发送停止条件,直接启动下一次的传输。
SCCB不支持repeat start,因为SCCB没有重复起始的概念,因此在SCCB的读周期中,当主机发送完片内寄存器地址后,必须发送总线停止条件。不然在发送读命令时,从机将不能产生Don’t care响应信号。即每一个传输都要有开始和结束来释放总线 (start + sotp),这也是SCCB与I2C不同的一个地方。

——在这里卡了很久,给SCCB加了stop部分的信号后数据就能读回来了。


2、数据传输

2.1 写时序
主要说明请参考1.1节。

写操作是三个阶段构成一个传输的写,每一阶段都是9位,具体如下:

ID地址(7位ID地址+1位读写控制+don’t care) + 要写的寄存器地址(8位寄存器地址+don’t care)
+要写入的数据(8位数据+don’t care)

其中,“don’t care”可以是任意类型的信号,ACK、NOACK等都可以。

要强调的是ID地址,写为0x42,读为0x43 , 0x42即ID地址的读写控制位为0,0x43即ID地址的读写控制位为1

总结为: start + ID地址(0x42)+ 寄存器地址 + 数据 + stop


2.2 读时序

读时序分为两个阶段

  1. start+ID地址(7位ID地址+1位写控制+don’t care)+ 可读的寄存器地址(8位寄存器地址+don’t care)+stop
  2. start+ID地址(7位ID地址+1位读控制+don’t care)+指定寄存器里面的数据的数据(8位数据+NA)+stop

完成一次数据读取。
总结为: start1+ ID地址(0x42)+ 寄存器地址 +stop1+start 1 +ID地址(0x43)+ 数据 + stop2


3.调试

3.1调试注意事项:
ov7670的SCCB的最大时钟频率为400kHZ,调试时,请严格按照时序图中时间要求进行信号的读取和接收。一般的调试工具可以选择示波器和逻辑分析仪,这样可以极大的加快调试速度。

这里写图片描述

在ov7670手册的相关寄存器中,有几个不可修改的出厂值,可以通过读取这几个值,确认SCCB时序的正确性。

可以进行读取的寄存器地址为 0x0A, 0x0B, 0x1C, 0x1D

这里写图片描述

这里写图片描述


3.2 测试结果
当时序正确时,逻辑分析仪可以直接给出相关的时间片下的值,很方便。
这里是读取寄存器地址为0x0B的时序图,成功返回的结果为0x73,(手册中的值是错的)。
这里写图片描述

这里是读取寄存器地址为0x1C的时序图,成功返回的结果为0x7F。
这里写图片描述

1、SCCB协议简述 SCCB协议有两线也有三线,两线为SIO_C与SIO_D,三线为SIO_E、SIO_C与SIO_D。 2线的SCCB总线只能是一个主器件对一个从器件控制,但3线SCCB接口可以对多个从器件控制,因此当只有一个从机(slave device)时用两线,有多个从机时用三线。 其中SIO_C只能由主机配置(FPGA),SIO_D是一个三态门,双向数据线,既可以由主机控制,也可以由从机控制。 2、数据传输 当写数据到从机被定义为写传输(write transmission),当从机中读数据被定义为读传输 (read transmission),每一个传输都要有开始和结束来释放总线(start + sotp) 完整的数据传输包括两个或三个阶段,每一个阶段包含9位数据,其中高8位为所要传输的数据,最低位根据器件所处情况有不同的取值: 总结如下: 每一个阶段组成:8位数据+don't care/NA 如果是主机发送数据,即进行写操作,第九位就为don't care 如果是从机发送数据,即为读操作,第九位就为NA. 在进行主器件写操作时,全部阶段的最低位均是Don’t care bit 在进行主器件读操作时,第一阶段的最低位是自由位,第二阶段的最低位为NA,请结合第三部分好好理解 3、SCCB的读写操作 写操作是三个阶段构成一个传输的写,每一阶段都是9位,具体如下 ID地址(7位ID地址+1位读写控制+don't care) + 要写的寄存器地址(8位寄存器地址+don't care) +要写入的数据(8位数据+don't care) 要强调的是ID地址,写为8'h42,读为8'h42 , 8'h42即ID地址的读写控制位为0,8'h43即ID地址的读写控制位为1 总结为: start + ID地址(42)+ 寄存器地址 + 数据 + stop
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值