初级会员

- 积分
- 155
- 金钱
- 155
- 注册时间
- 2019-10-19
- 在线时间
- 46 小时
|

楼主 |
发表于 2020-5-19 11:34:38
|
显示全部楼层
这是OV2640(配套F407):
//设置传感器输出窗口
//sx,sy,起始地址
//width,height:宽度(对应:horizontal)和高度(对应:vertical)
void OV2640_Window_Set(u16 sx,u16 sy,u16 width,u16 height)//pnhhit 还有不清楚的地方,传感器输出窗口的开始和结束 是相对 谁?
{
u16 endx;
u16 endy;
u8 temp;
endx=sx+width/2; //V*2 pnhhit 好像不对,起始和结束好像都是要取1/2,但是默认配置142 942(1884) 不是超过了1632吗?
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的start和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的start和end的最低3位
SCCB_WR_Reg(0X17,sx>>3); //设置Href的start高8位
SCCB_WR_Reg(0X18,endx>>3); //设置Href的end的高8位
}
根据OV2640的资料,前12行是不能用的,那么sx显然不能为0;我理解是sx和sy值是起始点坐标值得1/2,endx和endy也是坐标值的1/2 。但是两个坐标(行,列)都应该在(12,0)到(1231,1632)内。我读取过默认UXGA(1600*1200分辨率),我发现行起始坐标是142,结束坐标是942,差值是800,即800*2=1600.但是942*2=1884,不是超过了1632吗?我疑问就是这里! |
|