SCCB协议下ov7670调试
来源:互联网 发布:装企管理软件 编辑:程序博客网 时间:2024/04/28 19:06
花了一整天的时间终于完成了SCCB的读写,并成功在瑞莎RX23T上读取了图像,在这里记录一下调试过程。
OV7725摄像头只能作为从机,通过SCCB协议配置内置的201个寄存器。
I2C基础部分请参考:[(原创) 巩固理解I2C协议(MCU,经验)](http://www.cnblogs.com/hechengfei/p/4117840.html)
1.SCCB与I2C区别
SCCB与IIC的区别:
1.1 写操作一样,都是
- Start
- 发送slaveAddress
- ACK
- 发送REG Address
- ACK
- 发送Data
- ACK
- 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 读时序
读时序分为两个阶段
- start+ID地址(7位ID地址+1位写控制+don’t care)+ 可读的寄存器地址(8位寄存器地址+don’t care)+stop
- 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。
- SCCB协议下ov7670调试
- OV7670 的SCCB (I2C)波形记录
- SCCB传输协议
- OV7670调试心得
- OV7670摄像头调试
- SCCB协议官方文档翻译
- SCCB协议Verilog HDL程序
- 软件SCCB协议学习笔记
- SCCB
- OV7670配置和调试总结
- CMOS图像传感器使用的SCCB总线协议
- sccb 串行摄像机控制总线协议
- I2C和SCCB协议的小区别和误区
- 再议IIC协议与设计【3】 --SCCB总线介绍
- STM32和OV7670的串口上位机调试
- a10下ov7670测试程序,拍照一张bmp图片
- 基于I.MX25的GPIO模拟SCCB通信协议(简化的I2C协议)
- ov7670+al422
- FAT16文件系统之DBR(二)
- Android高级控件01
- 矩阵快速幂
- unity学习总结
- Greenplum 数据库 集群安装部署(生产环境) 所需硬件
- SCCB协议下ov7670调试
- oracle中创建序列以及序列使用注意事项
- UE4 凹多边形渲染
- win7更改文件权限
- C语言--数组(一)
- bzoj1933: [Shoi2007]Bookcase 书柜的尺寸
- FJ的字符串
- 快速幂,矩阵快速幂
- G