完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
本文针对带FIFO的OV7670摄像头模块进行说明。
对于新手入坑OV7670摄像头的小白来说,入坑之路漫漫,最坑爹的是不知道入口在哪里~~下面就来简单的说一下我这几天的实验心得。 什么是带FIFO的OV7670,为什么要带FIFO 先说明一下,FIFO(First Input First Output)先入先出的意思,相当于一个数据存储器,只能顺序进行数据读和写。 那么为什么要带FIFO呢,OV7670本身摄像头的IO口速率很高,不是一般单片机可以达到的。我使用的STM32F103C8T6核心板,GPIO口根本达不到摄像头要求,所以无法直接进行数据读写。举个例子,老师在以4G的速度上课,你是个2G学渣,老师说完一句,那还没反应过来,老师就开始下一句,到头来什么也没有得到。那么学渣想要学习该怎么做呢?此时就需要一个FIFO了,你可以把它理解成录音机,老师以4G速度讲,录音机以4G速度录下来,而你要听的时候,听一句暂停一下(就是给clk时钟信号),是不是就全部听到了。单片机也是这样。 引脚说明 我使用的摄像头模块是这个样子的: 解释一下,本模块没有用到PCLK和XCLK,已经有FIFO和OV7670自行配置好了。 SIOC和SIOD两条线是SCCB通信协议的时钟线和数据线,具体和IIC通信基本一样,通信过程自行了解。 HREF行同步信号基本不用它。 VSYNC帧同步信号,就是每次摄像头写出一幅图之前,拉高这个引脚告诉你,我要开始输出啦。 复位口和电源模式口直接接3v和GND就好,也可以接IO口控制,不过要注意,接IO口的话,引脚配置一点要放在OV7670寄存器配置前,不然直接给你复位了。(都是血泪···) 拍照闪光的不要 剩下的就是FIFO的控制IO了。 (录音机啥的都是比喻哈) RCK就是你按录音机暂停键的信号,读一次数据给一个上升沿。 WR就是控制你录音机是否录音的IO,高电平时录音。 OE就是你录音机的电源键。 WRST就是写复位,相当于把录音机倒带到开始,录音时从磁带的开头往后记录。 RRST就是读复位,相当于吧录音机倒带,然后从头听。 一幅图像的读取 读取过程及其简单,我用录音机比喻的方式说: />>>(图像写入)录音过程 1.等待帧同步信号拉高 2.FIFO复位写指针(录音机倒带到磁带开头) 3.FIFO写允许(录音机按下录音键) 4.等待帧同步信号再次拉高(说明第二幅图到来,同时说明第一幅图写完了) 5.FIFO写禁止(停止录音) />>>读图过程(听录音) 1.FIFO读指针复位(录音机倒带到磁带开头) 2.FIFO给RCK(按下录音机播放键,这里假设录音机按一下放半句话,一句话代表一个像素) 3.读数据(听第一句话的上半句) 4.FIFO给RCK 5.读数据(听第一句话的下半句) 6.FIFO给RCK 7.读数据(听第二句话的上半句) 8.FIFO给RCK 9.读数据(听第二句话的下半句) ·············如此循环读出全部像素 n.读完最后一个像素 结束,获得全部图像像素数据。 OV7670寄存器配置 这是个体力活,英语不好的先放放。虽然有中文寄存器手册,看起来也费劲,错误还挺多。而且还要了结图像光学啥的,先放着,直接用例程的代码配置。毕竟100多个寄存器呢。 在这里推荐OV7670_software_application_note文档。还有这篇博客 寄存器配置过程,也可以直接拿来用 不过使用前最好看一下寄存器手册,先用彩条输出测试一下能否正常工作。彩条输出样子是下图,如果这个都出不来,赶紧检查一下线路,确保没问题。或者读图过程是否有漏洞。(可以检测SCCB通信是否正常,基本都是这个出问题。) 这里上位机我直接用易语言随便编写的,针对这种上位机编写,易语言比其他语言方便很多,不过同时e写出来的程序也会大一点,还可能被杀毒软件误杀! 我踩过的坑 SCCB通信正常,但是寄存器设置不进去,最后发现,每次设置完才初试化OV7670的RST引脚,结果给重启了,刚写的全部抹掉。 寄存器问题,这个问题多,自己慢慢踩吧。 摄像头调焦距问题,很白痴但是很重要。彩条输出如果没问题的话,出不来图像,看看有没有调焦距,我的模块买的镜头有点摩擦,我以为焦距调节到头了,结果还处在2000度近视的状态~~,导致每次出图都是一片渐变灰色。结果一狠心使劲扭了几圈镜头,戴上眼镜了,视力瞬间到5.0. |
|
|
|
只有小组成员才能发言,加入小组>>
3294 浏览 9 评论
2970 浏览 16 评论
3473 浏览 1 评论
9023 浏览 16 评论
4061 浏览 18 评论
1140浏览 3评论
589浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
579浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2313浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1876浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:23 , Processed in 1.560062 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号