ov7670的窗口大小设置函数(VGA,QVGA都验证过)

2019-07-20 19:11发布


如果是VGA输出的话, 宏定义     #define SET_WINDOW_AGAIN   1
如果是QVGA输出的话, 宏定义   #define SET_WINDOW_AGAIN   2


//QVGA调用函数   OV7670_Window_Set(184,10,320,240);
//VGA调用函数   OV7670_Window_Set(184,10,640,480);
void OV7670_Window_Set(u16 sx,u16 sy,u16 width,u16 height)
{
        u16 endx;
        u16 endy;
        u8 temp;
       
       
        //SET_WINDOW_AGAIN:      VGA是1    QVGA是2
        endx=(sx+width*SET_WINDOW_AGAIN)%784;        //   sx:HSTART endx:HSTOP   
        endy=sy+height*SET_WINDOW_AGAIN;                //   sy:VSTRT endy:VSTOP               
       
        //设置HREF
        OV_ReadReg(0X32,&temp);                                //读取Href之前的值
        temp&=0XC0;
        temp|=((endx&0X07)<<3)|(sx&0X07);       
        OV_WriteReg(0X32,temp);
                OV_WriteReg(0X17,(sx&0x7f8)>>3);                        //设置Href的start高8位
        OV_WriteReg(0X18,(endx&0x7f8)>>3);                        //设置Href的end的高8位

        //设置VREF
        OV_ReadReg(0X03,&temp);                                //读取Vref之前的值
        temp&=0XF0;
        temp|=((endy&0X03)<<2)|(sy&0X03);
        OV_WriteReg(0X03,temp);                                //设置Vref的start和end的最低2位
                OV_WriteReg(0X19,(sy&0x3fc)>>2);                        //设置Vref的start高8位
        OV_WriteReg(0X1A,(endy&0x3fc)>>2);                        //设置Vref的end的高8位


}

0条回答

一周热门 更多>