前言

单片机只有能够看见世界,才能真正的走向智能化,所以,用单片机驱动摄像头很有必要。而在摄像头当中,OV7670是比较经典的一款。

硬件准备

1 .STM32开发板;
2. OV7670模块;

OV7670基础知识

驱动源程序直接用某点原子的挺好,这里就不贴出来了。
1、存储(OV7670往FIFO中写数据)
战舰OV7670模块存储图像数据的过程为:main_等待OV767同步信号->main_帧同步信号触发中断->exti_FIFO写指针复位->exti_FIFO写使能->main_等待第二个同步信号(如果第一帧还没处理完第二帧中断到来则FIFO写禁止)

 OV7670_WREN=1;     //允许写入FIFOOV7670_WRST=0;       //复位写指针              OV7670_WRST=1;

之后摄像头传感器会自动快速存储像素到FIFO

2、读取(MCU从FIFO中读取数据)
读取过程:FIFO读指针复位->给FIFO读时钟(FIFO RCLK)->读取第一个像素高字节->给FIFO读时钟(FIFO RCLK)->读取第一个像素低字节->给FIFO读时钟(FIFO RCLK)->读取第二个像素高字节->循环读取剩余像素->将所有像素值依次显示在LCD上或存储在数组里面
关于数据量,比如QVGA模式,RGB565格式,我们总共循环读取3202402次,读取一帧数据

     OV7670_RRST=0;             //开始复位读指针 OV7670_RCK_L;OV7670_RCK_H;OV7670_RCK_L;OV7670_RRST=1;                //复位读指针结束 OV7670_RCK_H;

然后FIFO就会按照从上到下,从左到右的顺序依次输出像素

调试记录

1.配置灰度输出遇到的问题以及解决办法
在寄存器配置上,在正点原子代码基础上,更改寄存器配置

 {0x12,0x10},{0x3a, 0x14},{0x3d, 0x80}, {0x67, 0x11},  {0x68, 0xFF}, {0x40, 0xC0},

直接添加在OV7670.config文件末尾就行,就会得到YUYV格式的输出,每个像素会传来两个字节,只要高字节,第2,4,6等字节直接扔掉不要,然后为了在LCD上得到显示结果,需要将256灰度转化为RGB565而在LCD上显示,综合代码如下

 OV7670_RCK_L;color=GPIOC->IDR&0XFF; //读数据OV7670_RCK_H; color<<=8;  OV7670_RCK_L;//color|=GPIOC->IDR&0XFF;    //读数据OV7670_RCK_H; color_r = color&0xf800;color_b = color>>11;color_g =(color>>5)&0x07e0; LCD->LCD_RAM= color_r + color_g + color_b;

接下来会发现还有问题,那就是屏幕碎片化,闪动严重,原因有二:
第一是因为在正点原子代码上有"FIFO"还没有写入完毕而提前被LCD读取完了,LCD后半截时有时无,就造成了比较大但范围又相似的抖动,正点原子代码如下:

 OV7670_WREN=1;     //允许写入FIFOOV7670_WRST=0;       //复位写指针              OV7670_WRST=1;    ov_sta++;

应该更正为:

 if(ov_sta==0){            OV7670_WREN=1;     //允许写入FIFOOV7670_WRST=0;       //复位写指针              OV7670_WRST=1;    ov_sta++;         }else {OV7670_WREN=0;      //禁止写入FIFO OV7670_WRST=0;      //复位写指针              OV7670_WRST=1;                }

第二会发现屏幕有很多毛刺尖锐闪动,是因为屏幕刷新率太高,这是源代码:

 while(1)OV7670_camera_refresh();

但是应该人为的减慢这个速度或者固定下来,比如改为10帧的刷新率,改进后的代码为:

while(1){    delay_ms(100);OV7670_camera_refresh();  //更新显示}

LCD上的显示完美输出

总结

这种点对点的摄像头,并不适合入门,资金充裕的话建议入手openmv,又快又方便。

OV7670 STM32驱动 YUYV格式调试总结相关推荐

  1. stm32官方例程在哪找_正点原子Linux第十一章模仿STM32驱动开发格式实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第十一章模仿STM32驱动开发格式实验 在上一章使用C语 ...

  2. ARM(IMX6U)裸机模仿STM32驱动开发实验(定义外设结构体)

    参考:Linux之ARM(IMX6U)裸机模仿STM32驱动开发格式 作者:一只青木呀 发布时间: 2020-08-15 12:11:56 网址:https://blog.csdn.net/weixi ...

  3. STM32驱动OV7670(无FIFO)相关问题的解决

    STM32驱动OV7670(无FIFO)相关问题的解决 文章目录 STM32驱动OV7670(无FIFO)相关问题的解决 前言 一.OV7670大体介绍与需要关注的点 二.遇到的问题及解决 1.引脚冲 ...

  4. STM32驱动 HTU21D温湿度传感器

    STM32驱动 HTU21D温湿度传感器 温湿度传感器模块HTU21D产品简介 基于法国Humirel公司高性能的湿度感应元件制成,新一代HTU21D温度和湿度传感器在尺寸与智能方面建立了新的标准:它 ...

  5. STM32驱动OV7725摄像头颜色识别

    转载请注明出处:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接:http://blog.csdn.net/hongbin_xu ...

  6. STM32驱动K210人脸识别模块经验汇总

    本次是基于HLK-KT210 AI人脸识别模块和STM32单片机进行设计的人脸识别项目.主要是人脸识别功能的分析和使用. 1 模块连接 本次使用了海凌科生产的DEMO板,但是由于板子的客观因素,TTL ...

  7. stm32读取目标芯片_使用stm32驱动RC522读IC卡(代码留言邮箱)

    RC522与PN532简介 关于STM32驱动方式 接线说明 程序烧录 查看卡号 总结 RC522与PN532简介 在写这篇文章之前有写过一篇有关于PN532的文章,RC522与PN532在使用上都可 ...

  8. 【STM32训练—WiFi模块】第一篇、STM32驱动ESP8266WiFi模块获取网络时间

    目录 第一部分.写在前面 1.硬件准备 2.相关的AT指令 3.参考博客 第二部分.电脑串口助手调试ESP8266模块获取网络时间 1.ESP8266获取时间的流程 2.具体实现步骤 第三部分.STM ...

  9. STM32—驱动HC-SR04超声波测距模块

    文章目录 超声波测距原理 HC-SR04工作原理 STM32实现驱动 1.引脚的配置 2.时序控制 3.时间差测量 4.如何将距离测出来 超声波测距原理 利用HC-SR04超声波测距模块可以实现比较精 ...

最新文章

  1. OpenMV中AprilTag识别Python程序源码
  2. linux安装toncat环境变量,linux下JDK,tomcat的安装与环境变量配置
  3. LeetCode 367. 有效的完全平方数(二分查找)
  4. java中菜单不显示_菜单不显示
  5. 20162319莫礼钟 2016-2017-2 《程序设计与数据结构》第2周学习总结
  6. 团队编程项目作业6-程序维护
  7. redis与mysql性能对比、redis缓存穿透、缓存雪崩
  8. 拓端tecdat:R语言梯度提升机 GBM、支持向量机SVM、正则判别分析RDA模型训练、参数调优化和性能比较可视化分析声纳数据
  9. Vue2.0安装教程
  10. 第三章 微分中值定理及其应用
  11. [转载]java实现word转pdf
  12. MarketsandMarkets:2018年全球太阳能背板市场需求将超17亿美元
  13. Seurat4.0系列教程8:细胞周期评分和回归分析
  14. python下载量化策略_掘金量化Python经典策略.pdf
  15. Linux线程同步(二)---互斥锁实现线程同步
  16. 2022-2-22 王爽《汇编语言》实验一
  17. 用python实现简单的飞机大战小游戏
  18. 隆云通光合有效辐射传感器 LYA-16
  19. linux下词典项目要点,linux下的命令行词典
  20. Linux SSHFS挂载验证-OpenWRT系统

热门文章

  1. react 动态修改路由_react.js - React 如何监听路由变化重新渲染组件
  2. 利用 MapReduce分析明星微博数据实战
  3. python打不开py文件查看代码,Python打不开.py文件怎么办
  4. android音效的加载方式
  5. 设计模式之禅-命令模式
  6. 超详细树莓派4B安装Ubuntu Server无屏幕
  7. latex 文字出现在float之前_有没有比较好用的图片文字识别软件?
  8. 如何创建index.php文件,index.html是什么意思/文件,index.html怎么创建/打开
  9. 表格检测识别技术的发展历程
  10. 解决珊瑚虫QQ不能在Win2003运行的问题(转)