0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

与初始化相关的重要寄存器介绍

FPGA之家 来源:FPGA之旅 作者:FPGA之旅 2022-10-18 09:18 次阅读

在上例中,介绍了配置OV5640所需的SCCB时序,以及具体的实现。本例将介绍与初始化相关的重要寄存器,以及上电时序

OV5640的寄存器非常多,从它的寄存器的地址为16bit就可以看出,在商家提供的一些例程中,可以看到配置寄存器的语句多达200行,无法一时间学习掌握所有的寄存器。所以只需要掌握一些重要即可,例如控制图像输出格式、控制图像输出大小、控制图像输出帧率的寄存器。下面就开始介绍吧

二. 重要寄存器讲解

一般来说,只需要了解三大类寄存器即可 :时钟PCLK输出频率寄存器 , 图像输出大小寄存器 , 图像输出格式寄存器

1

时钟PCLK输出频率寄存器

PCLK时钟主要由0x3035 - 0x3037三个寄存器控制(其余寄存器也有,可以不看),详情如下,一般来说完整的配置参数会给你配置到48MHz / 84MHz,如果想要配置成其他的频率,可以调整0x3036寄存器的值即可。具体是怎么对应的话,手册上好像没有给出。

2f57d13a-4e76-11ed-a3b6-dac502259ad0.png

2

图像输出大小寄存器

这部分比较关键,同时也比较容易,看下面这张图片即可,physical pixel size为物理感光的尺寸,也就是摄像头能够感光的大小。ISP input size为图像处理单元输入的大小,由物理感光的尺寸经过一定的处理,输入进ISP进行处理,data output size 为实际摄像头输出的像素大小,为经过ISP进行处理缩放之后的图像数据。

在实际使用的过程中,只需要关心data output size的大小即可。即只需要配置0x3808-0x3809 和0x380a-0x380b四个寄存器即可。

2f5e1b58-4e76-11ed-a3b6-dac502259ad0.png

另外,有四个寄存器也是需要关注的,0x380c-0x380f,这四个寄存器分别配置水平输出的像素总个数,以及竖直输出像素的总个数,这个配置要比data output size要大,和VGA的行列消影类似

2f683fca-4e76-11ed-a3b6-dac502259ad0.png

3

为奥运健儿喝彩

这个配置只需要配置0x4300寄存器即可,类别比较多,可以自行查看手册。

以上需要关注的寄存器,都是在其他寄存器配置好的前提下,然后进行修改。完整的寄存器配置可以去正点原子或者GitHub上copy,本例使用的是在GitHub上copy下来的。

三. 上电时序讲解

这部分在手册中给出,通过下图,可以看出,还是比较容易的。初始化时序只需要看到t4结束,后面就不要管了,后面是掉电时序。

第一步. 上电后,将PWDN拉高,RESETB拉低

第二步. 延时大于等于t2(5ms)时间后,将PWDN拉低,并且一直保持

第三步. 在延时大于等于t3(1ms)时间后,将RESETB拉高,将PWDN拉低,并且一直保持

第四步.最后延时t4(20ms),完成上电

完成上电后,即可开始SCCB对寄存器进行初始化

2f6f90fe-4e76-11ed-a3b6-dac502259ad0.png

四. 程序介绍

程序主要包括三个部分,上电时序,然后是寄存器初始化,最后就是接收图像数据了。这部分比较容易,就不做介绍了。

always@(*)
begin
  case(state)
  S_POWER_UP:
    if( ov5640_powerup_ack == 1'b1 )
      next_state <= S_INIT;
        else
            next_state <= S_POWER_UP;
    S_INIT:
        if( ov5640_init_ack == 1'b1 )
            next_state <= S_WORK;
        else
            next_state <= S_INIT;
    S_WORK:
        next_state <= S_WORK;


    default : next_state <= S_POWER_UP;
    endcase
end

最终ov5640配置为640 x 480 大小的输出,通过逻辑分析仪可以看到每一行输出1280个数据,也就是640个像素点(每次输出8bit,两种时钟输出一个完整的RGB565数据)。

2f941cd0-4e76-11ed-a3b6-dac502259ad0.png

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5281

    浏览量

    119746
  • 摄像头
    +关注

    关注

    59

    文章

    4787

    浏览量

    95210
  • 时序
    +关注

    关注

    5

    文章

    384

    浏览量

    37244

原文标题:FPGA驱动OV5640上电及初始化(下)

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    tas6422默认的寄存器配置可以使用吗,驱动中如何进行相关初始化

    tas6422默认的寄存器配置可以使用吗,驱动中如何进行相关初始化
    发表于 10-14 06:17

    norflash初始化没有设置bank0相关寄存器

    一期视频,我们3c2440 sdram接在bangk6,对sdram操作时,会先初始化,设置bank6相关寄存器,但norflash 接在bank0,对norflash操作时,为何没有设置
    发表于 04-02 01:27

    如何对PWM寄存器进行初始化配置

    PWM的输出原理是什么?PWM寄存器的配置步骤有哪些?如何对PWM寄存器进行初始化配置?
    发表于 08-02 10:02

    STM32初始化和配置相关函数

    初始化和配置相关函数1.voidGPIO_DeInit(GPIO_TypeDef* GPIOx)函数解释:gpio的反初始化函数,该函数的作用是把GPIO相关
    发表于 08-23 07:57

    蜂鸟内部通用寄存器为什么不做复位初始化

    蜂鸟内部通用寄存器为什么不做复位初始化? 如果不做初始化,当 进行 中断断点保护时,一些未用到的寄存器 和 临时寄存器(未被使用)会被压栈进
    发表于 08-16 06:57

    51单片机对SAA7113初始化和控制的程序

      用51单片机对7113初始化和控制   SAA7113的初始化就是对寄存器配置合适的参数,使其能够有符合要求的输出。寄存器配置通过I2C总线来进行,很多可以控制I2C总线的
    发表于 09-08 11:50 2032次阅读

    移位寄存器初始化

    Labview之移位寄存器初始化,很好的Labview资料,快来下载学习吧。
    发表于 04-19 10:56 0次下载

    如何初始化miniDSPCodec和基于MCU控制的参考代码详细中文资料

    寄存器是miniDSP 内存映射到I2C/SPI 控制端口的寄存器地址,主控制可以通过该地址进行初始化及控制。
    发表于 04-28 10:25 7次下载
    如何<b class='flag-5'>初始化</b>miniDSPCodec和基于MCU控制<b class='flag-5'>器</b>的参考代码详细中文资料

    51单片机串口通讯初始化程序及及特殊功能寄存器设置的资料说明

    本文档的主要内容详细介绍的是51单片机串口通讯初始化程序及及特殊功能寄存器设置的资料说明免费下载。
    发表于 08-21 17:31 6次下载
    51单片机串口通讯<b class='flag-5'>初始化</b>程序及及特殊功能<b class='flag-5'>寄存器</b>设置的资料说明

    C51s常用特殊寄存器及其初始化

    C51中断、定时、串口常用特殊寄存器使用以及初始化1.中断系统系统结构如下:中断初始化:void main(){ IE = 0x81; //假设只用外部中断0,这里就可以让IE为0x
    发表于 11-22 18:06 6次下载
    C51s常用特殊<b class='flag-5'>寄存器</b>及其<b class='flag-5'>初始化</b>

    CC2530中断初始化和中断函数

    相关寄存器在cc2530中文数手册中2.4小节中断初始化其实中断的初始化可以参照引脚的初始化,即4个寄存
    发表于 11-29 19:06 9次下载
    CC2530中断<b class='flag-5'>初始化</b>和中断函数

    【嵌入式07】寄存器映射原理详解,GPIO端口的初始化设置步骤

    本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置三步骤(时钟配置、输入输出模式设置、最大速率设置)。
    发表于 12-04 12:06 11次下载
    【嵌入式07】<b class='flag-5'>寄存器</b>映射原理详解,GPIO端口的<b class='flag-5'>初始化</b>设置步骤

    STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化

    文章目录一、STM32F103系列芯片的地址映射和寄存器映射原理1.寄存器2.地址映射和寄存器映射原理二、GPIO端口的初始化1.GPIO简介2.GPIO输入、输出模式及说明2.1浮空
    发表于 12-05 14:21 10次下载
    STM32F103系列芯片的地址映射和<b class='flag-5'>寄存器</b>映射原理,GPIO端口的<b class='flag-5'>初始化</b>

    寄存器与静态库

    实现初始化时钟LED灯初始化LED灯闪烁三、库函数例程0.准备阶段1.目标任务拆分2.目标实现初始化时钟LED灯初始化LED灯闪烁两者比较前言读者在学习8位单片机时是否经历过记忆大量
    发表于 01-13 12:43 3次下载
    <b class='flag-5'>寄存器</b>与静态库

    MSP430F5529硬件IIC驱动OLED(初始化使用的寄存器)

    MSP430F5529硬件IIC驱动OLED(初始化使用的寄存器)
    发表于 11-24 16:36 1次下载