【STM32】STM32F1 利用 GPIO 模拟摄像头接口(DVP)驱动 OV2640 摄像头模块
这是一个很折磨人的过程我最多优化到了 1-3 FPS所以选型一定要选好不要折磨自己做摄像机尽量去用 MPU而不是 MCU。设备STM32F103C8T6 核心板OV2640 模块效果效果图更新成功达到 640x4807fps更新达到 360p14fpsOV2640 实际时序图时序由寄存器控制需要注意。接口连接表接口信息在ov2640.h里请以代码中的接口信息为准OV2640 ModulePCLKPWDNRESETHREFVSYNCSCCB_CLKSCCB_SDADATA0-7STM32 MCUPB0PB1PB3PB4PB5PB10PB11PA0-7难点1.SCCB 模拟SCCB 是 I2C-bus 的变体主要是 OV2640 模块没有上拉电阻无法进行通信我花了好长时间才发现这个问题。2.并行接口的模拟如果使用 IO 模拟的话只能达到 1 FPS但是使用了 Timer 和 DMA就可以达到 1.5-3 FPS。3.OV2640 CMOS image sensor (CIS) 的 CLK 和 DVP PCLK 要根据 datasheet 来调整太快太慢都不行。4.必须按照要求配置好寄存器由于存在大量隐藏寄存器datasheet 没有给出所以需要参考 application note 中的 reference setting源码我放在 GitHub 了要拿自己取stm32f1_ov2640 - GitHub