RISC-V MCU中文社区

【分享】 【队伍编号CICC1607】Soc视频通路搭建——OV5640摄像头的配置

发表于 全国大学生集成电路创新创业大赛 2022-05-29 13:29:08
0
179
0

Soc视频通路搭建——OV5640摄像头配置

团队名称:就你手搓CPU是吧
报名编号:CICC1607
文章编号:3


我们组计划基于E203内核搭建用于手势识别任务的智能Soc,为了实现图像获取,一个完整的视频通路是必须的,在图像传感器上,我们采用了ov5640作为输入端,下面介绍一下我们的配置方法。

OV5640摄像头简介

OV5640是一款1/4英寸单芯片图像传感器,其感光阵列达到2592*1944(即500W像素),能实现最快15fps QSXVGA(2592*1944)或者90fps VGA(640*480)分辨率的图像采集。其主要引脚如下所示:

管脚 作用 管脚 作用
VCC3.3 3.3V供电 GND 接地
PCLK 像素时钟 PWDN 掉电使能
SCL SCCB通信时钟 SDA SCCB通信数据
VSYNC 帧同步信号 HREF 行同步信号
RESET 复位 DATA[7:0] 数据输出

在OV5640正常工作之前,必须先对传感器进行初始化,即通过配置寄存器使其工作在预期的工作模式,以及得到较好画质的图像。因为SCCB的写传输协议和IIC几乎相同,因此我们可以直接使用IIC的驱动程序来配置摄像头。当然这么多寄存器也并非都需要配置,很多寄存器可以采用默认的值。OV公司提供了OV5640的软件应用手册(OV5640 Software Application Note)

OV5640摄像头配置方法

在实际配置过程中主要分三个模块编写,分别是I2C驱动模块,ov5650 I2C配置模块以及图像获取模块编写,配置完成后的Schematic如下图所示:

采取8位数据转16位RGB565的模式,代码如下所示:

always @(posedge cam_pclk or negedge rst_n) begin
    if(!rst_n) begin
        cmos_data_t <= 16'd0;
        cam_data_d0 <= 8'd0;
        byte_flag <= 1'b0;
    end
    else if(cam_href) begin
        byte_flag <= ~byte_flag;
        cam_data_d0 <= cam_data;
        if(byte_flag)
            cmos_data_t <= {cam_data_d0,cam_data};
        else;   
    end
    else begin
        byte_flag <= 1'b0;
        cam_data_d0 <= 8'b0;
    end    
end

抓取的图像效果如下所示:(640 * 480)

喜欢0
用户评论
XinChen

XinChen 实名认证

Nan

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板