系统:STM32C8T6
硬件设备:OV7670(带FIFO)
1. 描述:
最近一直在调试一个芯片ADS1015,但是总是不成功,虽然就4个寄存器,还是IIC通信,因此闲着还头疼,就想起来一直积压为用的摄像头,也是IIC通信,因此为了不让摄像头继续吃灰就拿出来做个应用.
2 目标:
1 使用摄像头首先识别颜色目标
2 实现判断预设的目标,并打印回来目标所在位置
3 硬件设计:
由于实验室挺穷的,就不做PCB了,自己焊接一波,引脚随便匹配,主要是D0-7 FIFO数据口一定要找一组STM32中的连续IO,比如A0-7,其他引脚随意随意(图片有点丑)
4.摄像头OV7670
ALIENTEK OV7670摄像头模块存储图像数据的过程为:
等待OV7670 同步信号->
FIFO写指针复位->
FIFO 写使能->
等待第二个OV7670 同步信号->
FIFO 写禁止。
通过以上 5 个步骤,我们就完成了1帧图像数据的存储。
在存储完一帧图像以后,我们就可以开始读取图像数据了。读取过程为:
FIFO 读指针复位->
给FIFO 读时钟(FIFO_RCLK)->
读取第一个像素高字节->
给FIFO 读时钟->
读取第一个像素低字节->
给 FIFO 读时钟->
读取第二个像素高字节->
循环读取剩余像素->
结束。
总结:
首先摄像头后采集图片帧,把帧保存到FIFO中,每次保存完,VSYNC引脚就会发出信号告诉STM32一帧已经完事,可以读取了,此时STM32开始读取FIFO中数据,读取过程IIC通信.
5.OV7670初始化
遇到的问题:
OV7670可以复位内部寄存器,但是读寄存器时失败
解决方案: 在IIC两个通信线上面加两个上拉电阻,
,这个时候就可以正经的读出正确的ID值
6 将FIFO中的数据通过串口显示出来
?