尝试使用两个STM32驱动不带fifo的ov7670,未成功

文章讲述了作者尝试在STM32F103C8T6单片机上驱动不带FIFO的OV7670摄像头,但遇到图像输出问题和内存限制。作者分享了实验失败经历、可能的问题及注意事项,强调了这类项目开发的困难和资源匮乏。
摘要由CSDN通过智能技术生成

注意,未成功!!!

工程链接:

https://wwvs.lanpv.com/b05eur3je
密码:91cm

参考资料

STM32F103C8T6+无FIFO的OV7670的输出测试图像实例代码-物联沃-IOTWORD物联网

【单片机开发】无FIFO的OV7670模组在STM32F1平台上的应用_只有dcmi才可以驱动无fifo的ov7670-CSDN博客


 

设备要求:

两块STM32F103系列芯片,2.8寸9341驱动的LCD屏,不带FIFO的OV7670x1,杜邦线若干

我使用的是一块RCT6,一块C8T6

接线:

OV7670:

与RCT6

VCC-3V3

GND-GND

SCL-PB10

SDA-PB11

VS-PB12

HS-PB13

PLK-PB14

D0~D7-PA0~PA7

RET-3V3

PWDN-GND

与C8T6

XLK-PA8

LCD屏

VCC-3.3V

GND-GND

CS-PB6

RST-PB7

DC-PB8

SDI(MISO)-PB5

SCK-PB9

LED-3V3

SDO(MISO)-PB4

文件介绍:

第一个文件:带RCT6软SPI字样,是下载到RCT6内部的,包括了OV7670与LCD屏的驱动程序

第二个文件:MCO,是下载到C8T6中的,作用是提供一个稳定8MHZ时钟

第三个文件是找商家要的资料

不成功的实验

这次实验是不成功的,摄像头不能输出收集到的图像到LCD屏,而是输出杂乱的图像

2a5476ffbda74860a7bb328c786e2cf9.jpeg9d1df0544ece41cb885d05713fc8d833.jpeg

fdc630877595498988e29aec4fc6d3fb.jpeg8574fd0815d94799bc2c3f248f04d74b.jpeg

如上图所示,我考虑过是否是摄像头损坏的问题,于是又去买了一个,但是那一个甚至无法输出图像而是完全的白屏,这些问题我现在没有能力也没有时间去解决。

可能的问题:

如何将RCT6代码移植到C8T6?

因为同为F103系列,所以只需在魔术棒中的Device选项里将RCT6改为C8T6即可。

可以更改引脚定义吗?

a6b71dc745414884b00ea394eb5097b4.png

必须根据引脚功能确定,如MISO可以是PB4但不能是PB5,6,7;以及MCO只有PA8一个,不可更改。

为什么图像显示是这样的?

OV7670是全彩的,也即2字节描述一个像素,OV7670共有480*640像素,因为LCD屏为320×240像素,所以显示一张图片需要307200字节,一个char占用2字节,所以如果想要完整存储一帧LCD图像需要一个大小为153600的char数组,但是这超过了F103可以使用的运存空间,我尝试之后发现它的1/4也即38400不会报错,所以我选择一次刷新1/4的屏幕;但是这是有很大问题的,我不知道OV7670传入的图像是按列传输还是按行传输。

写在最后

首先,当你想要尝试用F103系列开发板驱动不带FIFO的OV7670时,我必须劝你三思而行,这方面的资料是不多的,不带fifo都已经是少见,f103更是难上加难,以及市面上大部分厂家不带FIFO的OV7670摄像头并没有质保,你无法判断是自己的错还是产品的错;虽然不带FIFO的OV7670与STM32均诞生多年,但网络上似乎仍然没有一个科学系统的教程来指导开发,希望在不久的将来这一漏洞能被填补,即使这样并不具备实用价值,但至少能给不愿意购买动辄50元的带FIFOOV7670的人一种选择。

 

 

STM32H7系列微控制器通常用于嵌入式系统,并具备强大的硬件资源处理能力,能够支持复杂的外设操作。在你的需求中,涉及到STM32H750驱动OV7670摄像头并使用FIFO缓冲区的情况,下面将详细介绍如何实现这一功能。 ### OV7670摄像头概述 OV7670是一款低功耗、经济高效的CMOS图像传感器,支持多种分辨率和帧率。其特性包括但不限于: - 支持VGA、QVGA等视频标准。 - 可配置输出格式如YUV422、RGB565等。 - 提供I2C、SPI等多种通信接口。 ### STM32H750微控制器 STM32H750采用ARM Cortex-M7内核,支持高速内存访问、浮点运算单元以及先进的电源管理技术。它适合需要高性能处理器和强大图形处理能力的应用场景,如工业控制、自动化设备、安全监控等领域。 ### 实现步骤 #### 准备工作 1. **硬件连接**:将OV7670摄像头通过SPI或I2C接口与STM32H750进行连接。注意配置好引脚信号(SCK、MISO、MOSI、NSS)。 2. **软件环境**:安装合适的IDE(如Keil、ST-LINK/V2调试工具),并准备相应的STM32CubeMX和STM32 HAL库。 #### 驱动实现 1. **初始化OV7670**:编写初始化函数设置OV7670的工作模式、分辨率、输出格式等参数。这一步通常涉及读取OV7670内部寄存器。 2. **配置FIFO**:设置OV7670FIFO模块,以便于数据缓存和传输管理。FIFO可以减少CPU占用,提高数据传输效率。 3. **数据流处理**:编写数据采集函数,通过SPI/I2C接口读取OV7670的数据,并利用FIFO存储数据。可以按照预定策略(例如满即传、周期性发送等)触发数据传输至主设备或其他处理模块。 4. **中断处理**:设计中断服务程序处理各种异常情况,比如错误检测、超时处理等。同时,优化中断响应机制以避免不必要的延迟影响实时性能。 ### 示例代码结构 ```c // 初始化OV7670和配置FIFO void camera_Init(void) { // 设置OV7670寄存器以开启SPI模式,设置分辨率等 // 启动FIFO模块 } // 数据采集函数 void dataCapture() { uint8_t frameBuffer[FRAME_BUFFER_SIZE]; // 从OV7670读取一帧数据到frameBuffer // 使用FIFO进行数据缓存,避免阻塞CPU transmitData(frameBuffer); } // 中断服务程序 ISR(InterruptVectorName) { // 处理中断事件,例如错误校验、数据完整性检查等 } ``` #### 注意事项 - 确保所有硬件连接无误,电平转换适配。 - 测试过程中,注意观察日志输出,排查潜在的兼容性和稳定性问题。 - 考虑使用外部ADC或数字滤波器对获取的数据进行预处理,提升图像质量。 ### 相关问题: 1. 在STM32H750上使用OV7670摄像头时,如何优化SPI传输速度而不丢失数据? 2. 当使用FIFO缓冲区进行图像数据采集时,如何有效地管理FIFO状态避免溢出或下溢? 3. 在集成图像处理算法前,有哪些关键测试点需考虑以确保摄像头驱动的稳定性和性能?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值