摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置

本文主要是介绍摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接。输出一帧图像与输出时钟PCLK有关。

image

  上图是OV7725实现的整体框架,有点丑。FPGA描述SCCB时序,完成OV7725的配置,配置完成之后,OV7725 sensor输出PCLK和href,vsync以及cmos_data信号。经过格式的转换单元,将格式转换后的数据送给SDRAM单元,最终实现VGA/LCD/上位机显示。

  之前已经提及过,SCCB接口主要实现sensor内部各种寄存器的配置,如AGC,AWB,gama,color saturation等等,下面就讲解寄存器的配置。参考手册如下图所示,寄存器的配置还需要OV7725的手册中关于寄存器设定章节一起配合使用。

image

image

  在手册的最后一个章节,给出了参考设置,不过输出的格式是YCbCr格式,其他设置需要联系FAE。

  image

  如下图所示,写入的寄存器前8位数据,如0x3d代表了寄存器的地址,后8位0x03代表了该寄存器设定的值。根据手册最后内容可以在0V7725数据手册(OV7725 datasheet)中找到相关寄存器的说明。

image

  比如0x3d,在数据手册(OV7725 datasheet)中代表的功能是DC偏置量的控制。如下图所示,其他寄存器以此类推,可以一一找到。注意在设置时设置寄存器地址或者寄存器的名称均可以,比如0x3d,0x03,也可以设置com12,0x03.

image

  在OV7725配置手册中,讲述了关于YCbCr和RGB24格式之间的转换方法,如下图所示,由于FPGA不擅长处理浮点数,所以需转换成定点数处理。

 image

image

  在OV7725配置手册中,详细说明了对于OV7725格式输出的说明,分为有ISP和无ISP情况,这个模块可以在FPGA内部去建立格式输出单元,此方面内容会在之后讲解。

image

  对于寄存器的设置,根据OV7725应用手册中的参考设置,有几个重要部分必须要进行设置,如下所示:

  1. ID的设置

  对于厂商来讲,每一款传感器有唯一的ID地址。

wps3290.tmp

  制造商唯一的ID地址。

wps32A0.tmp

 2.复位所有的寄存器

  上电之后,对OV内部所有的寄存器先复位。寄存器12不单有复位功能,还有控制OV视频输出格式,下面会提及到,参见第10项。

image

 

image3.模拟处理中的DC偏置

image

image 

4. 对行和场的设置

  寄存器17位行起始控制,18为VGA模式下行像素大小。19为场起始控制,1A为VGA模式下场像素大小。

image

image

5.对场同步信号进行取反操作

  为了和VGA时序保持一致,将VSYNC的时序进行取反,关于一帧的时序图参考上一篇博客。

  write_SCCB(Ox15,Ox02);此项设置,将pclk定义为上升沿有效,href定位为高电平有效,vsync进行取反向。

6.图像的起始位置和大小控制

image

image

  7.行和场输出数据的大小控制

image

image

image

  8.内部时钟控制

  寄存器0d是设置内部PLL的倍频,选择4倍频,AEC自动曝光控制选择二分之一窗。寄存器11是内部时钟的设置,通过PLL4倍频之后,计算得到的结果和XCLK的时钟应该是相等的。

imageimage 

image

image

  9.虚拟像素高位插入

  配置手册上面给出的是默认值,此功能实际上没用到。

image

image10.OV视频格式输出配置

  寄存器12,功能复用  ,write_SCCB(Ox12,Ox06);输出格式是RGB565格式。所以此寄存器非常重要,决定了OV输出的格式。

11.RGB格式YUV格式的顺序以及测试彩条的控制

  write_SCCB(Ox0c,Ox10);其中寄存器0c控制RGB和YUV格式的顺序,还有控制OV内部自带的测试彩条的使能。这里采用默认值,不使能彩条。

image

image

  12. DSP控制参数

  其中0x42寄存器控制的是背光补偿蓝控制量,如下图所示,选择手册参考值。

image

  其中0x4d是修补增益的控制,0x42对背光补偿颜色B分量进行设定。

image

image 

  寄存器0x63是AWB自动白平衡控制字0的控制。选择手册中的默认值。0xf0;

image

  寄存器0x64~67是DSP控制为1~4,0x64设定为配置寄存器中的默认值0xff;0x65选择手册默认值,配置手册上给出的是0x20,选择默认值0x00,不影响成像效果。0x66是UV的交替格式。选择0x00。0x67是输出格式的选择,这里设置0x00/0x01,为YUV or RGB输出。

image

image13. AWB,AEC,AGC参数控制调节

image image

  0x13控制AEC,AWB,AGC是否使能,设置为0xff;0x0f控制当输出格式转换时,窗口自动适应。0x14设定0x11.0x22设定为 0x98,作为50Hz带宽滤波。在OV7725寄存器配置手册中0x13,0x22,0x23是关于交流频率50Hz,帧频为25,情况下的带通滤波器的设置。image

image

imageimage

imageimageimage

  14.边缘强化处理

均选择配置指定值。

image

image

  15.色彩还原矩阵设置

image

image

  16.亮度,对比度,UV和SDE控制

  选择默认值。

image

image

image

image

image

image17. gama参数设置 

  其中寄存器0x7e~0x8c均是对gama曲线的设定,设定配置手册默认值。

image

image

image

  18. UV控制

write_sccb{0xa7, 0x65}; 
write_sccb{0xa8, 0x65}; 
write_sccb{0xa9, 0x80}; 
write_sccb {0xaa, 0x80};

 image

image19.夜间自动调整帧频

 

image

 

 

 

image

  若是设置成 Fixed Frame Rate,则image

  以上是对常用的寄存器的设置,大部分参考了手册中的设定值,接下来就要实现 SCCB时序,实现对OV7725实现配置。

这篇关于摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040563

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方