摄像头驱动0V7725学习笔记连载(三):0V7725 SCCB时序的实现
上一篇博客主要是讲解了关于需要配置的重要寄存器,那么接下来就是要通过SCCB接口实现对OV7725的配置。参考《OmniVision Serial Camera Control Bus (SCCB)Functional Specification》这篇技术手册,内部讲解了相关的SCCB时序的要求,实际上,完全可以按照I2C的时序来进行编写程序。
SCCB接口时序
双总线的起始和停止信号如下图所示。其中SCCB_E是针对多个slave device设定的一个使能信号,这里只针对一个sensor进行数据的配置。所以此信号可以不使用。
上述是关于起始和停止信号时序图。
上图是写入寄存器的相关设置,先设置ID地址,然后再写寄存器地址,最后写入寄存器的值。
第一阶段:对于OV来说设备地址为0X42,写是0X42,读是0X43;
第二阶段:写寄存器地址,这个地址是你需要设置的OV的地址值;
第三阶段:写入寄存器的值,这个是对应第二阶段所设置的寄存器的地址值;
对于读出寄存器,手册有这么一段话的描述。
所以对于上图中的读出阶段,打算用四个阶段去实现,一个是利用同写入寄存器一样的前两阶段,包括ID的地址和所需设置的寄存器地址,再加入两个阶段,一个是再次读入ID地址,然后读出数据值。如下图所示:
对于OV寄存器而言,有些寄存器的值适合读,有些寄存器的值适合写,所以在设置OV寄存器时要格外注意各种数据的格式配置。下面就实现I2C接口进行,并对OV7725进行寄存器配置。
上图是实现SCCB接口的整体框图,其中并未画出全局时钟和全局复位信号,再设计时需要进行全局时钟和全局复位控制。
实现代码如下:
I2C_OV7725配置模块
上图是简要列举了参数的设置,其中注意寄存器12,37行,是进行复位,64行是对输出形式的设置。其他的寄存器设置可以参考上一篇博客。
手册上面规定,在所有寄存器复位之后,需进行最大不超过1ms的延时,最大限度的保证稳定。
上图是端口的声明和完成1ms的上电延迟。
上述是完成 SCL的生成和在时钟的中间位置设置使能信号,仿真图如下图所示:
状态机的各个状态。
上图是状态机的第一部分,对于手册中有提及过,没改变一个寄存器,需要最大为300ms的延时,最小和典型值没有说明,只要小于等于300ms即可。利用 i2c_transfer_end和i2c_ack来实现这一延时。其中i2c_ack是各阶段的总响应。下面会提及。
188行中需要注意的是,前两个寄存器是用来产生厂商ID的,只读,所以需要判断。
上图中i2c_stream_cnt是用来计数数据位,使得发送时从高位向低位发送。
上图中i2c_sdat_out 作为输出数据寄存器,用来接收配置寄存器模块发送过来的数据。
上图是对I2C的ack信号做出的响应,420~422行做出的反应是高阻态,下面是整个SCCB实现的接口modelsim仿真图。
摄像头驱动0V7725学习笔记连载(三):0V7725 SCCB时序的实现的更多相关文章
- 摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置
上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接.输出一帧图像与输出时钟PCLK有关. 上图是OV7725实现的整体框架,有点丑.FPGA描述SCC ...
- 摄像头驱动OV7725学习笔记连载(一):OV7725 电器特性和时序图
OV(豪威科技)已经被中国财团收购.这个昔日的大佬,最终走下神坛. 关于OVsensor的资料包括,OV7725的简介(OmniVsion_OV7725),OV7725的数据手册(OV7725_Dat ...
- DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)
一.进行误差分析 很多时候我们发现训练出来的模型有误差后,就会一股脑的想着法子去减少误差.想法固然好,但是有点headlong~ 这节视频中吴大大介绍了一个比较科学的方法,具体的看下面的例子 还是以猫 ...
- Aurora学习笔记连载一:仿真平台搭建
由于公司项目需要,需要学习Aurora协议,才有了这样的连载学习笔记,也算是对自己学习的一份记录吧. 对于Aurora是什么,大家自行百度. 当然,Kevin也在此先提醒大家,本套学习笔记不是你想学就 ...
- PyQt4入门学习笔记(三)
# PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...
- 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...
- C#可扩展编程之MEF学习笔记(三):导出类的方法和属性
前面说完了导入和导出的几种方法,如果大家细心的话会注意到前面我们导出的都是类,那么方法和属性能不能导出呢???答案是肯定的,下面就来说下MEF是如何导出方法和属性的. 还是前面的代码,第二篇中已经提供 ...
- X-Cart 学习笔记(三)X-Cart框架2
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 3.了解 ...
- Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理
上次介绍过节点的基本配置<Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置>,这次介绍下规则节点,因为有时流程里会有一些分支.合并,这时就要用到规则节点 ...
随机推荐
- 部署到Google App Engine时中途退出后引起的问题
如果部署GAE时正在upload files时退出,下次部署时会报错 Another transaction by user is already in progress for this app a ...
- destoon入门实例与常见问题
收集了一些destoon入门实例与常见问题,大家做个参考. 链接如下: destoon忘记后台密码怎么办?destoon找回管理员密码 忘记destoon管理员后台账号密码怎么办?解决方法 desto ...
- zabbix 对服务器的负载做监控
# cat /etc/zabbix/zabbix_agentd.d/average.conf UserParameter=average[*],uptime|awk '{print $NF}' 自定义 ...
- TCPConnectionTermination
http://www.serverframework.com/asynchronousevents/2011/01/time-wait-and-its-design-implications-for- ...
- MyBatis 问题列表
问题表现:The content of elements must consist of well-formed character data or markup 解决办法:1.配置的动态SQL语句里 ...
- 【Cmd】那些年,我们迷恋的cmd命令(二)
那些年,我们迷恋的命令(一) 那些年,我们迷恋的命令(二) Linux系统下基本命令 Linux系统下基本命令: 要区分大小写 uname 显示版本信息(同win2K的 ver) dir 显示当前目录 ...
- BI--SAP BI的权限管理
源地址 :http://silverw0396.iteye.com/blog/229274 一.sapBI的用户分类 There are different types of users in SAP ...
- 【TensorFlow】tf.nn.embedding_lookup函数的用法
tf.nn.embedding_lookup函数的用法主要是选取一个张量里面索引对应的元素.tf.nn.embedding_lookup(tensor, id):tensor就是输入张量,id就是张量 ...
- maven 引入仓库外部jar
<dependency> <groupId>cn.com.do1</groupId> <artifactId>dqdp-template</art ...
- 利用jenkins的api来完成相关工作流程的自动化
[本文出自天外归云的博客园] 背景 1. 实际工作中涉及到安卓客户端方面的测试,外推或运营部门经常会有很多的渠道,而每个渠道都对应着一个app的下载包,这些渠道都记录在安卓项目下的一个渠道列表文件中. ...