正在学习OV2640模块,STM32F407+OV2640,STM32F4中断采集图片,通过串口传到上位机,分辨率1600*1200,图像已经可以显示出来,但每张图片大小仅仅4K,纠结了好几天,实在没找到答案,求帮忙解答
焦距已经调到最佳,摄像头距离物体80cm,是不是分辨率有错
[mw_shl_code=c,true]int main(void)
{
Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
delay_init(168); //初始化延时函数
uart_init(84,115200); //初始化串口波特率为115200
//usart3_init(42,115200); //初始化串口3
usart2_init(); //初始化串口3
u1_printf("usart1_init OK
");
u1_printf("usart2_init OK
");
u1_printf("usart3_init OK
");
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
while(OV2640_Init()); //摄像头初始化
OV2640_ImageWin_Set(0,0,1600,1200); //设置图像开窗大小
OV2640_ImageSize_Set(1600,1200);//该函数设置图像尺寸大小,也就是所选格式的输出分辨率
u1_printf("摄像头初始化 OK
");
delay_ms(200);
MNDCMI_Init(); //DCMI配置
Open_NVIC(EXTI4_IRQn);
while(1)
{
if(DMCI_OK==1)
{
// u1_printf("数据已经准备好 OK
");
// usart_sendJPEGdata();
Stop_NVIC(EXTI4_IRQn);
while(OV2640_Init()); //摄像头初始化
OV2640_ImageWin_Set(0,0,1600,1200); //设置图像开窗大小
OV2640_ImageSize_Set(1632,1220);//该函数设置图像尺寸大小,也就是所选格式的输出分辨率
// OV2640_Window_Set(2,2,1600,1200);//设置图像输出窗口
// OV2640_OutSize_Set(1600,1200);//设置图像输出大小
//OV2640_Light_Mode(0);//白平衡设置 0:自动//1:太阳sunny//2,阴天cloudy//3,办公室office//4,家里home
// OV2640_Auto_Exposure(0);//OV2640自动曝光等级设置 level:0~4
// OV2640_Color_Saturation(0);// {MOD}度设置//0:-2//1:-1//2,0//3,+1//4,+2
//OV2640_Brightness(0);//亮度设置//0
0X00)-2//1
0X10)-1//2,(0X20) 0//3,(0X30)+1//4,(0X40)+2
//OV2640_Contrast(0);//对比度设置//0:-2//1:-1//2,0//3,+1//4,+2
DMCI_OK=0;
Open_NVIC(EXTI4_IRQn);
}
}
}
#ifndef _OV2640CFG_H
#define _OV2640CFG_H
#include "ov2640.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32F407开发板
//OV2640 驱动代码
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2014/5/14
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2014-2024
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
//OV2640 SXGA初始化寄存器序列表
//此模式下帧率为15帧
//SXGA(1600*1200)
const u8 ov2640_sxga_init_reg_tbl[][2]=
{
//不变的
0xff, 0x00, //0xff set to 0x00
0x2c, 0xff, //rsvd
0x2e, 0xdf, //rsvd
0xff, 0x01, //0xff set to 0x01
0x3c, 0x32, //rsvd
//分频
0x11, 0x30, //CLKRC BIT[5:0] CLK=XVCLK/(bit[5:0]+1)
0x09, 0x02, //COM2
//改变摄像头采集方向
0x04, 0x28, //REG04 原来的
// 0x04, 0xD8,//水平镜像,垂直翻转
0x13, 0xe5, //COM8
0x14, 0x48, //COM9
0x2c, 0x0c, //rsvd
0x33, 0x78, //rsvd
0x3a, 0x33, //rsvd
0x3b, 0xfB, //rsvd
0x3e, 0x00, //rsvd
0x43, 0x11, //rsvd
0x16, 0x10, //rsvd
0x39, 0x92, //rsvd
//没变化
//******************************//
//MCLK 24Mhz, SVGA RGB565 output 25fps
//OV2640_SVGA_YUV_AM 14.3 fps 24 MHz
//原来的
/*********************************
0x35, 0xda, //rsvd
0x22, 0x1a, //rsvd
0x37, 0xc3, //rsvd
0x23, 0x00, //rsvd
0x34, 0xc0, //ARCOM2
0x36, 0x1a, //rsvd
0x06, 0x88, //rsvd
0x07, 0xc0, //rsvd
0x0d, 0x87, //COM4
0x0e, 0x41, //rsvd
0x4c, 0x00, //rsvd
*********************************/
//******************************//
// OV2640_UXGA_YUV_AM 7.5 fps 24 MHz
/*********************************/
0x35, 0x88,
0x22, 0x0a,
0x37, 0x40,
0x23, 0x00,
0x34, 0xa0,
0x36, 0x1a,
0x06, 0x02,
0x07, 0xc0,
0x0d, 0xb7,
0x0e, 0x01,
0x4c, 0x00,
/*********************************/
0x48, 0x00, //COM19
0x5B, 0x00, //rsvd
0x42, 0x03, //rsvd
0x4a, 0x81, //rsvd
0x21, 0x99, //rsvd
0x24, 0x40, //AEW
0x25, 0x38, //AEB
0x26, 0x82, //VV
0x5c, 0x00, //rsvd
0x63, 0x00, //rsvd
0x46, 0x00,
0x0c, 0x38,
0x61, 0x70, //HISTO_LOW
0x62, 0x80, //HISTO_HIGH
0x7c, 0x05, //rsvd
0x20, 0x80, //rsvd
0x28, 0x30, //rsvd
0x6c, 0x00, //rsvd
0x6d, 0x80, //rsvd
0x6e, 0x00, //rsvd
0x70, 0x02, //rsvd
0x71, 0x94, //rsvd
0x73, 0xc1, //rsvd
0x3d, 0x34,
0x5a, 0x57,
0x12, 0x00,//UXGA 1600*1200
// 0x12, 0x40, //COM7 0x40 for SVGA mode 0x20 for CIF mode
0x17, 0x11, //HREFST
0x18, 0x43, //HREFEND
0x19, 0x00, //VSTRT
0x1a, 0x4b, //VEND
0x32, 0x09, //REG32
0x37, 0xc0, //resvd
0x4f, 0x60, //DB50
0x50, 0xa8, //DB60
0x6d, 0x00, //rsvd
0x3d, 0x38, //rsvd
0x46, 0x3f, //FLL
0x4f, 0x60, //DB50
0x0c, 0x3c, //COM3
0xff, 0x00, //0xff set to 0x00
0xe5, 0x7f, //rsvd
0xf9, 0xc0, //MC_BIST
0x41, 0x24, //rsvd
0xe0, 0x14, //RESET
0x76, 0xff, //rsvd
0x33, 0xa0, //rsvd
0x42, 0x20, //rsvd
0x43, 0x18, //rsvd
0x4c, 0x00, //rsvd
0x87, 0xd5, //CTRL3
0x88, 0x3f, //rsvd
0xd7, 0x03, //rsvd
0xd9, 0x10, //rsvd
// 0xd3, 0x82, //R_DVP_SP set 1/12 XCLK default 0x82,
0xc8, 0x08, //rsvd
0xc9, 0x80, //rsvd
// 0x7c, 0x00, //BPADDR[3:0]
// 0x7d, 0x00, //BPADDR[7:0]
// 0x7c, 0x03, //BPADDR[3:0]
// 0x7d, 0x48, //BPADDR[7:0]
// 0x7d, 0x48, //BPADDR[7:0]
0x7c, 0x08, //BPADDR[3:0]
// 0x7d, 0x20, //BPADDR[7:0]
// 0x7d, 0x10, //BPADDR[7:0]
0x7d, 0x0e, //BPADDR[7:0]
0x90, 0x00, //rsvd
/* 0x91, 0x0e, //rsvd
0x91, 0x1a, //rsvd
0x91, 0x31, //rsvd
0x91, 0x5a, //rsvd
0x91, 0x69, //rsvd
0x91, 0x75, //rsvd
0x91, 0x7e, //rsvd
0x91, 0x88, //rsvd
0x91, 0x8f, //rsvd
0x91, 0x96, //rsvd
0x91, 0xa3, //rsvd
0x91, 0xaf, //rsvd
0x91, 0xc4, //rsvd
0x91, 0xd7, //rsvd
0x91, 0xe8, //rsvd */
0x91, 0x20, //rsvd
0x92, 0x00, //rsvd
/* 0x93, 0x06, //rsvd
0x93, 0xe3, //rsvd
0x93, 0x05, //rsvd
0x93, 0x05, //rsvd
0x93, 0x00, //rsvd
0x93, 0x04, //rsvd
0x93, 0x00, //rsvd
0x93, 0x00, //rsvd
0x93, 0x00, //rsvd
0x93, 0x00, //rsvd
0x93, 0x00, //rsvd
0x93, 0x00, //rsvd */
0x93, 0x00, //rsvd
0x96, 0x00, //rsvd
/* 0x97, 0x08, //rsvd
0x97, 0x19, //rsvd
0x97, 0x02, //rsvd
0x97, 0x0c, //rsvd
0x97, 0x24, //rsvd
0x97, 0x30, //rsvd
0x97, 0x28, //rsvd
0x97, 0x26, //rsvd
0x97, 0x02, //rsvd
0x97, 0x98, //rsvd
0x97, 0x80, //rsvd
0x97, 0x00, //rsvd */
0x97, 0x00, //rsvd
0xc3, 0xed, //CTRL1
0xa4, 0x00, //rsvd
0xa8, 0x00, //rsvd
0xc5, 0x11, //rsvd
0xc6, 0x51, //rsvd
0xbf, 0x80, //rsvd
0xc7, 0x10, //rsvd
0xb6, 0x66, //rsvd
0xb8, 0xA5, //rsvd
0xb7, 0x64, //rsvd
0xb9, 0x7C, //rsvd
0xb3, 0xaf, //rsvd
0xb4, 0x97, //rsvd
0xb5, 0xFF, //rsvd
0xb0, 0xC5, //rsvd
0xb1, 0x94, //rsvd
0xb2, 0x0f, //rsvd
0xc4, 0x5c, //rsvd
0xc0, 0x64, //HSIZE8[7:0]
0xc1, 0x4B, //VSIZE8[7:0]
0x8c, 0x00, //SIZEL[5:0]
0x86, 0x3D, //CTRL2
0x50, 0x00, //CTRL1[7:0]
0x51, 0xC8, //HSIZE[7:0]
0x52, 0x96, //VSIZE[7:0]
0x53, 0x00, //XOFFL[7:0]
0x54, 0x00, //YOFFL[7:0]
0x55, 0x00, //VHYX[7:0]
0x5a, 0xC8, //ZMOW[7:0]
0x5b, 0x96, //ZMOH[7:0]
0x5c, 0x00, //ZMHH[1:0]
/*
0xc0, 0x16, //set QCIF,see OV2640 datasheet P18
0xc1, 0x12, //
0x8c, 0x00, //0x8c是HSIZE和VSIZE的低3位,这里配置为0,就相当于实际分辨率,然后除以8,就是0XC0和0XC1的值
0x86, 0x3D,
0x50, 0x00, //
0x51, 0x2c, //H_SIZE,V_SIZE,配置值是实际分辨率/4
0x52, 0x24,
0x53, 0x00,
0x54, 0x00,
0x55, 0x00,
0x5a, 0x2c, //OUT_W、OUT_H,配置值是实际分辨率/4
0x5b, 0x24,
0x5c, 0x00,
*/
0xd3, 0x7f, //R_DVP_SP {0xd3, 0x82} changed
0xc3, 0xed, //CTRL1
0x7f, 0x00, //rsvd
0xda, 0x00, //IMAGE_MODE image output format select
0xe5, 0x1f, //revd
0xe1, 0x67, //rsvd
0xe0, 0x00, //RESET
0xdd, 0x7f, //rsvd
0x05, 0x00, //R_BYPASS
0xe0, 0x04, //RESET
0xc0, 0x16, //HSIZE8[7:0] set QCIF,see OV2640 datasheet P18
0xc1, 0x12, //VSIZE8[7:0]
0x8c, 0x00, //SIZEL[5:0]
0x86, 0x3D, //CTRL2
0x50, 0x00, //CTRL1[7:0]
0x51, 0x2c, //HSIZE[7:0]
0x52, 0x24, //VSIZE[7:0]
0x53, 0x00, //XOFFL[7:0]
0x54, 0x00, //YOFFL[7:0]
0x55, 0x00, //VHYX[7:0]
0x5a, 0x2c, //ZMOW[7:0]
0x5b, 0x24, //ZMOH[7:0]
0x5c, 0x00, //ZMHH[1:0]
0xd3, 0x7f, //R_DVP_SP set DVP PCLK
0xFF,0x00,
0x05,0x00,
0xDA,0x00, //0x00 for High byte first YUYV ,0x01 Low byte first UYVY
0xD7,0x03, //{0xD7, 0x01},
0x33,0xa0, //version 1.01
0xe1,0x67, //version 1.01
0x00,0x00,
0xe0, 0x00, //RESET
//然后是JPEG配置参数:
0xFF, 0x00,
0xe0, 0x00, //{0xe0, 0x14}
0x05, 0x00,
0x44, 0x03, //
0xDA, 0x10,
0xD7, 0x03,
0xDF, 0x00,
0x33, 0x80, //{0x33, 0x80},
0x3C, 0x40, //{0x3C, 0x40},
0xe1, 0x77, //{0xe1, 0x77},
};
#endif
[/mw_shl_code]
一周热门 更多>