OpenEdv-开源电子网

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

OV7670摄像头实验疑问

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-1-25
在线时间
3 小时
发表于 2016-3-19 09:50:36 | 显示全部楼层 |阅读模式
1金钱
本人用的STM32F103ZET6战舰V3开发板,配的OV7670摄像头模块,有如下两个疑问:
(1)OV7670摄像头模块配的FIFO AL422B 大小是380K,不够存储一帧的VGA数据,所里教程里面用的是QVGA输出。如果我要使用VGA输出,程序里面该怎么实现,能做到吗?还是必须得换容量更大的FIFO芯片?
(2)示例程序里读FIFO数据用的是camera_refresh()函数,写数据用的是EXTI8的中断处理函数。写数据要比读数据快,如果一帧数据还没读完,第二帧数据已经开始写了并且将前一帧覆盖了怎么办?是否需要在EXTI8的中断处理函数里面加上,判断数据是否已经读完的代码?如 if(ov_sta==0){ ...  //开始写} else{OV7670_WREN=0 //禁止写}。  我看视频里面说等待的过程中要写禁止,但是示例代码里面并没有这么做,不知道是出于什么考虑的?

请原子哥或者正在学这个开发板的小伙伴们指点下,谢谢!

读数据:
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); //恢复默认扫描方向
}
}   


写数据:
void EXTI9_5_IRQHandler(void)
{     
if(EXTI_GetITStatus(EXTI_Line8)==SET) //是8线的中断
{
  OV7670_WRST=0; //复位写指针     
  OV7670_WRST=1;
  OV7670_WREN=1; //允许写入FIFO   
  ov_sta++;  //帧中断加1
EXTI_ClearITPendingBit(EXTI_Line8);  //清除EXTI8线路挂起位        
}



最佳答案

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

1,不能实现。2,有控制写使能的。如果失能了,ov7670就无法往fifo写数据的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-19 09:50:37 | 显示全部楼层
1,不能实现。2,有控制写使能的。如果失能了,ov7670就无法往fifo写数据的。
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-1-25
在线时间
3 小时
 楼主| 发表于 2016-3-20 09:41:47 | 显示全部楼层
正点原子 发表于 2016-3-19 09:50
1,不能实现。2,有控制写使能的。如果失能了,ov7670就无法往fifo写数据的。

EXTI9_5_IRQHandler(void)  只有写使能,没有写失能。是否需要加上判断fifo已读取完成,如果完成了,继续写使能;如果没有完成,则写失能?以免写数据过快导致读跟不上?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 22:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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