1 /** 2 ****************************************************************************** 3 * @file stm32f4xx_hal_dcmi_ex.h 4 * @author MCD Application Team 5 * @brief Header file of DCMI Extension HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2017 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file in 13 * the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 ****************************************************************************** 16 */ 17 18 /* Define to prevent recursive inclusion -------------------------------------*/ 19 #ifndef __STM32F4xx_HAL_DCMI_EX_H 20 #define __STM32F4xx_HAL_DCMI_EX_H 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 #if defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F427xx) || defined(STM32F437xx) ||\ 27 defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F446xx) || defined(STM32F469xx) ||\ 28 defined(STM32F479xx) 29 30 /* Includes ------------------------------------------------------------------*/ 31 #include "stm32f4xx_hal_def.h" 32 33 34 /** @addtogroup STM32F4xx_HAL_Driver 35 * @{ 36 */ 37 38 /** @addtogroup DCMIEx 39 * @brief DCMI HAL module driver 40 * @{ 41 */ 42 43 /* Exported types ------------------------------------------------------------*/ 44 /** @defgroup DCMIEx_Exported_Types DCMI Extended Exported Types 45 * @{ 46 */ 47 /** 48 * @brief DCMIEx Embedded Synchronisation CODE Init structure definition 49 */ 50 typedef struct 51 { 52 uint8_t FrameStartCode; /*!< Specifies the code of the frame start delimiter. */ 53 uint8_t LineStartCode; /*!< Specifies the code of the line start delimiter. */ 54 uint8_t LineEndCode; /*!< Specifies the code of the line end delimiter. */ 55 uint8_t FrameEndCode; /*!< Specifies the code of the frame end delimiter. */ 56 }DCMI_CodesInitTypeDef; 57 58 /** 59 * @brief DCMI Init structure definition 60 */ 61 typedef struct 62 { 63 uint32_t SynchroMode; /*!< Specifies the Synchronization Mode: Hardware or Embedded. 64 This parameter can be a value of @ref DCMI_Synchronization_Mode */ 65 66 uint32_t PCKPolarity; /*!< Specifies the Pixel clock polarity: Falling or Rising. 67 This parameter can be a value of @ref DCMI_PIXCK_Polarity */ 68 69 uint32_t VSPolarity; /*!< Specifies the Vertical synchronization polarity: High or Low. 70 This parameter can be a value of @ref DCMI_VSYNC_Polarity */ 71 72 uint32_t HSPolarity; /*!< Specifies the Horizontal synchronization polarity: High or Low. 73 This parameter can be a value of @ref DCMI_HSYNC_Polarity */ 74 75 uint32_t CaptureRate; /*!< Specifies the frequency of frame capture: All, 1/2 or 1/4. 76 This parameter can be a value of @ref DCMI_Capture_Rate */ 77 78 uint32_t ExtendedDataMode; /*!< Specifies the data width: 8-bit, 10-bit, 12-bit or 14-bit. 79 This parameter can be a value of @ref DCMI_Extended_Data_Mode */ 80 81 DCMI_CodesInitTypeDef SyncroCode; /*!< Specifies the code of the frame start delimiter. */ 82 83 uint32_t JPEGMode; /*!< Enable or Disable the JPEG mode 84 This parameter can be a value of @ref DCMI_MODE_JPEG */ 85 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) 86 uint32_t ByteSelectMode; /*!< Specifies the data to be captured by the interface 87 This parameter can be a value of @ref DCMIEx_Byte_Select_Mode */ 88 89 uint32_t ByteSelectStart; /*!< Specifies if the data to be captured by the interface is even or odd 90 This parameter can be a value of @ref DCMIEx_Byte_Select_Start */ 91 92 uint32_t LineSelectMode; /*!< Specifies the line of data to be captured by the interface 93 This parameter can be a value of @ref DCMIEx_Line_Select_Mode */ 94 95 uint32_t LineSelectStart; /*!< Specifies if the line of data to be captured by the interface is even or odd 96 This parameter can be a value of @ref DCMIEx_Line_Select_Start */ 97 98 #endif /* STM32F446xx || STM32F469xx || STM32F479xx */ 99 }DCMI_InitTypeDef; 100 101 /** 102 * @} 103 */ 104 105 /* Exported constants --------------------------------------------------------*/ 106 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) 107 /** @defgroup DCMIEx_Exported_Constants DCMI Exported Constants 108 * @{ 109 */ 110 111 /** @defgroup DCMIEx_Byte_Select_Mode DCMI Byte Select Mode 112 * @{ 113 */ 114 #define DCMI_BSM_ALL 0x00000000U /*!< Interface captures all received data */ 115 #define DCMI_BSM_OTHER ((uint32_t)DCMI_CR_BSM_0) /*!< Interface captures every other byte from the received data */ 116 #define DCMI_BSM_ALTERNATE_4 ((uint32_t)DCMI_CR_BSM_1) /*!< Interface captures one byte out of four */ 117 #define DCMI_BSM_ALTERNATE_2 ((uint32_t)(DCMI_CR_BSM_0 | DCMI_CR_BSM_1)) /*!< Interface captures two bytes out of four */ 118 119 /** 120 * @} 121 */ 122 123 /** @defgroup DCMIEx_Byte_Select_Start DCMI Byte Select Start 124 * @{ 125 */ 126 #define DCMI_OEBS_ODD 0x00000000U /*!< Interface captures first data from the frame/line start, second one being dropped */ 127 #define DCMI_OEBS_EVEN ((uint32_t)DCMI_CR_OEBS) /*!< Interface captures second data from the frame/line start, first one being dropped */ 128 129 /** 130 * @} 131 */ 132 133 /** @defgroup DCMIEx_Line_Select_Mode DCMI Line Select Mode 134 * @{ 135 */ 136 #define DCMI_LSM_ALL 0x00000000U /*!< Interface captures all received lines */ 137 #define DCMI_LSM_ALTERNATE_2 ((uint32_t)DCMI_CR_LSM) /*!< Interface captures one line out of two */ 138 139 /** 140 * @} 141 */ 142 143 /** @defgroup DCMIEx_Line_Select_Start DCMI Line Select Start 144 * @{ 145 */ 146 #define DCMI_OELS_ODD 0x00000000U /*!< Interface captures first line from the frame start, second one being dropped */ 147 #define DCMI_OELS_EVEN ((uint32_t)DCMI_CR_OELS) /*!< Interface captures second line from the frame start, first one being dropped */ 148 149 /** 150 * @} 151 */ 152 153 /** 154 * @} 155 */ 156 #endif /* STM32F446xx || STM32F469xx || STM32F479xx */ 157 158 /* Exported macro ------------------------------------------------------------*/ 159 /* Exported functions --------------------------------------------------------*/ 160 /* Private types -------------------------------------------------------------*/ 161 /* Private variables ---------------------------------------------------------*/ 162 /* Private constants ---------------------------------------------------------*/ 163 #define DCMI_POSITION_ESCR_LSC (uint32_t)DCMI_ESCR_LSC_Pos /*!< Required left shift to set line start delimiter */ 164 #define DCMI_POSITION_ESCR_LEC (uint32_t)DCMI_ESCR_LEC_Pos /*!< Required left shift to set line end delimiter */ 165 #define DCMI_POSITION_ESCR_FEC (uint32_t)DCMI_ESCR_FEC_Pos /*!< Required left shift to set frame end delimiter */ 166 167 /* Private macro -------------------------------------------------------------*/ 168 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) 169 /** @defgroup DCMIEx_Private_Macros DCMI Extended Private Macros 170 * @{ 171 */ 172 #define IS_DCMI_BYTE_SELECT_MODE(MODE)(((MODE) == DCMI_BSM_ALL) || \ 173 ((MODE) == DCMI_BSM_OTHER) || \ 174 ((MODE) == DCMI_BSM_ALTERNATE_4) || \ 175 ((MODE) == DCMI_BSM_ALTERNATE_2)) 176 177 #define IS_DCMI_BYTE_SELECT_START(POLARITY)(((POLARITY) == DCMI_OEBS_ODD) || \ 178 ((POLARITY) == DCMI_OEBS_EVEN)) 179 180 #define IS_DCMI_LINE_SELECT_MODE(MODE)(((MODE) == DCMI_LSM_ALL) || \ 181 ((MODE) == DCMI_LSM_ALTERNATE_2)) 182 183 #define IS_DCMI_LINE_SELECT_START(POLARITY)(((POLARITY) == DCMI_OELS_ODD) || \ 184 ((POLARITY) == DCMI_OELS_EVEN)) 185 #endif /* STM32F446xx || STM32F469xx || STM32F479xx */ 186 /** 187 * @} 188 */ 189 190 /* Private functions ---------------------------------------------------------*/ 191 #endif /* STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\ 192 STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx ||\ 193 STM32F479xx */ 194 195 196 /** 197 * @} 198 */ 199 200 /** 201 * @} 202 */ 203 204 #ifdef __cplusplus 205 } 206 #endif 207 208 #endif /* __STM32F4xx_HAL_DCMI_H */ 209