OpenEdv-开源电子网

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

如何用OV7670配置成灰度模式输出??

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-4-10
在线时间
0 小时
发表于 2015-4-10 13:25:32 | 显示全部楼层 |阅读模式
5金钱
看了很多资料,包括论坛大神的程序,发现都是输出两个字节数据,再提取得到灰度值,这样子摄像头的速度很慢。能不能直接输出一个字节就是灰度值?我在参考资料看寄存器配置,没有发现怎么配置,求助大神帮忙解决!!@正点原子

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-10 13:25:33 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-4-10
在线时间
0 小时
 楼主| 发表于 2015-4-11 12:21:26 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,在你家买的mini板加7670.我现在想让7670的刷新频率达到20帧以上行不行??我自己调,最高15帧,STM时钟调到128M,PCLK调到48M,有时候还跑飞了,才15帧,怎么才会显著提升呢??谢谢了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-11 23:13:53 | 显示全部楼层
 回复【3楼】 zq175175 :
---------------------------------
可以的


exti.c里面,EXTI9_5_IRQHandler函数改为:
[mw_shl_code=c,true]u8 ov_sta; //帧中断标记 //外部中断5~9服务程序 void EXTI9_5_IRQHandler(void) { if(EXTI->R&(1<<8)) //是8线的中断 { if(ov_sta==0) { OV7670_WRST=0; //复位写指针 OV7670_RCK_L; OV7670_RCK_H; OV7670_WRST=1; OV7670_WREN=1; //允许写入FIFO ov_sta++; //帧中断加1 }else OV7670_WREN=0;//禁止写入FIFO } EXTI->R=1<<8; //清除LINE8上的中断标志位 } [/mw_shl_code]
main.c,camera_refresh函数改为:
[mw_shl_code=c,true]//更新LCD显示 void camera_refresh(void) { u32 j; u16 color; if(ov_sta)//有帧中断更新? { LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右 if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//将显示区域设置到屏幕中央 else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//将显示区域设置到屏幕中央 LCD_WriteRAM_Prepare(); //开始写入GRAM OV7670_RRST=0; //开始复位读指针 OV7670_RCK_L; OV7670_RCK_H; OV7670_RCK_L; OV7670_RRST=1; //复位读指针结束 OV7670_RCK_H; for(j=0;j<76800;j++) { OV7670_RCK_L; color=GPIOC->IDR&0XFF; //读数据 OV7670_RCK_H; color<<=8; OV7670_RCK_L; color|=GPIOC->IDR&0XFF; //读数据 OV7670_RCK_H; LCD->LCD_RAM=color; } ov_sta=0; //清零帧中断标记 ov_frame++; LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向 } }[/mw_shl_code]
ov7670.h里面,修改SCK的设置方式,为快速IO,如下:
[mw_shl_code=c,true]#define OV7670_VSYNC PAin(8) //同步信号检测IO #define OV7670_WRST PDout(6) //写指针复位 #define OV7670_WREN PBout(3) //写入FIFO使能 #define OV7670_RCK_H GPIOB->BSRR=1<<4//设置读数据时钟高电平 #define OV7670_RCK_L GPIOB->BRR=1<<4 //设置读数据时钟低电平 #define OV7670_RRST PGout(14) //读指针复位 #define OV7670_CS PGout(15) //片选信号(OE) [/mw_shl_code]
然后,编译器优化等级选择-O2,就可以达到30帧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 00:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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