OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 17675|回复: 19

OV2640图片像素大小怎么配置?

[复制链接]

6

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2012-7-28
在线时间
0 小时
发表于 2014-8-20 20:01:50 | 显示全部楼层 |阅读模式
5金钱
小弟现在正在调试ov2640,已经的到了图像,但是图像大小不知道怎么改变,主要是寄存器太多,不知道怎么配置,改变图片大小是不是还要改变时钟分频系数?希望知道的大神指点,有相关的资料也行,谢谢!!

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c,true]//设置图像输出窗口 //sx,sy,起始地址 //width,height:宽度(对应:horizontal)和高度(对应:vertical) void OV2640_Window_Set(u16 sx,u16 sy,u16 width,u16 height) { u16 endx; u16 endy; u8 temp; 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&0X0 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-8-20 20:01:51 | 显示全部楼层
[mw_shl_code=c,true]//设置图像输出窗口 //sx,sy,起始地址 //width,height:宽度(对应:horizontal)和高度(对应:vertical) void OV2640_Window_Set(u16 sx,u16 sy,u16 width,u16 height) { u16 endx; u16 endy; u8 temp; 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的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输出图像的大小(分辨率),完全由改函数确定 //width,height:宽度(对应:horizontal)和高度(对应:vertical),width和height必须是4的倍数 //返回值:0,设置成功 // 其他,设置失败 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; } //设置图像开窗大小 //由:OV2640_ImageSize_Set确定传感器输出分辨率从大小. //该函数则在这个范围上面进行开窗,用于OV2640_OutSize_Set的输出 //注意:本函数的宽度和高度,必须大于等于OV2640_OutSize_Set函数的宽度和高度 // OV2640_OutSize_Set设置的宽度和高度,根据本函数设置的宽度和高度,由DSP // 自动计算缩放比例,输出给外部设备. //width,height:宽度(对应:horizontal)和高度(对应:vertical),width和height必须是4的倍数 //返回值:0,设置成功 // 其他,设置失败 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; } //该函数设置图像尺寸大小,也就是所选格式的输出分辨率 //UXGA:1600*1200,SVGA:800*600,CIF:352*288 //width,height:图像宽度和图像高度 //返回值:0,设置成功 // 其他,设置失败 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; } [/mw_shl_code]

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2012-7-28
在线时间
0 小时
 楼主| 发表于 2014-8-21 19:06:42 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
 问题已经解决了,成功得到1600*1200大小的图像,不过还是谢谢原子大哥,我的做法是窗口全开,但是输出像素大小改变时,必须改变CLKRC分频系数,否则图像数据不稳定,容易丢失!这又是什么问题呢?
回复

使用道具 举报

6

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2012-7-28
在线时间
0 小时
 楼主| 发表于 2014-8-21 19:08:48 | 显示全部楼层
OV的芯片手册中只有寄存器的功能描述,没讲具体配置时该怎么用!
回复

使用道具 举报

6

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2012-7-28
在线时间
0 小时
 楼主| 发表于 2014-8-21 19:13:37 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子大哥还有别的什么资料吗?官方的资料坑爹啊,一句注释都没有!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-8-21 23:26:59 | 显示全部楼层
回复【5楼】兀本:
---------------------------------
没有哦
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-9-19
在线时间
0 小时
发表于 2014-9-19 19:18:56 | 显示全部楼层
请问楼主,要输出1600X1200图片,寄存器应该配置,代码能发一份吗,taoweitao210@126.com,先谢谢了
回复

使用道具 举报

7

主题

146

帖子

1

精华

高级会员

Rank: 4

积分
896
金钱
896
注册时间
2014-1-2
在线时间
156 小时
发表于 2014-9-24 17:02:50 | 显示全部楼层
同求一份留住的源码。之前调试的,图像只能显示一般。275358320@qq.com,谢谢。
回复

使用道具 举报

4

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2013-12-3
在线时间
0 小时
发表于 2014-11-3 17:38:14 | 显示全部楼层
LZ , 我也是在用OV2640,只连接了VSYNC和PCLK(模块内部有24MHz),读取图像数据,在低分辨率的时候读取到图片正常,但是设置成800x600和1024*768之后就有读出来的图片不清晰(也有图片是清晰的)。(这个是买的原子的开发板,用的杜邦线接的摄像头),请问这是怎么回事呢?有人知道吗

帮助别人就是帮助自己!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-11-3 18:21:22 | 显示全部楼层
回复【9楼】wn1900:
---------------------------------
感觉你读取数据中断了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2013-12-3
在线时间
0 小时
发表于 2014-11-3 21:04:50 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
没有读取数据中断,只开了VSYNC和PCLK中断。在低分辨路的时候,数据都是好的,就只是在高分辨率的时候,有时候数据不对,下半部分全是一种颜色。不知道问题在哪里?请教下原子哥,这个ov2640的寄存器怎么配置的,也没有个文档可以看,求指教
帮助别人就是帮助自己!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-11-3 23:15:15 | 显示全部楼层
回复【11楼】wn1900:
---------------------------------
官方有参考配置
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-12-4
在线时间
0 小时
发表于 2014-12-5 17:53:29 | 显示全部楼层
OV的芯片手册中只有寄存器的功能描述,没讲具体配置时该怎么用!

楼主能不能说明一下如何设置寄存器?
摄像头采样分辨率的相关寄存器有什么关系?
非常感谢!
回复

使用道具 举报

7

主题

146

帖子

1

精华

高级会员

Rank: 4

积分
896
金钱
896
注册时间
2014-1-2
在线时间
156 小时
发表于 2014-12-13 15:47:00 | 显示全部楼层
我也遇到同样的问题 各种发帖询问无果 估计可能应该是时钟配置问题
回复

使用道具 举报

4

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2013-12-3
在线时间
0 小时
发表于 2015-1-30 14:21:16 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
//设置图像输出大小
//OV2640输出图像的大小(分辨率),完全由改函数确定
//width,height:宽度(对应:horizontal)和高度(对应:vertical),width和height必须是4的倍数
//返回值:0,设置成功
//    其他,设置失败
  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;
}

原子哥,上面这个是设置输出尺寸的。这一句话不对吧。
        temp=(outw>>8)&0X03;
temp|=(outh>>6)&0X04;
SCCB_WR_Reg(0X5C,temp); //设置OUTH/OUTW的高位 
查看手册,寄存器5C是这样的:
5C 
ZMHH[1:0] 
Bit[7:4]: ZMSPD (zoom speed)
Bit[2]: OUTH[8]
Bit[1:0]: OUTW[9:8]
上面的程序应该是右移八位吧。
temp|=(outh>>8)&0X04;
帮助别人就是帮助自己!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-1-31 00:08:24 | 显示全部楼层
回复【15楼】wn1900:
---------------------------------
你可以修改后测试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

42

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2015-2-24
在线时间
42 小时
发表于 2015-8-6 07:30:13 | 显示全部楼层
回复【3楼】兀本:
---------------------------------
请问你是如何修改CLKRC的?

我现在遇到了类似问题,我把图像分辨率由1600X1200改为800X600后显示不正常了,好像不同步,也可能尺寸设置有问题。
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-10-29
在线时间
0 小时
发表于 2015-11-7 12:09:34 | 显示全部楼层
回复【15楼】wn1900:
---------------------------------
你测试摄像头怎么样了
回复

使用道具 举报

4

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-9
在线时间
30 小时
发表于 2017-10-8 21:39:14 | 显示全部楼层
F103把摄像头改成800x640  也是出问题
回复

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2017-9-26
在线时间
22 小时
发表于 2017-11-17 17:27:01 | 显示全部楼层
兀本 发表于 2014-8-21 19:13
回复【2楼】正点原子:
---------------------------------
原子大哥还有别的什么资料吗?官方的资料坑爹啊 ...

具体怎么弄得?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 06:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表