找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10180|回复: 8
收起左侧

stm32f429驱动ov2640源程序 原理图 AD和PADS封装库

[复制链接]
ID:155304 发表于 2017-3-18 23:26 | 显示全部楼层 |阅读模式
1、秉火 OV2640 200W摄像头模块 可直接插到 秉火 F429 中使用,有专用的接口

2、如果你单买了模块,使用的不是我们的F429,程序在移植的时候如果出现问题
   比如花屏,显示不成功,请检查接线是否正确,程序移植是否有遗漏,模块在
   发货之前都会测试完好才发货,一般硬件是不会有问题的。
   
3、OV2640必须是有DCMI接口的F4才可以驱动,我们只提供F429的程序,如果你使用
   的是F407,请自行参考我们的程序移植。F1没有DCMI接口,驱动不了OV2640,请知悉。
0.png

0.png

/*********************************************************************************************/
本文档使用 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的主程序:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2017-xx-xx
  7.   * @brief   OV2640摄像头显示例程
  8.   ******************************************************************************
  9.   * @attention
  10.   *
  11.   * 实验平台:秉火 STM32  F429开发板
  12.   *
  13.   ******************************************************************************
  14.   */
  15.   
  16. #include "stm32f4xx.h"
  17. #include "./usart/bsp_debug_usart.h"
  18. #include "./sdram/bsp_sdram.h"
  19. #include "./lcd/bsp_lcd.h"
  20. #include "./camera/bsp_ov2640.h"
  21. #include "./systick/bsp_SysTick.h"

  22. /*简单任务管理*/
  23. uint32_t Task_Delay[NumOfTask];

  24. uint8_t dispBuf[100];
  25. OV2640_IDTypeDef OV2640_Camera_ID;

  26. uint8_t fps=0;

  27. //显示帧率数据,默认不显示,需要显示时把这个宏设置为1即可,(会有轻微花屏现象!)
  28. //经测试液晶显示摄像头数据800*480像素,帧率为14.2帧/秒。
  29. #define FRAME_RATE_DISPLAY         1



  30. /**
  31.   * @brief  主函数
  32.   * @param  无
  33.   * @retval 无
  34.   */
  35. int main(void)
  36. {
  37.   
  38.         /*摄像头与RGB LED灯共用引脚,不要同时使用LED和摄像头*/
  39.        
  40.   Debug_USART_Config();   
  41.        
  42.         /* 配置SysTick 为10us中断一次,时间到后触发定时中断,
  43.         *进入stm32fxx_it.c文件的SysTick_Handler处理,通过数中断次数计时
  44.         */
  45.         SysTick_Init();

  46.        
  47.         /*初始化液晶屏*/
  48.   LCD_Init();
  49.   LCD_LayerInit();
  50.   LTDC_Cmd(ENABLE);
  51.        
  52.         /*把背景层刷黑色*/
  53.   LCD_SetLayer(LCD_BACKGROUND_LAYER);  
  54.         LCD_SetTransparency(0xFF);
  55.         LCD_Clear(LCD_COLOR_BLACK);
  56.        
  57.   /*初始化后默认使用前景层*/
  58.         LCD_SetLayer(LCD_FOREGROUND_LAYER);
  59.         /*默认设置不透明        ,该函数参数为不透明度,范围 0-0xff ,0为全透明,0xff为不透明*/
  60.   LCD_SetTransparency(0xFF);
  61.         LCD_Clear(TRANSPARENCY);
  62.        
  63.         LCD_SetColors(LCD_COLOR_RED,TRANSPARENCY);

  64.         LCD_ClearLine(LINE(18));
  65.   LCD_DisplayStringLine_EN_CH(LINE(18),(uint8_t* )" 模式:UXGA 800x480");

  66.   CAMERA_DEBUG("STM32F429 DCMI 驱动OV2640例程");

  67.   /* 初始化摄像头GPIO及IIC */
  68.   OV2640_HW_Init();   

  69.   /* 读取摄像头芯片ID,确定摄像头正常连接 */
  70.   OV2640_ReadID(&OV2640_Camera_ID);

  71.    if(OV2640_Camera_ID.PIDH  == 0x26)
  72.   {
  73. //    sprintf((char*)dispBuf, "              OV2640 摄像头,ID:0x%x", OV2640_Camera_ID.PIDH);
  74. //                LCD_DisplayStringLine_EN_CH(LINE(0),(uint8_t*)dispBuf);
  75.     CAMERA_DEBUG("%x %x",OV2640_Camera_ID.Manufacturer_ID1 ,OV2640_Camera_ID.Manufacturer_ID2);

  76.   }
  77.   else
  78.   {
  79.     LCD_SetTextColor(LCD_COLOR_RED);
  80.     LCD_DisplayStringLine_EN_CH(LINE(0),(uint8_t*) "         没有检测到OV2640,请重新检查连接。");
  81.     CAMERA_DEBUG("没有检测到OV2640摄像头,请重新检查连接。");

  82.     while(1);  
  83.   }

  84.   
  85.   OV2640_Init();
  86.   OV2640_UXGAConfig();
  87.   
  88.         //使能DCMI采集数据
  89.   DCMI_Cmd(ENABLE);
  90.   DCMI_CaptureCmd(ENABLE);        



  91.         /*DMA直接传输摄像头数据到LCD屏幕显示*/
  92.   while(1)
  93.         {

  94. //显示帧率,默认不显示               
  95. #if FRAME_RATE_DISPLAY               
  96.                 if(Task_Delay[0]==0)
  97.                 {
  98.                                                
  99.                         LCD_SetColors(LCD_COLOR_RED,TRANSPARENCY);

  100.                         LCD_ClearLine(LINE(17));
  101.                         sprintf((char*)dispBuf, " 帧率:%.1f/s", (float)fps/5.0);
  102.                        
  103.                         /*输出帧率*/
  104.                         LCD_DisplayStringLine_EN_CH(LINE(17),dispBuf);
  105.                         //重置
  106.                         fps =0;
  107.                        
  108.                        
  109.                         Task_Delay[0]=5000; //此值每1ms会减1,减到0才可以重新进来这里


  110.                 }
  111.                        
  112. #endif
  113.                
  114.         }




  115. }



  116. /*********************************************END OF FILE**********************/

复制代码

0.png 0.png
下载:
OV2640摄像头模块.zip (15.47 MB, 下载次数: 166)
回复

使用道具 举报

ID:190445 发表于 2017-4-17 17:28 | 显示全部楼层
太感谢楼主资料了
回复

使用道具 举报

ID:190445 发表于 2017-4-17 17:29 | 显示全部楼层
太感谢楼主资料了哦
回复

使用道具 举报

ID:210994 发表于 2017-6-14 00:03 | 显示全部楼层
感谢楼主
回复

使用道具 举报

ID:7922 发表于 2018-6-21 13:14 | 显示全部楼层
太感谢楼主资料了
回复

使用道具 举报

ID:265382 发表于 2018-7-2 19:15 | 显示全部楼层
特别好用的东西
回复

使用道具 举报

ID:256570 发表于 2019-4-14 14:39 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:436947 发表于 2019-5-9 10:14 | 显示全部楼层
楼主很优秀
回复

使用道具 举报

ID:186696 发表于 2021-2-4 11:19 | 显示全部楼层
太感谢楼主资料了,好人一生平安
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表