我用的是正点原子里摄像头实验的代码,但我在网上查了好多资料,都调不出来,我想让摄像头的视场更大一点,不知道大家有没有办法。
代码如下:
//éèÖÃí¼Ïñêä3ö′°¿ú
//sx,sy,Æeê¼μØÖ·
//width,height:¿í¶è(¶Ôó|:horizontal)oí¸ß¶è(¶Ôó|:vertical)
void OV2640_Window_Set(u16 sx,u16 sy,u16 width,u16 height)
{
u16 endx;
u16 endy;
u8 temp;
sx=sy=0;
endx=sx+width/2; //V*2
endy=sy+height/2;
SCCB_WR_Reg(0XFF,0X01);
temp=SCCB_RD_Reg(0X03); //¶áè¡Vref֮ǰμÄÖμ
temp&=0XF0;
temp|=((endy&0X03)<<2)|(sy&0X03);
SCCB_WR_Reg(0X03,temp); //éèÖÃVrefμÄstartoíendμÄ×îμí2λ
SCCB_WR_Reg(0X19,sy>>2); //éèÖÃVrefμÄstart¸ß8λ
SCCB_WR_Reg(0X1A,endy>>2); //éèÖÃVrefμÄendμĸß8λ
temp=SCCB_RD_Reg(0X32); //¶áè¡Href֮ǰμÄÖμ
temp&=0XC0;
temp|=((endx&0X07)<<3)|(sx&0X07);
SCCB_WR_Reg(0X32,temp); //éèÖÃHrefμÄstartoíendμÄ×îμí3λ
SCCB_WR_Reg(0X17,sx>>3); //éèÖÃHrefμÄstart¸ß8λ
SCCB_WR_Reg(0X18,endx>>3); //éèÖÃHrefμÄendμĸß8λ
}
//éèÖÃí¼Ïñêä3ö′óD¡
//OV2640êä3öí¼ÏñμÄ′óD¡(·Ö±æÂê),íêè«óé¸Äoˉêyè·¶¨
//width,height:¿í¶è(¶Ôó|:horizontal)oí¸ß¶è(¶Ôó|:vertical),widthoíheight±ØDëêÇ4μı¶êy
//·μ»ØÖμ:0,éèÖÃ3é1|
// ÆäËû,éèÖÃ꧰ü
u8 OV2640_OutSize_Set(u16 width,u16 height)
{
u16 outh;
u16 outw;
u8 temp;
if(width%4)return 1;
if(height%4)return 2;
outw=width/4;
outh=height/4;
SCCB_WR_Reg(0XFF,0X00);
SCCB_WR_Reg(0XE0,0X04);
SCCB_WR_Reg(0X5A,outw&0XFF); //éèÖÃOUTWμÄμí°Ëλ
SCCB_WR_Reg(0X5B,outh&0XFF); //éèÖÃOUTHμÄμí°Ëλ
temp=(outw>>8)&0X03;
temp|=(outh>>6)&0X04;
SCCB_WR_Reg(0X5C,temp); //éèÖÃOUTH/OUTWμĸßλ
SCCB_WR_Reg(0XE0,0X00);
return 0;
}
//éèÖÃí¼Ïñ¿a′°′óD¡
//óé:OV2640_ImageSize_Setè·¶¨′«¸DÆ÷êä3ö·Ö±æÂê′ó′óD¡.
//¸ÃoˉêyÔòÔúÕa¸ö·¶Î§éÏÃæ½øDD¿a′°,óÃóúOV2640_OutSize_SetμÄêä3ö
//×¢òa:±¾oˉêyμÄ¿í¶èoí¸ß¶è,±ØDë′óóúμèóúOV2640_OutSize_SetoˉêyμÄ¿í¶èoí¸ß¶è
// OV2640_OutSize_SetéèÖÃμÄ¿í¶èoí¸ß¶è,¸ù¾Y±¾oˉêyéèÖÃμÄ¿í¶èoí¸ß¶è,óéDSP
// ×Ô¶ˉ¼ÆËãËõ·Å±èày,êä3ö¸øía2¿é豸.
//width,height:¿í¶è(¶Ôó|:horizontal)oí¸ß¶è(¶Ôó|:vertical),widthoíheight±ØDëêÇ4μı¶êy
//·μ»ØÖμ:0,éèÖÃ3é1|
// ÆäËû,éèÖÃ꧰ü
u8 OV2640_ImageWin_Set(u16 offx,u16 offy,u16 width,u16 height)
{
u16 hsize;
u16 vsize;
u8 temp;
if(width%4)return 1;
if(height%4)return 2;
hsize=width/4;
vsize=height/4;
SCCB_WR_Reg(0XFF,0X00);
SCCB_WR_Reg(0XE0,0X04);
SCCB_WR_Reg(0X51,hsize&0XFF); //éèÖÃH_SIZEμÄμí°Ëλ
SCCB_WR_Reg(0X52,vsize&0XFF); //éèÖÃV_SIZEμÄμí°Ëλ
SCCB_WR_Reg(0X53,offx&0XFF); //éèÖÃoffxμÄμí°Ëλ
SCCB_WR_Reg(0X54,offy&0XFF); //éèÖÃoffyμÄμí°Ëλ
temp=(vsize>>1)&0X80;
temp|=(offy>>4)&0X70;
temp|=(hsize>>5)&0X08;
temp|=(offx>>8)&0X07;
SCCB_WR_Reg(0X55,temp); //éèÖÃH_SIZE/V_SIZE/OFFX,OFFYμĸßλ
SCCB_WR_Reg(0X57,(hsize>>2)&0X80); //éèÖÃH_SIZE/V_SIZE/OFFX,OFFYμĸßλ
SCCB_WR_Reg(0XE0,0X00);
return 0;
}
//¸ÃoˉêyéèÖÃí¼Ïñ3ß′ç′óD¡,ò2¾íêÇËùÑ¡¸ñê½μÄêä3ö·Ö±æÂê
//UXGA:1600*1200,SVGA:800*600,CIF:352*288
//width,height:í¼Ïñ¿í¶èoíí¼Ïñ¸ß¶è
//·μ»ØÖμ:0,éèÖÃ3é1|
// ÆäËû,éèÖÃ꧰ü
u8 OV2640_ImageSize_Set(u16 width,u16 height)
{
u8 temp;
SCCB_WR_Reg(0XFF,0X00);
SCCB_WR_Reg(0XE0,0X04);
SCCB_WR_Reg(0XC0,(width)>>3&0XFF); //éèÖÃHSIZEμÄ10:3λ
SCCB_WR_Reg(0XC1,(height)>>3&0XFF); //éèÖÃVSIZEμÄ10:3λ
temp=(width&0X07)<<3;
temp|=height&0X07;
temp|=(width>>4)&0X80;
SCCB_WR_Reg(0X8C,temp);
SCCB_WR_Reg(0XE0,0X00);
return 0;
}
一周热门 更多>