OV7725的帧率和PCLK寄存器设置

一、OV7725的PCLK的改变和以下几个寄存器有关:

       1:OX0D(COM4);

------------------------------------------------------------------------------------------------------------------

0X0D      COM4       41               common control 4

                                                           Bit[7:6]:  PLL  frequency control

                                                           00:Bypass PLL

                                                           01:PLL 4X

                                                           10:PLL 6X

                                                           11:PLL 8X

                                                          Bit[5:4]: AEC evaluate windows

                                                           00: Full windows

                                                           01: 1/2 windows

                                                           10: 1/4 windows

                                                           11: Low 2/3 windows

                                                           Bit[3:0]: Reserved

------------------------------------------------------------------------------------------------------------------

2:0X11(CLKRC);

------------------------------------------------------------------------------------------------------------------

0X11     CLKRC     80               internal Clock

                                                     Bit[7]:  Reseved

                                                     Bit[6]:  Use external clock directly (no clock pre_scale available)

                                                     Bit[5:0]: internal clock pre_scalar

                                                           F(internal clock)   = F(input  clock)/(Bit[5:0]+1)/2

                                                              . Range :    [0 0000] to [1 1111]

------------------------------------------------------------------------------------------------------------------

举个栗子:

Frame Rate Adjustment for 24Mhz input clock


30 fps, PCLK = 24Mhz
SCCB_salve_Address = 0x42;
write_SCCB(0x11, 0x01);
write_SCCB(0x0d, 0x41);
write_SCCB(0x2a, 0x00);
write_SCCB(0x2b, 0x00);
write_SCCB(0x33, 0x00);
write_SCCB(0x34, 0x00);
write_SCCB(0x2d, 0x00);
write_SCCB(0x2e, 0x00);
write_SCCB(0x0e, 0x65);

15 fps, PCLK = 12Mhz
SCCB_salve_Address = 0x42;
write_SCCB(0x11, 0x03);
write_SCCB(0x0d, 0x41);
write_SCCB(0x2a, 0x00);
write_SCCB(0x2b, 0x00);
write_SCCB(0x33, 0x00);
write_SCCB(0x34, 0x00);
write_SCCB(0x2d, 0x00);
write_SCCB(0x2e, 0x00);
write_SCCB(0x0e, 0x65);

第一个:

如上:输入时钟为24MHZ;0X0D为0x41,说明PCLK是输入时钟的4倍频;0X11为0X01,根据函数式:F(internal clock)   = F(input  clock)/(Bit[5:0]+1)/2,得到内部时钟为:F(internal clock) =24/2/2=6MHZ;得到PCLK=4*6=24MHZ,帧率是30fps

第二个:

如上:输入时钟为24MHZ;0X0D为0x41,说明PCLK是输入时钟的4倍频;0X11为0X03,根据函数式:F(internal clock)   = F(input  clock)/(Bit[5:0]+1)/2,得到内部时钟为:F(internal clock) =24/4/2=3MHZ;得到PCLK=4*3=12MHZ,帧率是15fps(帧率变小的原因是PCLK的频率降低了)

二、OV7725的帧率和PCLK的频率及0X33及0x34有关,0x33配置的是低8位,0x34配置的是高8位,这里是说增加的假的行,即没有用的行,这样帧率就会下降;

     同时还和0x2a及0x2b有关,这里说的是加入的假的列,即没用的列,这样的话帧率也会下降;

---------------------------------------------------------------------------------------------------------

   0X33      DM_LNL       00        RW           Dummy  Row   Low   8bit

---------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------

  0x34      DM_LNH       00        RW            Dummy Row    High  8bit

-------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------

  0x2a     EXHCH          00          RW          Dummy pixel insert MSB

                                                                   Bit[7:4]  :4MSB for dummy pixel insert in horizontal direction

                                                                   Bit[3]:Reserved;

                                                                   Bit[2]:vertical data outup size LSB

                                                                   Bit[1:0]:Horizontal data outup size 2LSBs

-----------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------

0x2b    EXHCL             00         RW         Dummy pixel insert LSB

                                                                 8LSB  for dummy pixel insert in horizontal direction

--------------------------------------------------------------------------------------------------------------------------------

举个栗子:

Frame Rate Adjustment for 24Mhz input clock


30 fps, PCLK = 24Mhz
SCCB_salve_Address = 0x42;
write_SCCB(0x11, 0x01);
write_SCCB(0x0d, 0x41);
write_SCCB(0x2a, 0x00);
write_SCCB(0x2b, 0x00);
write_SCCB(0x33, 0x00);
write_SCCB(0x34, 0x00);
write_SCCB(0x2d, 0x00);
write_SCCB(0x2e, 0x00);
write_SCCB(0x0e, 0x65);

25fps, PCLK = 24Mhz
SCCB_salve_Address = 0x42;
write_SCCB(0x11, 0x01);
write_SCCB(0x0d, 0x41);
write_SCCB(0x2a, 0x00);
write_SCCB(0x2b, 0x00);
write_SCCB(0x33, 0x66);
write_SCCB(0x34, 0x00);
write_SCCB(0x2d, 0x00);
write_SCCB(0x2e, 0x00);
write_SCCB(0x0e, 0x65);


这两端代码的输入clk都是24MHZ,输出PCLK相同都是24MHZ,但frame rate一个是30fps,一个为25fps,程序中只有0X33不同,如何通过将0X33设置为0X66,从而将30fps变为25fps。看下面的分析:

    vga1

    从图片中我们可以看到一个VSYNC有510个t(LINE),所以30fps表示有30*510*t(LINE),结合上面对于0X33的分析,因为都 是24MHZ,所以30fps和25fps两个时间相同。故在这510个LINE中插入102个(0X66)LINE,总的时间才会相同。 30*510*t(LINE)=25*(510+102)*t(LINE).

    当然帧率会随着PCLK的变化而变化,当PCLK变为12MHZ时,帧率也就减为15fps了。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从集合中选出一些元素组成子集合,使得这些子集合符合某种约束

今天朋友问了一个问题:现有整型数组 a[6] {1,2,4,3,5,8},写一个函数,找出所有和为10的集合。穷举法暴力解决很容易,但没有体现算法思想。不妨将问题上升:有某大小为N的整型数组,从中找出所有和为M的集合。…

演示:两台交换机成环后的STP计算原则

演示:两台交换机成环后的STP计算原则演示目标:理解两台交换机成环后,STP的计算原则,重点理解PID的作用。演示环境:如下图7.49所示。演示背景:上图所示的环境为两台交换机的生成树环境,其中S1有较…

引水入城

最近在搞提高组的题,这是某天早上给的T1 T1最难还行 原题目 最近考试考多了就是见题打暴力,打搜索, 然而这题真是搜索, 但是并不能只搜索,会T,没亲测,但一定有效 这并不是考试题,所以看看标签(理直气壮的理由) 是BFS啊... 那就用DFS吧 这里的DP一开始看没有什么感觉,但是做着做…

程序员必知8大排序3大查找(一)

每天都在叫嚣自己会什么技术,什么框架,可否意识到你每天都在被这些新名词、新技术所迷惑,.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在云里雾里行走一样,只能看到眼前,不能看到…

最详细的U-BOOT源码分析及移植

本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上: 1、u-boot工程的总体结构 2、u-boot的流程、主要的数据结构、内存分配。 3、u-boot的重要细节,主要分析流程中各函数的功能。 4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,…

常见的算法思想(分治、动态规划、贪心算法、回溯法等)

《数据结构与算法》一书中讲到的几种常见的算法思想包括:递归和分治、动态规划、贪心算法、回溯法、分支限界法、概率算法、线性规划、NP完全性理论。我们平常所见的一般都是前5种,这里简单介绍。 分治法 把一个大规模问题划分成几个子问题,…

织梦教程

/************************************************************************************************************************************************** 织梦 文件说明 很详细 http://bbs.admin5.com/thread-1952932-1-1.html /****************************************…

TinyXML:一个优秀的C++ XML解析器

2019独角兽企业重金招聘Python工程师标准>>> 读取和设置xml配置文件是最常用的操作,试用了几个C的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源…

《C++标准程序库》学习笔记5 — 第七章

1.(P252) 迭代器的分类及其能力:input迭代器只能读取元素一次。如果复制input迭代器,并使原迭代器和新产生副本都向前读取,可能会遍历到不同的值。output迭代器类似。 2.(P258) C不允许修改任何基本类型(包括指针)的暂…

Android无线调试——抛开USB数据线

开发Android的朋友都知道,真机调试需要把手机与PC相连,然后把应用部署到真机上进行安装和调试。长长的USB线显得很麻烦,而且如果需要USB接口与其他设备连接的话显得很不方便。今天介绍一种不通过USB线就可以进行真机调试的方法。首先让手机与…

C中不能直接比较两个double类型

在比较float 和double类型的时候,因为float/double精度的问题,比如1.000000001可能和1.0000000000001相等,不应该直接使用a>b等类似的方式进行比较,而是采用 两个数做差取绝对值然后跟指定的精度进行比较 ,便可得出…

C#基础——C#入门

教材是C#入门经典(第四版)。 PC:Thinkpad sl410 OS:Win7 Ultimate SDE:VS 2010 Ultimate 1.2 什么是C#? C#是从C、C语言演化而来,Microsoft专门为使用.Net平台而创建的语言,读作C sharp。运行在.Net CRL环境上的应用程…

VS2017动态链接库(.dll)的生成与使用

这里以VS2017为例子,讲解一下动态链接库(.dll)的生成与使用。 一、动态链接库(.dll)的生成 1、打开:“文件”-“新建”-“项目” 2、打开:“已安装”-“模板”-“Visual C”-“Win32”-“Win3…

让Windows7 x64 IIS7支持32位应用程序

我的os是Win7 64位,因为开发的一个应用程序使用了非dot net 的32 位的dll。 经常出现无法装载****.dll的问题。 下面的命令让IIS 7支持32位的应用程序: cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin…

c#中用声音提示报警(转)

using System; using System.Runtime.InteropServices; 调用 Interaction.Beep(); 使用MessageBeep(unit uType):需添加 using System.Runtime.InteropServices; public const int MB_ICONEXCLAMATION 48; [DllImport("user32.dll")] public static extern bool M…

android3.2以上切屏禁止onCreate()

一般切屏禁止onCreate()方法需要将activity加上属性: android:configChanges”orientation|keyboardHidden” 但是在3.2以上就不起作用了,需要加上screenSize(也只有3.2以上才有这个选项): android:configC…

typedef用法总结

1、用途一:定义一种类型的别名,可以用作同时声明指针型的多个对象。 比如对于char* pa, pb,初学者往往错误地认为定义了两个字符型指针,但是它只声明了一个指向字符变量的指针和一个字符变量; 而 typedef char* PCH…

Linux下gcc编译生成动态链接库*.so文件并调用它

动态库*.so在linux下用c和c编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过…

Mysql安装后在服务里找不到和服务启动不起来的解决方法

一,在安装完Mysql数据库后,发现在控制面板->管理->服务中找不到Mysql的服务启动 解决方法如下:开启命令行,按照如下步骤即可; 1.进入到mysql的安装包,在bin里执行:mysqld.exe -install …

WINFORM如何只弹出一个子窗体

public partial class Form1:Form{ Form2 fnull; public Form1() { InitializeComponent(); } private void Form1_Click(object sender, EventArg e) { if(fnull||f.IsDisposed) //注意先判断null,再判断IsDisposed,…