這樣我們就可以寫一個簡單的函數來設置 OV7670 的分辨率了
輸入圖像的行起始點,場起始點, 寬度 ,高度計算得到相應寄存器的值 編譯環境:keil mdk
void OV7670_config_window(u16 startx,u16 starty,u16 width, u16 height)
{
u16 endx=(startx+width*2)%784;
u16 endy=(starty+height*2);
u8 x_reg, y_reg;
u8 state,temp;
state = rdOV7670Reg(0x32, &x_reg );
x_reg &= 0xC0;
state = rdOV7670Reg(0x03, &y_reg );
y_reg &= 0xF0;
//設置 HREF
temp = x_reg|((endx&0x7)<<3)|(startx&0x7);
state = wrOV7670Reg(0x32, temp );
temp = (startx&0x7F8)>>3;
state = wrOV7670Reg(0x17, temp );
temp = (endx&0x7F8)>>3;
state = wrOV7670Reg(0x18, temp );
//設置 VREF
temp = y_reg|((endy&0x3)<<2)|(starty&0x3);
state = wrOV7670Reg(0x03, temp );
temp = (starty&0x3FC)>>2;
state = wrOV7670Reg(0x19, temp );
temp = (endy&0x3FC)>>2;
state = wrOV7670Reg(0x1A, temp );
}