基于FPGA OV7670摄像头初始化配置 |
您所在的位置:网站首页 › 摄像头总是初始化什么原因 › 基于FPGA OV7670摄像头初始化配置 |
目录 一、OV7670摄像头简介 二、ov7670 SCCB协议简介 三、OV7670初始化寄存器配置 四、OV7670初始化代码编写 1、初始化过程 2、RTL设计 五、仿真测试 一、OV7670摄像头简介OV7670/OV7171 图像传感器,体积小、工作电压低,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率8位影响数据。该产品VGA图像最高达到30帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。OmmiVision 图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。 其功能框图如图所示: 所用模块如图: 主要引出的信号引脚如下: SCL:SCCB时钟口 SDA:SCCB数据口 VSYNC:场同步(帧同步)信号 HREF:行同步信号 PCLK:像素时钟 XCLK:系统时钟输入 D0-D7:数据位 RESET:初始化所有寄存器到默认值 0:RESET 模式 1:一般模式 PWDN:POWER DOWN模式选择 0:工作 1:POWER DOWN 其中,对OV7670初始化配置只使用SCL和SDA两个信号线。 二、ov7670 SCCB协议简介对OV7670初始化使用的是SCCB协议,由数据线SDA和时钟线SCL组成,SCCB协议和I2C协议基本一样,是简化的I2C协议,前面博客中已经讲过I2C协议,需要可以去看看。 SCCB(SeriaI Camera ControlBus)是简化的I2C协议,SIO-l是串行时钟输入线,SIO-O是串行双向数据线,分别相当于I2C协议的SCL和SDA。SCCB的总线时序与I2C基本相同,它的响应信号ACK被称为一个传输单元的第9位,分为Don’t care和NA。Don’t care位由从机产生;NA位由主机产生,由于SCCB不支持多字节的读写,NA位必须为高电平。另外,SCCB没有重复起始的概念,因此在SCCB的读周期中,当主机发送完片内寄存器地址后,必须发送总线停止条件。不然在发送读命令时,从机将不能产生Don’t care响应信号。 其写周期如下: (1)首先发送设备ID地址: (2)发送寄存器地址 (3)写寄存器数据 SCCB时序图如图: 这里采用的是100KHz的SCL。 三、OV7670初始化寄存器配置在OV7670数据手册中只讲了其各种寄存器的列表,没有对具体如何配置进行讲解,可以看一下《OV7670 software application note》这个手册,里边有讲如何配置OV7670寄存器。 OV7670摄像头共201个寄存器,需要配置的有一百六十几个,这个具体看数据手册吧,下边代码中会有配置寄存器的数据。 四、OV7670初始化代码编写 1、初始化过程(1)上电等待3ms等电平稳定 (2)发送初始化开始标志,通过SCCB协议对寄存器进行配置 (3)配置结束后,发送初始化完成标志,供后边读取图像数据作为开始标志。 2、RTL设计(1)SCCB发送模块,因为没用用到读的功能,这里只写了SCCB的写数据功能。 // Company : // Engineer : // ----------------------------------------------------------------------------- // https://blog.csdn.net/qq_33231534 PHF's CSDN blog // ----------------------------------------------------------------------------- // Create Date : 2020-09-11 16:53:19 // Revise Data : 2020-09-11 16:53:19 // File Name : SCCB_sender.v // Target Devices : XC7Z015-CLG485-2 // Tool Versions : Vivado 2019.2 // Revision : V1.1 // Editor : sublime text3, tab size (4) // Description : SCCB接口协议发送数据,用于OV7670,线性序列机编写代码 module SCCB_sender( input clk ,//系统时钟50MHz input rst_n ,//系统复位 input send_en ,//发送使能 input [7:0] addr ,//发送寄存器地址 input [7:0] value ,//发送寄存器地址对应数据 output reg done ,//发送结束标志 output reg state ,//发送状态,忙为0,不忙为1 output reg scl ,//输出时钟线 inout sda //输出数据线 ); reg [7:0] addr_r; reg [7:0] value_r; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin addr_r |
今日新闻 |
点击排行 |
|
推荐新闻 |
|
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |