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