FPGA之旅设计99例之第十八例----OV5640摄像头SCCB时序
一. 简介
从本例开始,接下来的几例,都将围绕OV5640摄像头来学习,教大家学会,如何通过OV5640摄像头,采集图像,并且显示在VGA显示屏上。
本例将简要地介绍一下OV5640摄像头,如何详细讲解一下SCCB接口,该接口主要用于配置OV5640,闲话不多说。
下一篇将介绍 OV5640寄存器
二. 认识OV5640摄像头
先简单了解一下OV5640的设计框图,对其内部架构有个大致的原理,图中可以看到 图像输出接口支持 DVP和 MIPI两种接口,具体使用那种,可以根据自己的需求进行选择,本例程使用的是DVP接口的,黑金的那款。
再来看看整体的引脚接口,整体接口图如下,下面一一介绍
CMOS_SCL 和 CMOS_SDA : 实际上就是SCCB接口的SIO_C和SIO_D,由于SCCB和IIC接口十分相似,只有一个位置的细微差别,所以经常就会叫做SCL和SDA。
D0-D7: 图像数据输出引脚,一共8位,从框图中可以看出,其实是有10位的,那另外两位那去了呢?查看摄像头的外部电路原理图得知,10位中的低两位没有引出来。
CMOS_PCLK: 从框图中可以看出,这个时钟是摄像头输出的,用于和D0-D7以及VSYNC同步,也就是说外部采集数据是以PCLK为标准时钟的。
CMOS_XCLK: 从框图中可以看出,这个时钟是外部输入的,用于为摄像头提供时钟。
CMOS_VSYNC: 摄像头输出信号,在每一帧图像输出开始之前,都会拉高一定的时间,用于帧同步。
CMOS_HREF: 摄像头输出信号,拉高,表示D0-D7输出数据有效。
CMOS_RESET: 复位信号,默认为高电平,拉低时间持续1ms以上进行复位,清除OV5640摄像头内部寄存器的所有值为默认值。
CMOS_PWDN: 掉电使能信号,外部输入,高电平有效,正常工作是,应设置为低电平。
最后,看一下OV5640输出的图像格式,实际输出的图像大小是可以调整的,通过配置寄存器。
到这里算是对OV5640有了一个初步的了解。下面将介绍SCCB时序。
三. SCCB时序
SCCB时序,与IIC是非常类似的,如果不涉及到读操作的话,可以说是一样的,配置寄存器的时候,主要涉及到的是写操作,一般读操作用于验证是否成功写入寄存器。
(1)写操作
既然写和IIC一样,那直接上图,第一步写器件的地址,第二步写寄存器的地址,第三步写寄存器的值。
其中器件地址为7bit,寄存器的地址为16bit,寄存器的值为8bit。所以配置一个寄存器,一共需要发送8*4(32)bit数据。
从下图可以看出,与IIC的一个区别,就是在应答位的时候,图中是用X表示的,也就是说不关心这一位,为0或1都可以。而IIC的应答是为0的,这是一个需要注意的点。
(2)读操作
读操作如下
起始信号 + 器件地址写 +应答+ 寄存器地址+应答 + 停止信号 + 起始信号 + 器件地址读 + 应答 + 读数据 +应答 + 停止位
对比IIC而言(IIC可有可无),其中多了个停止信号,这个是非常重要的,容易被忽视。一般而言,IIC读操作的时候,是不会加这个停止信号的。这一点通过手册上可以看到。
对IIC时序不清楚的朋友,可以参考博客第五例,或者其它教程。到这里SCCB接口的具体过程就分享到这里了。
四. SCCB代码实现
SCCB相较于IIC而言,是简单了的。
模块的接口信号如下,还是比较容易的。
实现方法和之前的例程IIC类似,也略有区别。主要在写操作时的第二次发送从机地址的判断部分。感兴趣的可以参考对比。
欢迎关注微信公众号 FPGA之旅 回复 FPGA之旅设计99例之第十八例 获取完整代码以及OV5640数据手册
SCCB_Interfacec (input sys_clk, //系统时钟input rst_n, //复位//SCCB接口output reg SIO_C,inout SIO_D,//读写相关数据input[6:0] Slave_addr, //从机地址,摄像头地址input[15:0] register_addr, //寄存器地址input[7:0] write_value, //写入寄存器的值output[7:0] read_value, //从寄存器读出的值//写接口input Slave_write_req,output Slave_write_ack,//读接口input Slave_read_req,output Slave_read_ack
);
读操作仿真图如上
FPGA之旅设计99例之第十八例----OV5640摄像头SCCB时序相关推荐
- FPGA之旅设计99例之第二十一例----VGA串口SDRAM显示图片
一. 简介 本例将接着上一例实现的sdram控制器进行封装.上例中只是实现了一个基本的控制器,在实际使用中,通常读写时钟是两个不同频率的,所以并不能满足要求. 在本例中,将对读写接口进行封装,将读写接 ...
- FPGA之旅设计99例之第二十例---SDRAM存储器实现
一. 简介 本例将介绍SDRAM的使用.SDRAM是一个存储器件,存储容量大,存储速度比较快,速度可达100M,特别适合用来当中视频或者音频中的存储器件. 在采集到OV5640传输过来的图像数据的时候 ...
- FPGA之旅设计99例之第二例-----按键
一.简介 这是FPGA之旅的第二个设计实例了,按键在项目中的作用是非常大的,使用的很频繁,本例将带大家设计一个实用的按键模块. 欢迎关注微信公众号 FPGA之旅 哦 可以在上面联系,有什么问题的话 二 ...
- (90)FPGA十进制计数器设计-面试必问(十四)(第18天)
(90)FPGA十进制计数器设计(第18天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA十进制计数器设计-面试必问(十四)(第18天) 5)技术交流 ...
- 【正点原子FPGA连载】第四十九章OV5640摄像头HDMI灰度显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写...
实验十八:SDRAM模块① - 单字读写 笔者与SDRAM有段不短的孽缘,它作为冤魂日夜不断纠缠笔者.笔者尝试过许多方法将其退散,不过屡试屡败的笔者,最终心情像橘子一样橙.<整合篇>之际, ...
- linux 正点原子ov5640_【正点原子FPGA连载】第二十四章OV5640摄像头HDMI显示-摘自【正点原子】领航者 ZYNQ 之嵌入式开发指南 (amobbs.com 阿莫电子论坛)...
[code]#----------------------摄像头接口的时钟--------------------------- #72M create_clock -period 13.888 -n ...
- Dreamweaver网页编辑技巧十八例
1>如何制作电子邮件表单处理结果 在<***FORM***>中输入Action="youremail@XXX.XXX" ,提交采用POST方法.使用代码:< ...
- FPGA中计数器设计探索
FPGA中计数器设计探索,以计数器为32位为例: 第一种方式,直接定义32位计数器. reg [31:0]count; quartus ii 下的编译,资源消耗情况. 85C模型下的时钟频率. 0C模 ...
- FPGA-Xilinx 7系列FPGA DDR3硬件设计规则
Xilinx 7系列FPGA DDR3硬件设计规则 引言:本文我们介绍Xilinx 7系列FPGA DDR3硬件设计规则及约束,包括Bank选择.管脚位置约束.管脚分配.端接.I/O标准和走线长度. ...
最新文章
- 我的世界java1.15.2光影_2.世界摄影简史
- python工作招聘-python爬虫 智联招聘 工作地点
- hdu5461(2015沈阳网络赛L题)
- linux ssh抓包,如何在SSH连接Linux系统的环境下使用wireshark抓包?
- WiFi共享精灵 - 不需路由器一键轻松把网线共享给手机、笔记本等同时无线上网...
- html两个div有缝隙_HTML第一课
- 误删除MySQL数据库表的ibd文件怎么办
- 豆瓣评分9.9!国内外口碑炸裂的强化学习圣经中文版终于来了!
- 2018网易内推 堆棋子 规律题
- php怎么把时间精确到毫秒,如何使用php获取当前时间戳、日期并精确到毫秒
- ios识别人脸自动拍照_ios人脸拍照识别
- 双网卡内外网同时使用
- android拍照文件没有读写权限,Android6.0之后的拍照+本地存储权限问题
- sql like N#39;%%#39;,N 是代表什么意思 及Like语句详解
- 第一次用 PHPUnit 写测试就上手(上)
- 安排几款实用的内网穿透工具(加教程)
- 【数据分析干货】世界杯4强出炉!冠军将花落谁家?看看历年数据!
- 转载:left join right join left outer join 区别
- JavaScript中splice的用法
- 电脑硬件:cpu后边数字及字母的意思