#ifndef __OV5640_H #define __OV5640_H /** ****************************************************************************** * @file DCMI/Camera/dcmi_ov5640.h * @author MCD Application Team * @version V1.0.1 * @date 13-April-2012 * @brief Header for dcmi_ov5640.c module ****************************************************************************** * @attention * *

© COPYRIGHT 2012 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.st.com/software_license_agreement_liberty_v2 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __DCMI_OV5640_H #define __DCMI_OV5640_H /* Includes ------------------------------------------------------------------*/ #include "stm32h7xx.h" #include "./lcd/bsp_lcd.h" #include "stm32h7xx_hal.h" extern DCMI_HandleTypeDef DCMI_Handle; /*摄像头采集图像的大小,改变这两个值可以改变数据量, 但不会加快采集速度,要加快采集速度需要改成SVGA模式*/ #define img_width 800 #define img_height 480 /* Exported constants --------------------------------------------------------*/ #define DCMI_DR_ADDRESS 0x50050028 #define FSMC_LCD_ADDRESS LCD_FRAME_BUFFER /* Image Sizes enumeration */ typedef enum { BMP_320x240 = 0x00, /* BMP Image 320x240 Size */ BMP_352x288 = 0x01, /* BMP Image 352x288 Size */ BMP_640x480 = 0x02, /* BMP Image 640x480 Size */ BMP_800x480 = 0x03, /* BMP Image 800x480 Size */ }ImageFormat_TypeDef; /*摄像头接口 */ //IIC SCCB #define CAMERA_I2C I2C1 #define CAMERA_I2C_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE() #define CAMERA_I2C_SCL_PIN GPIO_PIN_8 #define CAMERA_I2C_SCL_GPIO_PORT GPIOB #define CAMERA_I2C_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define CAMERA_I2C_SCL_AF GPIO_AF4_I2C1 #define CAMERA_I2C_SDA_PIN GPIO_PIN_9 #define CAMERA_I2C_SDA_GPIO_PORT GPIOB #define CAMERA_I2C_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define CAMERA_I2C_SDA_AF GPIO_AF4_I2C1 //VSYNC #define DCMI_VSYNC_GPIO_PORT GPIOB #define DCMI_VSYNC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define DCMI_VSYNC_GPIO_PIN GPIO_PIN_7 #define DCMI_VSYNC_AF GPIO_AF13_DCMI // HSYNC #define DCMI_HSYNC_GPIO_PORT GPIOA #define DCMI_HSYNC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() #define DCMI_HSYNC_GPIO_PIN GPIO_PIN_4 #define DCMI_HSYNC_AF GPIO_AF13_DCMI //PIXCLK #define DCMI_PIXCLK_GPIO_PORT GPIOA #define DCMI_PIXCLK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() #define DCMI_PIXCLK_GPIO_PIN GPIO_PIN_6 #define DCMI_PIXCLK_AF GPIO_AF13_DCMI //PWDN #define DCMI_PWDN_GPIO_PORT GPIOB #define DCMI_PWDN_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define DCMI_PWDN_GPIO_PIN GPIO_PIN_10 //RST #define DCMI_RST_GPIO_PORT GPIOF #define DCMI_RST_GPIO_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE() #define DCMI_RST_GPIO_PIN GPIO_PIN_10 //数据信号线 #define DCMI_D0_GPIO_PORT GPIOC #define DCMI_D0_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() #define DCMI_D0_GPIO_PIN GPIO_PIN_6 #define DCMI_D0_AF GPIO_AF13_DCMI #define DCMI_D1_GPIO_PORT GPIOC #define DCMI_D1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() #define DCMI_D1_GPIO_PIN GPIO_PIN_7 #define DCMI_D1_AF GPIO_AF13_DCMI #define DCMI_D2_GPIO_PORT GPIOG #define DCMI_D2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE() #define DCMI_D2_GPIO_PIN GPIO_PIN_10 #define DCMI_D2_AF GPIO_AF13_DCMI #define DCMI_D3_GPIO_PORT GPIOG #define DCMI_D3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE() #define DCMI_D3_GPIO_PIN GPIO_PIN_11 #define DCMI_D3_AF GPIO_AF13_DCMI #define DCMI_D4_GPIO_PORT GPIOE #define DCMI_D4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() #define DCMI_D4_GPIO_PIN GPIO_PIN_4 #define DCMI_D4_AF GPIO_AF13_DCMI #define DCMI_D5_GPIO_PORT GPIOD #define DCMI_D5_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() #define DCMI_D5_GPIO_PIN GPIO_PIN_3 #define DCMI_D5_AF GPIO_AF13_DCMI #define DCMI_D6_GPIO_PORT GPIOE #define DCMI_D6_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() #define DCMI_D6_GPIO_PIN GPIO_PIN_5 #define DCMI_D6_AF GPIO_AF13_DCMI #define DCMI_D7_GPIO_PORT GPIOE #define DCMI_D7_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() #define DCMI_D7_GPIO_PIN GPIO_PIN_6 #define DCMI_D7_AF GPIO_AF13_DCMI /*debug*/ #define CAMERA_DEBUG_ON 1 #define CAMERA_DEBUG_ARRAY_ON 1 #define CAMERA_DEBUG_FUNC_ON 1 // Log define #define CAMERA_INFO(fmt,arg...) printf("<<-CAMERA-INFO->> "fmt"\n",##arg) #define CAMERA_ERROR(fmt,arg...) printf("<<-CAMERA-ERROR->> "fmt"\n",##arg) #define CAMERA_DEBUG(fmt,arg...) do{\ if(CAMERA_DEBUG_ON)\ printf("<<-CAMERA-DEBUG->> [%d]"fmt"\n",__LINE__, ##arg);\ }while(0) #define CAMERA_DEBUG_ARRAY(array, num) do{\ int32_t i;\ uint8_t* a = array;\ if(CAMERA_DEBUG_ARRAY_ON)\ {\ printf("<<-CAMERA-DEBUG-ARRAY->>\n");\ for (i = 0; i < (num); i++)\ {\ printf("%02x ", (a)[i]);\ if ((i + 1 ) %10 == 0)\ {\ printf("\n");\ }\ }\ printf("\n");\ }\ }while(0) #define CAMERA_DEBUG_FUNC() do{\ if(CAMERA_DEBUG_FUNC_ON)\ printf("<<-CAMERA-FUNC->> Func:%s@Line:%d\n",__func__,__LINE__);\ }while(0) /* Exported types ------------------------------------------------------------*/ //存储摄像头ID的结构体 typedef struct { uint8_t PIDH; uint8_t PIDL; }OV5640_IDTypeDef; #define OV5640_DEVICE_WRITE_ADDRESS 0x78 #define OV5640_DEVICE_READ_ADDRESS 0x79 #define OV5640_SENSOR_PIDH 0x300A #define OV5640_SENSOR_PIDL 0x300B /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ void OV5640_HW_Init(void); void OV5640_I2C_Init(void); void OV5640_Reset(void); void OV5640_ReadID(OV5640_IDTypeDef *OV5640ID); void OV5640_Init(void); void OV5640_QQVGAConfig(void); void OV5640_WVGAConfig(void); void OV5640_RGB565Config(void); uint8_t OV5640_WriteReg(uint16_t Addr, uint8_t Data); uint8_t OV5640_ReadReg(uint16_t Addr); uint8_t OV5640_WriteFW(uint8_t *pBuffer ,uint16_t BufferSize); void OV5640_DMA_Config(uint32_t DMA_Memory0BaseAddr,uint32_t DMA_BufferSize); void I2Cx_Error(I2C_HandleTypeDef *i2c_handler); #endif /* __DCMI_OV5640_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ #endif /* __LED_H */