网站建设有什么意见,博客网站开发利用数据库,pascal建设网站,做网站投资太大 网站也没搞起来目录
一、摄像头基础
1.1 OV2640参数
1.2 视场角与镜头
二、OV2640驱动
三、OV2640视频接入
四、OV2640 200W JPG拍照实现
五、总结
一、摄像头基础
1.1 OV2640参数 选型时我们需要关注的通用指标是焦距,视场角,拍摄分辨率等信息。另外还需根据硬件板子情况…目录
一、摄像头基础
1.1 OV2640参数
1.2 视场角与镜头
二、OV2640驱动
三、OV2640视频接入
四、OV2640 200W JPG拍照实现
五、总结
一、摄像头基础
1.1 OV2640参数 选型时我们需要关注的通用指标是焦距,视场角,拍摄分辨率等信息。另外还需根据硬件板子情况来综合考虑。一般MCU芯片不支持MIPI接口,只能并口接入视频图像,这种情况就只能选择OV2640这种并口输出的sensor。ARM芯片一般都支持MIPI接口这时可以考虑性能更高的sensor,比如OV5640,OV2710。此外还需根据嵌入式板子的硬件供电情况来综合考虑。如下是OV2710的通用技术指标: 1.2 视场角与镜头 二、OV2640驱动
如下只是实例代码,完整代码请点此处下载
#include "fsl_ov2640.h"
#include "ov2640cfg.h"
#include "ov2640_jpeg.h"
#include "fsl_common.h"
#include "board.h"/******************************************************************************** Definitions******************************************************************************/
#define OV2640_SCCB_ADDR (0x601)
#define OV2640_REVISION 0x2642Ustatus_t OV2640_WriteReg(uint8_t reg, uint8_t val)
{uint8_t i = 0;status_t WriteStatus = 0;for( i = 0 ;i 3; i++ ){WriteStatus = BOARD_Camera_I2C_SendSCCB(OV2640_SCCB_ADDR, reg, kSCCB_RegAddr8Bit, val, 1);if( WriteStatus == kStatus_Success)break;elsert_kprintf("WriteStatus = %d\r\n",WriteStatus);}return WriteStatus;
} status_t OV2640_ReadReg(uint8_t reg, uint8_t *val)
{return BOARD_Camera_I2C_ReceiveSCCB(OV2640_SCCB_ADDR, reg, kSCCB_RegAddr8Bit, val, 1);
} typedef struct _ov2640_reg
{uint8_t reg;uint8_t val;
} ov2640_reg_t;/******************************************************************************** Prototypes******************************************************************************///OV2640切换为JPEG模式
void OV2640_JPEG_Mode( void);
//OV2640切换为RGB565模式
void OV2640_RGB565_Mode( void);
void OV2640_RegSet( uint8_t mode);
/******************************************************************************** Variables******************************************************************************/
static const ov2640_reg_t ov2640_RA_DLMT_Regs[] = {{OV2640_DSP_RA_DLMT, 0x01},{OV2640_COM7_REG, 0x80}
};/******************************************************************************** Code******************************************************************************/
static void OV2640_DelayMs(uint32_t ms)
{VIDEO_DelayMs(ms);
}static status_t OV2640_WriteRegs(const ov2640_reg_t regs[], uint32_t num)
{status_t status = kStatus_Success;for (uint32_t i = 0; i num; i++){status = OV2640_WriteReg(regs[i].reg, regs[i].val);if (kStatus_Success != status){break;}}return status;
}static status_t OV2640_SoftwareReset(void)
{return OV2640_WriteReg(OV2640_COM7_REG, 0x80);
}void ov2640_jpg_rgb565_set(void);
void ov2640_jpg_photo_set(void);status_t OV2640_Reg_Init(uint8_t mode)//0--rgb565 1--photo
{status_t status;uint8_t pid = 0U, ver = 0U;status = OV2640_WriteRegs(ov2640_RA_DLMT_Regs, ARRAY_SIZE(ov2640_RA_DLMT_Regs));if (kStatus_Success != status){return status;}/* Identify the device. */status = OV2640_ReadReg(OV2640_PID_REG, pid);//0x0Aif (kStatus_Success != status){return status;}status = OV2640_ReadReg(OV2640_VER_REG, ver);//0x0BUif (kStatus_Success != status){return status;}if (OV2640_REVISION != (((uint32_t)pid 8U) | (uint32_t)ver)){return kStatus_Fail;}rt_kprintf("----camera id read ok %d %d\n", ver,rt_tick_get());rt_kprintf("----camera id read : 0x%x %d\n", (((uint32_t)pid 8U) | (uint32_t)ver),rt_tick_get());OV2640_RegSet(mode);//0--rgb565 1--photort_kprintf("----OV2640_Reg_Init ok %d\r\n",rt_tick_get());return 0;
}void OV2640_svga_15fps(void)
{OV2640_WriteReg( 0XFF,0X01);OV2640_WriteReg( 0X11,0X01);OV2640_WriteReg(0x12, 0x40);OV2640_Wr