硬件基础知识和典型应用-关于OVXXXX 系列摄像头使用说明
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnHardware" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
说明
首先能够采集OVXXXX系列的摄像头数据并不是什么高端和困难的事情!
现在说一下怎么采集摄像头数据(不带FIFO)
1.摄像头就是里面有很多采集点组成
如果说一个摄像头是 240*320的
就是说横着有240个采集点,竖着有320个采集点,共76800个采集点
2.以OV7670为例(假设采集240*320个像素点,模式输出是RGB422)
3.3V和GNG -- 摄像头供电
-------------------------------------------------------------------------
SDA和SCL为IIC配置摄像头的引脚
可以设置摄像头具体横竖采集的像素点个数
可以设置采集模式,列如:RGB 422(就是说一个像素点用 8位数据表示 ,前面4位代表红色,中间2位代表蓝色,最后2位代表绿色)
列如: 采集的数据是 0xF0 (1111 0000) 就是纯绿色
采集的数据是 0x00 (0000 1100) 就是纯蓝色
采集的数据是 0x00 (0000 1000) 就是不怎么蓝的颜色
有可能有人会问这颜色识别的有点不好呀,分辨率有点低.其实有RGB565,但是呢为了方便叙述,咱先按照RGB422来讲解.
-------------------------------------------------------------------------
VS (VSYNC) ----摄像头工作的时候,这个引脚来一个高脉冲说明摄像头开始采集一副图像了(采集240*320个像素点)
注意哈,一般咱们把开始采集一副图像就做开始采集一帧图像
一般摄像头采集是从左到右 从上到下采集,当然也可以使用IIC发送命令控制它采集的模式
-------------------------------------------------------------------------
HS (HREF) ---- 当这个引脚变为高电平,说明摄像头正在输出某一行像素点
假设是刚开始采集,那么这个引脚第一次变为高电平,说明摄像头正在输出第一行的像素点(从左到右 240个)
第一行的像素点采集完了,就会变为低电平,然后开始采集第二行,这个引脚又会主动变为高电平
然后就是这样子循环.
-------------------------------------------------------------------------
PLK ---- 当这个引脚变为高电平,说明摄像头正在输出一个像素点的数据
假设是刚开始采集,那么这个引脚第一次变为来一个高脉冲,说明摄像头正在输出第一行的第一个像素点的数据
-------------------------------------------------------------------------
D0 - D7引脚 ---- 这个是输出实际像素点采集的数据的引脚
配合上面的 PLK引脚,当PLK引脚来一个高脉冲以后,读取D0 - D7引脚的值
便可获取采集的像素点的数据.假设是刚开始采集采集的数据是 1111 0000 (0xF0)
就说明采集的第一行的第一个像素点的数据是 0xF0 纯绿色
最后总结
假设是 240*320
VS (VSYNC) , HS (HREF) 和 PLK 引脚都接到单片机的中断引脚上
D0 - D7 接到单片机的随意8个引脚上
当检测到 VS (VSYNC) 来了一个高脉冲说明开始采集一帧图像了
然后检测 HS (HREF) 引脚变为了高电平
说明开始采集一行图像了,然后只要PLK引脚来一个高脉冲,说明摄像头输出了
一个像素点的数据,然后单片机读取 D0 - D7 就获取了数据了
然后通过 PLK 和 D0 - D7就可以获取第一行的 240个数据
第一行输出完成 HS (HREF) 引脚变为了低电平
开始输出第二行的时候 HS (HREF) 引脚变为了高电平
然后只要PLK引脚来一个高脉冲,说明摄像头输出了
一个像素点的数据,然后单片机读取 D0 - D7 就获取了数据了
然后通过 PLK 和 D0 - D7就可以获取第二行的 240个数据
然后就是循环采集320行数据.
难在哪里呢?
从上面的介绍可以看出好像挺简单的
那难在哪里呢?
1.难点1
大部分人的基础知识不够,就是说连基本的IIC通信,中断采集都不会
注意哈,我说的是会!!!
列如我问下: 等待芯片应答具体是啥?
发送非应答具体是啥??
2.难点2
摄像头输出的频率实在是太快了
真的是太快了!!!!一般的单片机达不到这种速度
咱们只看 PCLK 的输出速度哈
下图中大概是 PCLK的高电平时间 大概是8ns
整个周期才16ns .....这是普通单片机做不到的
一般情况下就是72M主频的STM32F103 执行中断的时间也是约1us
即使是关闭所有的其它外设,中断时间也只能达到 400ns
然后摄像头模组加个FIFO芯片
FIFO的作用是啥?
没有FIFO的时候,摄像头输出数据是主动的,时钟也是摄像头主动发出的,咱单片机只能接收判断
FIFO芯片帮你缓存图像数据.
读取每一个字节的数据也是靠一个引脚产生时钟上升沿,不过这个引脚是单片机自己产生.
现在就是说你想啥时候读取数据就啥时候读取....
最后关于程序
去淘宝搜索摄像头,然后基本上都会给例程!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-04-29 11-51单片机ESP8266学习-AT指令(ESP8266作为TCP客户端,连接TCP服务器,用串口调试助手和手机TCP调试助手测试)