搜索
bottom↓
回复: 73

STM32驱动OV7670+FIFO用FSMC刷320X240屏30FPS,有图有真相!

  [复制链接]

出0入0汤圆

发表于 2012-3-28 13:25:08 | 显示全部楼层 |阅读模式
如题。
用AVR的可以看我以前的一个帖:
http://www.ourdev.cn/forum.php?m ... mp;highlight=OV7670
里面有这个OV7670+FIFO的资料,这儿就不上传了,另外上面这个帖子注释比较清晰,
思路和本帖的程序思路差不多,可以参考。
http://www.ourdev.cn/forum.php?m ... p;page=1#pid5697907
上面帖25楼有电路板的原理图,另外不会FSMC的也可以参看上面帖子
效果实测:刷1000屏用时33秒,既30FPS,有点小小的不流畅,估计是数据上有点小问题
拿来参考是没问题的。
同样上个main函数吧!
/*
        Designed By LuoFaJiang @ 2012.03.26
                From Xhu University
*/
/***************************************/
#include "ILI9325_GUI.h"
#include "stm32f10x.h"       
#include "ili9325.h"
#include "delay.h"
#include "Sensor.h"       
/***************************************/
volatile char Temp=0;  
volatile char Frame_Write_Status=0;
volatile char Frame_Writed=0;
//volatile int  Temp_Num=0;  //调试测试用
//***************************************************

/****************************************************/

void Display_Picture(void);

/****************************************************/
/****************************************************/
int main(void)
{
  SystemInit();
//RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_16);//超频貌似没的用

  SysTick_Init(72);  
  STM3210E_LCD_Init();
  LCD_Clear(Red);
  LCD_SetTextColor(Yellow);
  LCD_SetBackColor(Red);

  LCD_Show_Str(140,80,"FSMC_LCD Init Success!");

  Seneor_VSYNC_Config();
  NVIC_Configuration();
  EXTI_Configuration();

  while(!Temp)                     //初始化OV7670直至成功
{
  Temp=Sensor_Init();
}
  LCD_Show_Str(100,80,"OV7670 Init Success!");

  Delay_ms(5000);

  LCD_WriteReg(0x0003,0x10C8);//调整LCD显示方向

  Sensor_FIFO_OE_L();         //FIFO片选使能
  Sensor_FIFO_WEN_H();        //FIFO写使能
  Sensor_FIFO_WRST_L();       //FIFO写复位准备
  Sensor_FIFO_RRST_L();       //FIFO读复位准备

  LCD_SetWindow(0,0,239,319); //设置LCD显示窗口
  LCD_WriteRAM_Prepare();     //写数据前准备

   while(1)
   {
    if(!Frame_Writed)
          {
           Frame_Write_Status=1;
           Display_Picture();
           Frame_Write_Status=0;
           Frame_Writed=1;
          }
         while(Frame_Writed);
   }
            
}
/*****************************************************/
/*****************************************************/
void  Display_Picture()
{
  u32  register  Data_H=0;
  u32  register  Data_L=0;
  u32  register  index=0;

//  LCD_SetWindow(0,0,239,319); //设置LCD显示窗口
//  LCD_WriteRAM_Prepare();        //写数据前准备   

Sensor_FIFO_RCLK_L();
  Sensor_FIFO_RCLK_H();


        for(index = 0; index <76800; index++)
  {
    Sensor_FIFO_RCLK_L();
        Data_H=Sensor_FIFO_Data_IDR;
        Sensor_FIFO_RCLK_H();
    Sensor_FIFO_RCLK_L();
        Data_L=Sensor_FIFO_Data_IDR;
        Sensor_FIFO_RCLK_H();
        Data_L>>=8;
        Data_H&=0xFF00;
    LCD->LCD_RAM =Data_H+Data_L;
  }

/* 调试测试用
    Temp_Num++;
  if(Temp_Num==1000)
  {
   LCD_Clear(Red);
   while(1);
  }
*/

}
/**********************END***********************/
程序工程:基于MDK,Keil uV4

照片是手机照的,效果不好,将就看吧!








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2012-3-28 13:28:37 | 显示全部楼层
占沙发!!!

出0入0汤圆

 楼主| 发表于 2012-3-28 13:29:02 | 显示全部楼层
占板凳!!!

出0入0汤圆

发表于 2012-3-28 13:31:45 | 显示全部楼层
本帖最后由 lyk07351 于 2012-3-28 13:33 编辑

看着还不错,STM32不超频,能做到30fps ,楼主是怎么做到的呢?望楼主给说明下,俺也想用STM32驱动LCD屏。
好不容易占次沙发,没想到发个帖子的时间都被抢了……

出0入0汤圆

发表于 2012-3-28 13:42:37 | 显示全部楼层
抢地下室~~~

出0入0汤圆

 楼主| 发表于 2012-3-28 14:02:37 | 显示全部楼层
lyk07351 发表于 2012-3-28 13:31
看着还不错,STM32不超频,能做到30fps ,楼主是怎么做到的呢?望楼主给说明下,俺也想用STM32驱动LCD屏。
...

这个关键在读FIFO的速度也就是GPIO的翻转速度,使用BRR、BSRR的速度比ODR快得多,而且
BRR不能写成GPIOA->BRR |= XXXXX或者GPIOA->BRR &= XXXXX的形式,原因好像是这样会开关中断,
和使用ODR一样,我也没太注意,可以看看手册,忘了。另外,这种关键地方就不要想着用库了,
用库的速度会让你崩溃的

//#define Sensor_FIFO_RCLK_H()  Sensor_FIFO_ODR|= 0x0040
//#define Sensor_FIFO_RCLK_L()  Sensor_FIFO_ODR&=~0x0040

#define Sensor_FIFO_RCLK_L()  GPIOA->BRR = GPIO_Pin_6
#define Sensor_FIFO_RCLK_H()  GPIOA->BSRR= GPIO_Pin_6

出0入0汤圆

发表于 2012-3-28 14:04:58 | 显示全部楼层
LuoFaJiang 发表于 2012-3-28 14:02
这个关键在读FIFO的速度也就是GPIO的翻转速度,使用BRR、BSRR的速度比ODR快得多,而且
BRR不能写成GPIOA- ...

谢谢指点,看看你是怎么做的,回头自己也弄个。
谢谢,有问题再找你请教

出0入0汤圆

发表于 2012-3-28 14:11:06 | 显示全部楼层
好资料
头像被屏蔽

出0入0汤圆

发表于 2012-3-28 14:50:51 | 显示全部楼层
COOL !

出0入0汤圆

发表于 2012-3-28 14:51:37 | 显示全部楼层
酷贴都不要错过。   

出0入0汤圆

 楼主| 发表于 2012-3-28 17:22:31 | 显示全部楼层
armok 发表于 2012-3-28 14:50
COOL !

能得莫老大的cool,让我顿时像打了鸡血了!!!

出0入0汤圆

发表于 2012-3-28 17:38:18 | 显示全部楼层
酷贴! 学习了

出0入0汤圆

 楼主| 发表于 2012-3-28 17:49:30 | 显示全部楼层
自己再顶一个,为不再做算术题而奋斗

出0入0汤圆

发表于 2012-3-31 19:24:44 | 显示全部楼层
我这边已经刷到74.63FPS!
我这边已经刷到74.63FPS!

出0入0汤圆

 楼主| 发表于 2012-3-31 21:42:24 | 显示全部楼层
那么强悍啊,老大
我看老大的那个视频很流畅就晓得肯定不止30,但是
没想到能这么高!!!
我测VSYNC的输出在24M晶振的时候才50FPS,
还有操作FIFO的IO速度怎么提啊?
难道是不要FIFO直接用中断?

出0入0汤圆

发表于 2012-3-31 21:49:57 | 显示全部楼层
强人! 学习一下

出0入0汤圆

发表于 2012-3-31 21:53:47 | 显示全部楼层
精华一定要mark,有空再慢慢看

出0入0汤圆

发表于 2012-3-31 21:57:22 | 显示全部楼层
最近可能会用到FSMC也是驱动液晶,还在担心速度上不去。

出0入0汤圆

发表于 2012-3-31 22:08:23 | 显示全部楼层
好好学习了 留作以后再用

出0入0汤圆

发表于 2012-3-31 22:08:40 | 显示全部楼层
30FPS啊,这个要好好研究一下啊,之前也弄过,好像不超过10FPS!!!巨大的差距啊

出0入0汤圆

 楼主| 发表于 2012-3-31 22:44:17 | 显示全部楼层
苦行僧 发表于 2012-3-31 22:08
30FPS啊,这个要好好研究一下啊,之前也弄过,好像不超过10FPS!!!巨大的差距啊 ...

我用AVR在16M下驱动这个摄像头都有8FPS了。

出0入0汤圆

 楼主| 发表于 2012-3-31 22:46:23 | 显示全部楼层
wangguanfu 发表于 2012-3-31 19:24
我这边已经刷到74.63FPS!
我这边已经刷到74.63FPS!

那么强悍啊,老大
我看老大的那个视频很流畅就晓得肯定不止30,但是
没想到能这么高!!!
我测VSYNC的输出在24M晶振的时候才50FPS,
还有操作FIFO的IO速度怎么提啊?
难道是不要FIFO直接用中断?

出0入0汤圆

 楼主| 发表于 2012-3-31 22:48:52 | 显示全部楼层
苦行僧 发表于 2012-3-31 22:08
30FPS啊,这个要好好研究一下啊,之前也弄过,好像不超过10FPS!!!巨大的差距啊 ...

看看14楼我已经崩溃了,只能是膜拜...

出0入0汤圆

发表于 2012-4-1 09:00:37 | 显示全部楼层
wangguanfu 发表于 2012-3-31 19:24
我这边已经刷到74.63FPS!
我这边已经刷到74.63FPS!

原来王大哥出现了,难怪下面一片惊呼哦,

出0入0汤圆

发表于 2012-4-1 12:56:35 | 显示全部楼层
这个要好好研究一下

出0入0汤圆

发表于 2012-4-2 14:42:47 | 显示全部楼层
哥们我也在玩这个东西,但是遇到了问题啊,出现了三个图片,现在不知道咋办,可以给点方向吗?我的设想头和你一个厂家。这个是我的http://www.ourdev.cn/forum.php?m ... p;page=1#pid5713435

出0入0汤圆

 楼主| 发表于 2012-4-2 22:15:59 | 显示全部楼层
苹果520 发表于 2012-4-2 14:42
哥们我也在玩这个东西,但是遇到了问题啊,出现了三个图片,现在不知道咋办,可以给点方向吗?我的设想头和 ...

你的问题已经回复,可以看看,参考一下。另外,我的例程已经很详细了,如果你好好
看了例程和AL422B的资料,你就不会问复位的问题了,所以只能理解为懒了,不想
自己动手动脑

出0入0汤圆

发表于 2012-4-2 22:29:47 | 显示全部楼层
FIFO在哪家买的呢?也想买几个,怕买到水货了,楼主推荐下

出0入0汤圆

发表于 2012-4-2 22:35:27 | 显示全部楼层
能不能多加点注释,加合理的注释,是编程的好习惯,最主要是方便我们

出0入0汤圆

发表于 2012-4-2 23:13:36 | 显示全部楼层
LuoFaJiang 发表于 2012-4-2 22:15
你的问题已经回复,可以看看,参考一下。另外,我的例程已经很详细了,如果你好好
看了例程和AL422B的资 ...

谢谢你了,呵呵,QQ联系方式可以留一个吗?

出0入0汤圆

 楼主| 发表于 2012-4-3 11:00:47 | 显示全部楼层
niba 发表于 2012-4-2 22:29
FIFO在哪家买的呢?也想买几个,怕买到水货了,楼主推荐下

我的摄像头模块自带的,FIFO到处都是!

出0入0汤圆

 楼主| 发表于 2012-4-3 11:01:46 | 显示全部楼层
xlwq 发表于 2012-4-2 22:35
能不能多加点注释,加合理的注释,是编程的好习惯,最主要是方便我们 ...

看Mega128的例程。

出0入0汤圆

发表于 2012-4-3 11:25:25 | 显示全部楼层
我是来看图的

出0入198汤圆

发表于 2012-4-4 11:06:48 | 显示全部楼层
附件无法下载?

出0入0汤圆

发表于 2012-4-4 17:26:37 | 显示全部楼层
好帖要顶。。。

出0入0汤圆

发表于 2012-4-4 18:34:29 | 显示全部楼层
有没有视频啊  

出0入0汤圆

发表于 2012-4-5 10:46:58 | 显示全部楼层
上视频 大家可以看下 真实的效果 更震撼

出0入0汤圆

 楼主| 发表于 2012-4-6 09:47:29 | 显示全部楼层
ayumi8 发表于 2012-4-4 18:34
有没有视频啊

http://v.youku.com/v_show/id_XMjU4NjUxNjQw.html
上面是GUANFU_WANG的视频,我的没录,穷学生一个,
没装备啊,对比了一下,我的实际效果清晰度差点,速度
大概能到上面的80%多。

出0入0汤圆

发表于 2012-4-6 10:10:54 | 显示全部楼层
纯显摆,勿拍砖哦

http://player.youku.com/player.php/sid/XMjU4NjUxNjQw/v.swf

http://player.youku.com/player.php/sid/XMzY5MDg1OTQ4/v.swf

http://player.youku.com/player.php/sid/XMzc1NzM1NDU2/v.swf

出0入0汤圆

发表于 2012-4-6 10:14:32 | 显示全部楼层
LuoFaJiang 发表于 2012-3-31 21:42
那么强悍啊,老大
我看老大的那个视频很流畅就晓得肯定不止30,但是
没想到能这么 ...

王哥他用的是F207

出0入0汤圆

发表于 2012-4-6 10:16:17 | 显示全部楼层
fire 发表于 2012-4-6 10:14
王哥他用的是F207

哥用的STM32F103ZET6 还是Z版本的

出0入0汤圆

发表于 2012-4-6 10:24:59 | 显示全部楼层
wangguanfu 发表于 2012-4-6 10:16
哥用的STM32F103ZET6 还是Z版本的

王哥是坛子里面摄像头神人,鉴定完毕

出0入0汤圆

发表于 2012-4-11 10:45:45 | 显示全部楼层
哇  这个效果  真棒啊  灰常流畅的说

出0入0汤圆

发表于 2012-4-11 15:13:13 | 显示全部楼层
这速度也真快啊

出0入0汤圆

发表于 2012-4-16 13:35:36 | 显示全部楼层
路过 ,看看

出0入0汤圆

发表于 2012-4-20 13:30:07 | 显示全部楼层
顶顶顶顶顶顶

出0入0汤圆

发表于 2012-5-4 12:04:36 | 显示全部楼层
mark一记。。。。。。

出0入0汤圆

发表于 2012-5-21 21:43:30 | 显示全部楼层
酷贴! 学习了

出0入0汤圆

发表于 2012-5-22 07:24:55 | 显示全部楼层
wangguanfu 发表于 2012-4-6 10:10
纯显摆,勿拍砖哦

啊,好好的笔记本成这个样子了。

出0入0汤圆

 楼主| 发表于 2012-6-9 14:56:20 | 显示全部楼层
LuoFaJiang 发表于 2012-3-28 14:02
这个关键在读FIFO的速度也就是GPIO的翻转速度,使用BRR、BSRR的速度比ODR快得多,而且
BRR不能写成GPIOA- ...

刚开始没注意,其实关键在于使用与或操作是首先读取,然后进行与或,然后再写回去的,操作比直接写复杂得多
,所以直接写会很快,但是这样是有隐患的,因为直接写会对整个端口赋值,可能会直接使得其他部分外围输出信号错误,
所以该方法仅供参考!

出0入0汤圆

发表于 2012-6-9 16:00:25 | 显示全部楼层
牛人啊~学习

出0入0汤圆

发表于 2012-7-26 11:11:43 | 显示全部楼层
收藏 先~

出0入0汤圆

发表于 2012-7-27 14:15:10 | 显示全部楼层
好东西,收藏了

出0入0汤圆

发表于 2012-7-27 15:02:04 | 显示全部楼层
厉害,学习学习

出0入0汤圆

发表于 2012-7-28 12:40:20 | 显示全部楼层
lz开发板哪买的?
                          

出0入0汤圆

发表于 2012-8-6 10:28:36 | 显示全部楼层
这不是西华大学临江苑么- -

出0入0汤圆

发表于 2012-8-6 10:46:49 | 显示全部楼层
说曹操曹操到。

出0入0汤圆

发表于 2012-8-6 20:40:22 | 显示全部楼层
wangguanfu 发表于 2012-4-6 10:10
纯显摆,勿拍砖哦

请问王工,ov7670的图像数据怎么保存成.jpg格式的图片呢?

出0入0汤圆

发表于 2012-8-6 21:33:01 | 显示全部楼层
火  火  火

出0入0汤圆

发表于 2012-8-24 15:53:16 | 显示全部楼层
这个得学习一下

出0入0汤圆

 楼主| 发表于 2012-8-27 18:15:02 | 显示全部楼层
cattrace 发表于 2012-8-6 10:28
这不是西华大学临江苑么- -

不会吧,居然有师弟?你们看出这是几栋吗?

出0入0汤圆

 楼主| 发表于 2012-8-27 18:16:46 | 显示全部楼层
lanzi3105 发表于 2012-7-28 12:40
lz开发板哪买的?

老大wangguanfu 那儿!

出0入0汤圆

发表于 2012-8-27 20:23:11 | 显示全部楼层
学习中,

出0入0汤圆

发表于 2012-8-31 16:00:27 | 显示全部楼层
LuoFaJiang 发表于 2012-8-27 18:15
不会吧,居然有师弟?你们看出这是几栋吗?

看不出,临江苑和迷宫一样,住了那么久都没走完

出0入0汤圆

 楼主| 发表于 2012-9-16 09:43:47 | 显示全部楼层
cattrace 发表于 2012-8-31 16:00
看不出,临江苑和迷宫一样,住了那么久都没走完

我在那儿住了四年,就只认得自己住的9栋,传说临江苑有个周末舞会,四年我都不晓得在哪儿。

出0入0汤圆

发表于 2013-4-6 11:04:07 | 显示全部楼层
这个VSYNC到底连哪个引脚啊

出0入0汤圆

发表于 2013-4-6 11:19:33 | 显示全部楼层
好贴要顶一下

出0入0汤圆

发表于 2013-4-6 12:36:36 | 显示全部楼层
虽然不懂,还是顶顶

出0入0汤圆

发表于 2013-4-22 00:05:54 | 显示全部楼层
好贴要顶一下

出0入0汤圆

发表于 2013-5-20 08:06:33 | 显示全部楼层
mark              

出0入0汤圆

发表于 2013-5-20 16:56:00 | 显示全部楼层
谢谢分享!!!

出0入0汤圆

发表于 2015-3-12 22:00:08 | 显示全部楼层
wangguanfu 发表于 2012-3-31 19:24
我这边已经刷到74.63FPS!
我这边已经刷到74.63FPS!

我看的ov7670手册上 最大贞率 30fpsVGA。请问您是怎么刷到70多fps的?

出0入0汤圆

发表于 2016-4-5 16:37:24 | 显示全部楼层
楼主好资料啊

出0入0汤圆

 楼主| 发表于 2016-4-6 13:21:26 | 显示全部楼层
LVmcu 发表于 2015-3-12 22:00
我看的ov7670手册上 最大贞率 30fpsVGA。请问您是怎么刷到70多fps的?

分辨率不是VGA的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 21:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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