1、秉火 OV2640 200W摄像头模块 可直接插到 秉火 F429 中使用,有专用的接口
2、如果你单买了模块,使用的不是我们的F429,程序在移植的时候如果出现问题
比如花屏,显示不成功,请检查接线是否正确,程序移植是否有遗漏,模块在
发货之前都会测试完好才发货,一般硬件是不会有问题的。
3、OV2640必须是有DCMI接口的F4才可以驱动,我们只提供F429的程序,如果你使用
的是F407,请自行参考我们的程序移植。F1没有DCMI接口,驱动不了OV2640,请知悉。
/*********************************************************************************************/
本文档使用 TAB = 4 对齐,使用keil5默认配置打开阅读比较方便。
【*】程序简介
-工程名称:OV2640摄像头
-实验平台: 秉火STM32 F429 开发板
-MDK版本:5.16
-ST固件库版本:1.5.1
【 !】功能简介:
使用DCMI驱动OV2640摄像头,拍摄的图像直接显示在液晶屏上。
学习目的:学习如何使用DCMI。
【 !】实验操作:
连接好配套的5.0寸液晶屏,OV2640摄像头,下载程序后复位开发板即可,屏幕会显示拍摄得到的图像。
若汉字不正常显示,需要重新往外部FLASH烧录字模!!!
【*】注意事项:
OV2640与RGB LED灯引脚共用,两个设备不能同时使用。
本程序液晶显示的汉字字模是存储在外部FLASH的。
字模:GB2312汉字库,24*24,宋体,支持中文标点。字模位置见FLASH空间表。
【*】性能
OV2640 最高支持200W像素,支持jpeg格式直接输出。
本例子使用800*480像素。
数据采集+液晶显示:14.2帧/秒
【*】液晶屏分层格式
底层RGB565格式,顶层RGB1555格式。
摄像头显示在底层,文字显示在顶层。
摄像头显示部分的液晶层(本例为底层)只支持RGB565格式。
/*******************************************************************************************************************/
【*】 引脚分配
摄像头:
摄像头数据接口与STM32的DCMI接口相连,控制接口与STM32的IIC相连。
HREF <--->PA4
VSYNC <--->PI5
XCLK <--->PA6
PCK <--->PA8
RST <--->PG2
PWDN <--->PG3
SCL<--->PB6
SDA<--->PB7
数据线DO0-DO7省略。
液晶屏:
液晶屏接口与STM32的LTDC接口相连,支持RGB888、565格式,
STM32直接驱动,无需外部液晶屏驱动芯片.
/*液晶控制信号线*/
CLK <--->PG7
HSYNC <--->PI10
VSYNC <--->PI9
DE <--->PF10
DISP <--->PD4
BL <--->PD7
/*电容触摸屏信号线*/
RSTN <--->PD13
INT <--->PD12
SDA <--->PH5
SCL <--->PH4
RGB信号线省略,本实验没有驱动触摸屏,详看触摸画板实验。
SDRAM (IS42S16400J8M 字节):
SDRAM芯片的接口与STM32的FMC相连。
/*控制信号线*/
CS <--->PH6
BA0 <--->PG4
BA1 <--->PG5
WE <--->PC0
CS <--->PH6
RAS <--->PF11
CAS <--->PG15
CLK <--->PG8
CKE <--->PH7
UDQM<--->PE1
LDQM<--->PE0
地址和数据信号线省略,本连接的SDRAM基地址为 (0xD0000000),结束地址为(0xD0800000),大小为8M字节
FLASH(W25Q128):
FLASH芯片的SPI接口与STM32的SPI3相连。
SCK <--->PB3
MISO<--->PB4
MOSI<--->PB5
CS <--->PI8
串口(TTL-USB TO USART):
CH340的收发引脚与STM32的发收引脚相连。
RX<--->PA9
TX<--->PA10
/*****************************************************************************************************/
【*】 时钟
A.晶振:
-外部高速晶振:25MHz
-RTC晶振:32.768KHz
B.各总线运行时钟:
-系统时钟 = SYCCLK = AHB1 = 180MHz
-APB2 = 90MHz
-APB1 = 45MHz
C.浮点运算单元:
使用
/*********************************************************************************************/
【*】 版本
-程序版本:1.0
-版本更新说明:首次发布
/*********************************************************************************************/
stm32f429驱动ov2640的主程序:
- /**
- ******************************************************************************
- * @file main.c
- * @author fire
- * @version V1.0
- * @date 2017-xx-xx
- * @brief OV2640摄像头显示例程
- ******************************************************************************
- * @attention
- *
- * 实验平台:秉火 STM32 F429开发板
- *
- ******************************************************************************
- */
-
- #include "stm32f4xx.h"
- #include "./usart/bsp_debug_usart.h"
- #include "./sdram/bsp_sdram.h"
- #include "./lcd/bsp_lcd.h"
- #include "./camera/bsp_ov2640.h"
- #include "./systick/bsp_SysTick.h"
- /*简单任务管理*/
- uint32_t Task_Delay[NumOfTask];
- uint8_t dispBuf[100];
- OV2640_IDTypeDef OV2640_Camera_ID;
- uint8_t fps=0;
- //显示帧率数据,默认不显示,需要显示时把这个宏设置为1即可,(会有轻微花屏现象!)
- //经测试液晶显示摄像头数据800*480像素,帧率为14.2帧/秒。
- #define FRAME_RATE_DISPLAY 1
- /**
- * @brief 主函数
- * @param 无
- * @retval 无
- */
- int main(void)
- {
-
- /*摄像头与RGB LED灯共用引脚,不要同时使用LED和摄像头*/
-
- Debug_USART_Config();
-
- /* 配置SysTick 为10us中断一次,时间到后触发定时中断,
- *进入stm32fxx_it.c文件的SysTick_Handler处理,通过数中断次数计时
- */
- SysTick_Init();
-
- /*初始化液晶屏*/
- LCD_Init();
- LCD_LayerInit();
- LTDC_Cmd(ENABLE);
-
- /*把背景层刷黑色*/
- LCD_SetLayer(LCD_BACKGROUND_LAYER);
- LCD_SetTransparency(0xFF);
- LCD_Clear(LCD_COLOR_BLACK);
-
- /*初始化后默认使用前景层*/
- LCD_SetLayer(LCD_FOREGROUND_LAYER);
- /*默认设置不透明 ,该函数参数为不透明度,范围 0-0xff ,0为全透明,0xff为不透明*/
- LCD_SetTransparency(0xFF);
- LCD_Clear(TRANSPARENCY);
-
- LCD_SetColors(LCD_COLOR_RED,TRANSPARENCY);
- LCD_ClearLine(LINE(18));
- LCD_DisplayStringLine_EN_CH(LINE(18),(uint8_t* )" 模式:UXGA 800x480");
- CAMERA_DEBUG("STM32F429 DCMI 驱动OV2640例程");
- /* 初始化摄像头GPIO及IIC */
- OV2640_HW_Init();
- /* 读取摄像头芯片ID,确定摄像头正常连接 */
- OV2640_ReadID(&OV2640_Camera_ID);
- if(OV2640_Camera_ID.PIDH == 0x26)
- {
- // sprintf((char*)dispBuf, " OV2640 摄像头,ID:0x%x", OV2640_Camera_ID.PIDH);
- // LCD_DisplayStringLine_EN_CH(LINE(0),(uint8_t*)dispBuf);
- CAMERA_DEBUG("%x %x",OV2640_Camera_ID.Manufacturer_ID1 ,OV2640_Camera_ID.Manufacturer_ID2);
- }
- else
- {
- LCD_SetTextColor(LCD_COLOR_RED);
- LCD_DisplayStringLine_EN_CH(LINE(0),(uint8_t*) " 没有检测到OV2640,请重新检查连接。");
- CAMERA_DEBUG("没有检测到OV2640摄像头,请重新检查连接。");
- while(1);
- }
-
- OV2640_Init();
- OV2640_UXGAConfig();
-
- //使能DCMI采集数据
- DCMI_Cmd(ENABLE);
- DCMI_CaptureCmd(ENABLE);
- /*DMA直接传输摄像头数据到LCD屏幕显示*/
- while(1)
- {
- //显示帧率,默认不显示
- #if FRAME_RATE_DISPLAY
- if(Task_Delay[0]==0)
- {
-
- LCD_SetColors(LCD_COLOR_RED,TRANSPARENCY);
- LCD_ClearLine(LINE(17));
- sprintf((char*)dispBuf, " 帧率:%.1f/s", (float)fps/5.0);
-
- /*输出帧率*/
- LCD_DisplayStringLine_EN_CH(LINE(17),dispBuf);
- //重置
- fps =0;
-
-
- Task_Delay[0]=5000; //此值每1ms会减1,减到0才可以重新进来这里
- }
-
- #endif
-
- }
- }
- /*********************************************END OF FILE**********************/
复制代码
下载:
OV2640摄像头模块.zip
(15.47 MB, 下载次数: 166)
|