找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11000|回復(fù): 8
收起左側(cè)

stm32f429驅(qū)動ov2640源程序 原理圖 AD和PADS封裝庫

[復(fù)制鏈接]
ID:155304 發(fā)表于 2017-3-18 23:26 | 顯示全部樓層 |閱讀模式
1、秉火 OV2640 200W攝像頭模塊 可直接插到 秉火 F429 中使用,有專用的接口

2、如果你單買了模塊,使用的不是我們的F429,程序在移植的時候如果出現(xiàn)問題
   比如花屏,顯示不成功,請檢查接線是否正確,程序移植是否有遺漏,模塊在
   發(fā)貨之前都會測試完好才發(fā)貨,一般硬件是不會有問題的。
   
3、OV2640必須是有DCMI接口的F4才可以驅(qū)動,我們只提供F429的程序,如果你使用
   的是F407,請自行參考我們的程序移植。F1沒有DCMI接口,驅(qū)動不了OV2640,請知悉。
0.png

0.png

/*********************************************************************************************/
本文檔使用 TAB = 4 對齊,使用keil5默認配置打開閱讀比較方便。
【*】程序簡介

-工程名稱:OV2640攝像頭
-實驗平臺: 秉火STM32 F429 開發(fā)板
-MDK版本:5.16
-ST固件庫版本:1.5.1

【 !】功能簡介:
使用DCMI驅(qū)動OV2640攝像頭,拍攝的圖像直接顯示在液晶屏上。

學習目的:學習如何使用DCMI。


【 !】實驗操作:
連接好配套的5.0寸液晶屏,OV2640攝像頭,下載程序后復(fù)位開發(fā)板即可,屏幕會顯示拍攝得到的圖像。

若漢字不正常顯示,需要重新往外部FLASH燒錄字模。!

【*】注意事項:
OV2640與RGB LED燈引腳共用,兩個設(shè)備不能同時使用。

本程序液晶顯示的漢字字模是存儲在外部FLASH的。
字模:GB2312漢字庫,24*24,宋體,支持中文標點。字模位置見FLASH空間表。

【*】性能
OV2640 最高支持200W像素,支持jpeg格式直接輸出。
本例子使用800*480像素。
數(shù)據(jù)采集+液晶顯示:14.2幀/秒

【*】液晶屏分層格式

底層RGB565格式,頂層RGB1555格式。
攝像頭顯示在底層,文字顯示在頂層。
攝像頭顯示部分的液晶層(本例為底層)只支持RGB565格式。

/*******************************************************************************************************************/

【*】 引腳分配

攝像頭:
攝像頭數(shù)據(jù)接口與STM32的DCMI接口相連,控制接口與STM32的IIC相連。
        HREF    <--->PA4
        VSYNC    <--->PI5
        XCLK    <--->PA6
        PCK        <--->PA8
        RST        <--->PG2
        PWDN    <--->PG3

        SCL<--->PB6
        SDA<--->PB7
        
數(shù)據(jù)線DO0-DO7省略。



液晶屏:
液晶屏接口與STM32的LTDC接口相連,支持RGB888、565格式,
STM32直接驅(qū)動,無需外部液晶屏驅(qū)動芯片.

        /*液晶控制信號線*/        
        CLK        <--->PG7
        HSYNC    <--->PI10
        VSYNC    <--->PI9
        DE        <--->PF10
        DISP    <--->PD4
        BL        <--->PD7
        
        /*電容觸摸屏信號線*/        
        RSTN    <--->PD13
        INT        <--->PD12
        SDA        <--->PH5
        SCL        <--->PH4

RGB信號線省略,本實驗沒有驅(qū)動觸摸屏,詳看觸摸畫板實驗。


SDRAM (IS42S16400J8M 字節(jié)):
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
        
地址和數(shù)據(jù)信號線省略,本連接的SDRAM基地址為 (0xD0000000),結(jié)束地址為(0xD0800000),大小為8M字節(jié)

FLASH(W25Q128):
FLASH芯片的SPI接口與STM32的SPI3相連。
        SCK    <--->PB3
        MISO<--->PB4
        MOSI<--->PB5
        CS    <--->PI8

串口(TTL-USB TO USART):
CH340的收發(fā)引腳與STM32的發(fā)收引腳相連。
    RX<--->PA9
    TX<--->PA10
                                                
/*****************************************************************************************************/
【*】 時鐘

A.晶振:
-外部高速晶振:25MHz
-RTC晶振:32.768KHz

B.各總線運行時鐘:
-系統(tǒng)時鐘 = SYCCLK = AHB1 = 180MHz
-APB2 = 90MHz
-APB1 = 45MHz

C.浮點運算單元:
  使用

/*********************************************************************************************/
【*】 版本
-程序版本:1.0
-版本更新說明:首次發(fā)布
/*********************************************************************************************/

stm32f429驅(qū)動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開發(fā)板
  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. /*簡單任務(wù)管理*/
  23. uint32_t Task_Delay[NumOfTask];

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

  26. uint8_t fps=0;

  27. //顯示幀率數(shù)據(jù),默認不顯示,需要顯示時把這個宏設(shè)置為1即可,(會有輕微花屏現(xiàn)象!)
  28. //經(jīng)測試液晶顯示攝像頭數(shù)據(jù)800*480像素,幀率為14.2幀/秒。
  29. #define FRAME_RATE_DISPLAY         1



  30. /**
  31.   * @brief  主函數(shù)
  32.   * @param  無
  33.   * @retval 無
  34.   */
  35. int main(void)
  36. {
  37.   
  38.         /*攝像頭與RGB LED燈共用引腳,不要同時使用LED和攝像頭*/
  39.        
  40.   Debug_USART_Config();   
  41.        
  42.         /* 配置SysTick 為10us中斷一次,時間到后觸發(fā)定時中斷,
  43.         *進入stm32fxx_it.c文件的SysTick_Handler處理,通過數(shù)中斷次數(shù)計時
  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.         /*默認設(shè)置不透明        ,該函數(shù)參數(shù)為不透明度,范圍 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 驅(qū)動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采集數(shù)據(jù)
  89.   DCMI_Cmd(ENABLE);
  90.   DCMI_CaptureCmd(ENABLE);        



  91.         /*DMA直接傳輸攝像頭數(shù)據(jù)到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**********************/

復(fù)制代碼

0.png 0.png
下載:
OV2640攝像頭模塊.zip (15.47 MB, 下載次數(shù): 166)
回復(fù)

使用道具 舉報

ID:190445 發(fā)表于 2017-4-17 17:28 | 顯示全部樓層
太感謝樓主資料了
回復(fù)

使用道具 舉報

ID:190445 發(fā)表于 2017-4-17 17:29 | 顯示全部樓層
太感謝樓主資料了哦
回復(fù)

使用道具 舉報

ID:210994 發(fā)表于 2017-6-14 00:03 | 顯示全部樓層
感謝樓主
回復(fù)

使用道具 舉報

ID:7922 發(fā)表于 2018-6-21 13:14 | 顯示全部樓層
太感謝樓主資料了
回復(fù)

使用道具 舉報

ID:265382 發(fā)表于 2018-7-2 19:15 | 顯示全部樓層
特別好用的東西
回復(fù)

使用道具 舉報

ID:256570 發(fā)表于 2019-4-14 14:39 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報

ID:436947 發(fā)表于 2019-5-9 10:14 | 顯示全部樓層
樓主很優(yōu)秀
回復(fù)

使用道具 舉報

ID:186696 發(fā)表于 2021-2-4 11:19 | 顯示全部樓層
太感謝樓主資料了,好人一生平安
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表