1.前言
之前在淘宝买了一个不带FIFO的OV7670,由于比赛和其他事一直搁置,现在有时间于是想玩一玩。我发现网上这个的教程多为标准库,有些甚至利用了DCMI(数字摄像头接口,目前已知F4系列是有这个外设的)。标准库以及使用硬件外设使得它的移植不是那么友好,加上今年来ST官方大力推广HAL库以及CUBEMX的使用,于是我决定做一个CUBEMX驱动这个的教程。
无FIFO的OV7670更加考验单片机性能,并且坑比较多,大家如果还没有买,不要和我一样贪便宜买不带FIFO的。
实物:
比较新的博客:
STM32F103C8T6基于库函数 驱动无FIFO的OV7670摄像头_stm32f103c8t6摄像头-CSDN博客https://blog.csdn.net/sd3870582/article/details/136192947
2.设备
(1)单片机
STM32G474RET6,准备使用IO直驱,因为它没有DCMI接口,模拟的方式更加好移植。
(2)无FIFO的OV7670引脚定义
SCL-----------------------------------时钟线(SCCB)
SDA-----------------------------------数据线(SCCB)
VS-------------------------------------帧数据线(图像输出),信号出现说明一帧图像传输完成
HS-------------------------------------行数据线(图像输出),信号出现说明一帧图像的一行传输完成
PCLK---------------------------------像素时钟(OV7670输出给STM32)
MCLK---------------------------------输入时钟(STM32输入给OV7670),使用MCO输入24MHz
D0到D7-------------------------------数据接口(图像信号输出给单片机)
(3)无FIFO的OV7670数据传输扫描方式
从左到右,从下到上
(4)使用的上位机
直接显示在LCD屏幕上跨度太大,中间会出很多问题,我们先将图像输出到电脑上观察。一步一步慢慢来,华军软件园一般流氓软件较少。
山外多功能调试助手官方下载_山外多功能调试助手最新版_山外多功能调试助手1.1.1绿色版-华军软件园 (onlinedown.net)https://www.onlinedown.net/soft/633190.htm
3.需要掌握的知识
(1)SSCB
这个是用来设置OV7670的,跟IIC很像,但不是同一个东西。SCCB有一个EN线,但是在OV7670中被省略了,因为没有必要。
参考文章
SCCB总线协议的详细讲解与程序实现-CSDN博客https://blog.csdn.net/weixin_44509533/article/details/106053822
接口线
起始时序
结束时序
(2)部分问题踩坑解决
STM32驱动OV7670(无FIFO)相关问题的解决_ov7670怎么接stm32f103-CSDN博客https://blog.csdn.net/wing_man/article/details/124070432
4.驱动的第一步
由于这种传感器本身并不算简单,所以要做好付出大代价的准备。一步一步来,确保每一步的成功运行。
(1)读取OV7670的ID
参考文章
ov7670读取ID成功(不带FIFO),记录注意事项_ov7670的id-CSDN博客https://blog.csdn.net/qq_43145360/article/details/120224741