OV7725的帧率和PCLK寄存器设置[通俗易懂]

OV7725的帧率和PCLK寄存器设置[通俗易懂]一、OV7725的PCLK的改变和以下几个寄存器有关:    1:OX0D;2:0X11—————————————————————————————————————————————————

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、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了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190218.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JWT单点登录[通俗易懂]

    JWT单点登录[通俗易懂]项目开发视频:SpringCloud微服务开发入门手把手开发基于SpringBoot的员工管理系统亿度云盘~Java小白入门实战超详细的Java知识点汇总单点登录是什么SSO(SingleSignOn)SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。为什么需要单点登录以前分布式系统的多个相关的应用系统,都需要分别进行登录,非常繁琐。原来登录的过程:1)用户输入账号密码2)提交到后台验证,成功后将用户存在Session中3)需要进行登录状态判

    2022年5月11日
    48
  • Memory barrier 简介

    Memory barrier 简介"Memorybarrier"Memorybarrier简介程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不一定一致,这就是内存乱序访问。内存乱序访问行为出现的理

    2022年7月4日
    21
  • 动态代理

    动态代理

    2021年7月20日
    55
  • Kotlin入门(20)几种常见的对话框

    Kotlin入门(20)几种常见的对话框提醒对话框手机上的App极大地方便了人们的生活,很多业务只需用户拇指一点即可轻松办理,然而这也带来了一定的风险,因为有时候用户并非真的想这么做,只是不小心点了一下而已,如果App不做任何提示的话,继续吭哧吭哧兀自办完业务,比如转错钱了、误删资料了,往往令用户追悔莫及。所以对于部分关键业务,App为了避免用户的误操作,很有必要弹出消息对话框,提醒用户是否真的要进行此项操作。这个提醒对话框便是Ap…

    2022年6月22日
    101
  • html怎么让无序列表横向排列_一个人把敌人的炮兵阵地

    html怎么让无序列表横向排列_一个人把敌人的炮兵阵地司令部的将军们打算在 N×M 的网格地图上部署他们的炮兵部队。一个 N×M 的地图由 N 行 M 列组成,地图的每一格可能是山地(用 H 表示),也可能是平原(用 P 表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响

    2022年8月8日
    6
  • iterator_category

    /**迭代器类型*1.inputierator*2.writeiterator*3.forwarditerator在迭代器所形成的区间上进行读写操作*4.bidir

    2021年12月18日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号