1 /**
2   ******************************************************************************
3   * @file    stm32f7xx_hal_dcmi_ex.h
4   * @author  MCD Application Team
5   * @version V1.0.1
6   * @date    25-June-2015
7   * @brief   Header file of DCMI Extension HAL module.
8   ******************************************************************************
9   * @attention
10   *
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
12   *
13   * Redistribution and use in source and binary forms, with or without modification,
14   * are permitted provided that the following conditions are met:
15   *   1. Redistributions of source code must retain the above copyright notice,
16   *      this list of conditions and the following disclaimer.
17   *   2. Redistributions in binary form must reproduce the above copyright notice,
18   *      this list of conditions and the following disclaimer in the documentation
19   *      and/or other materials provided with the distribution.
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors
21   *      may be used to endorse or promote products derived from this software
22   *      without specific prior written permission.
23   *
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34   *
35   ******************************************************************************
36   */
37 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F7xx_HAL_DCMI_EX_H
40 #define __STM32F7xx_HAL_DCMI_EX_H
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
46 
47 /* Includes ------------------------------------------------------------------*/
48 #include "stm32f7xx_hal_def.h"
49 
50 
51 /** @addtogroup STM32F7xx_HAL_Driver
52   * @{
53   */
54 
55 /** @addtogroup DCMIEx DCMIEx
56   * @{
57   */
58 
59 
60 /* Exported types ------------------------------------------------------------*/
61 /** @defgroup DCMIEx_Exported_Types DCMIEx Exported Types
62   * @{
63   */
64 /**
65   * @brief   DCMIEx Embedded Synchronisation CODE Init structure definition
66   */
67 typedef struct {
68     uint8_t FrameStartCode; /*!< Specifies the code of the frame start delimiter. */
69     uint8_t LineStartCode;  /*!< Specifies the code of the line start delimiter.  */
70     uint8_t LineEndCode;    /*!< Specifies the code of the line end delimiter.    */
71     uint8_t FrameEndCode;   /*!< Specifies the code of the frame end delimiter.   */
72 } DCMI_CodesInitTypeDef;
73 
74 /**
75   * @brief   DCMI Init structure definition
76   */
77 typedef struct {
78     uint32_t  SynchroMode;                /*!< Specifies the Synchronization Mode: Hardware or Embedded.
79                                              This parameter can be a value of @ref DCMI_Synchronization_Mode */
80 
81     uint32_t  PCKPolarity;                /*!< Specifies the Pixel clock polarity: Falling or Rising.
82                                              This parameter can be a value of @ref DCMI_PIXCK_Polarity       */
83 
84     uint32_t  VSPolarity;                 /*!< Specifies the Vertical synchronization polarity: High or Low.
85                                              This parameter can be a value of @ref DCMI_VSYNC_Polarity       */
86 
87     uint32_t  HSPolarity;                 /*!< Specifies the Horizontal synchronization polarity: High or Low.
88                                              This parameter can be a value of @ref DCMI_HSYNC_Polarity       */
89 
90     uint32_t  CaptureRate;                /*!< Specifies the frequency of frame capture: All, 1/2 or 1/4.
91                                              This parameter can be a value of @ref DCMI_Capture_Rate         */
92 
93     uint32_t  ExtendedDataMode;           /*!< Specifies the data width: 8-bit, 10-bit, 12-bit or 14-bit.
94                                              This parameter can be a value of @ref DCMI_Extended_Data_Mode   */
95 
96     DCMI_CodesInitTypeDef SyncroCode;     /*!< Specifies the code of the frame start delimiter.                */
97 
98     uint32_t JPEGMode;                    /*!< Enable or Disable the JPEG mode.
99                                              This parameter can be a value of @ref DCMI_MODE_JPEG            */
100 
101     uint32_t ByteSelectMode;              /*!< Specifies the data to be captured by the interface
102                                             This parameter can be a value of @ref DCMIEx_Byte_Select_Mode      */
103 
104     uint32_t ByteSelectStart;             /*!< Specifies if the data to be captured by the interface is even or odd
105                                             This parameter can be a value of @ref DCMIEx_Byte_Select_Start     */
106 
107     uint32_t LineSelectMode;              /*!< Specifies the line of data to be captured by the interface
108                                             This parameter can be a value of @ref DCMIEx_Line_Select_Mode      */
109 
110     uint32_t LineSelectStart;             /*!< Specifies if the line of data to be captured by the interface is even or odd
111                                             This parameter can be a value of @ref DCMIEx_Line_Select_Start     */
112 } DCMI_InitTypeDef;
113 
114 /**
115   * @}
116   */
117 
118 /* Exported constants --------------------------------------------------------*/
119 /** @defgroup DCMIEx_Exported_Constants DCMIEx Exported Constants
120   * @{
121   */
122 
123 /** @defgroup DCMIEx_Byte_Select_Mode DCMIEx Byte Select Mode
124   * @{
125   */
126 #define DCMI_BSM_ALL                 ((uint32_t)0x00000000) /*!< Interface captures all received data */
127 #define DCMI_BSM_OTHER               ((uint32_t)DCMI_CR_BSM_0) /*!< Interface captures every other byte from the received data */
128 #define DCMI_BSM_ALTERNATE_4         ((uint32_t)DCMI_CR_BSM_1) /*!< Interface captures one byte out of four */
129 #define DCMI_BSM_ALTERNATE_2         ((uint32_t)(DCMI_CR_BSM_0 | DCMI_CR_BSM_1)) /*!< Interface captures two bytes out of four */
130 
131 /**
132   * @}
133   */
134 
135 /** @defgroup DCMIEx_Byte_Select_Start DCMIEx Byte Select Start
136   * @{
137   */
138 #define DCMI_OEBS_ODD               ((uint32_t)0x00000000) /*!< Interface captures first data from the frame/line start, second one being dropped */
139 #define DCMI_OEBS_EVEN              ((uint32_t)DCMI_CR_OEBS) /*!< Interface captures second data from the frame/line start, first one being dropped */
140 
141 /**
142   * @}
143   */
144 
145 /** @defgroup DCMIEx_Line_Select_Mode DCMIEx Line Select Mode
146   * @{
147   */
148 #define DCMI_LSM_ALL                 ((uint32_t)0x00000000) /*!< Interface captures all received lines */
149 #define DCMI_LSM_ALTERNATE_2         ((uint32_t)DCMI_CR_LSM) /*!< Interface captures one line out of two */
150 
151 /**
152   * @}
153   */
154 
155 /** @defgroup DCMIEx_Line_Select_Start DCMIEx Line Select Start
156   * @{
157   */
158 #define DCMI_OELS_ODD               ((uint32_t)0x00000000) /*!< Interface captures first line from the frame start, second one being dropped */
159 #define DCMI_OELS_EVEN              ((uint32_t)DCMI_CR_OELS) /*!< Interface captures second line from the frame start, first one being dropped */
160 
161 /**
162   * @}
163   */
164 
165 /**
166   * @}
167   */
168 
169 /* Exported macro ------------------------------------------------------------*/
170 /* Exported functions --------------------------------------------------------*/
171 /* Private types -------------------------------------------------------------*/
172 /* Private variables ---------------------------------------------------------*/
173 /* Private constants ---------------------------------------------------------*/
174 /* Private macro -------------------------------------------------------------*/
175 /** @defgroup DCMIEx_Private_Macros DCMIEx Private Macros
176   * @{
177   */
178 #define IS_DCMI_BYTE_SELECT_MODE(MODE)(((MODE) == DCMI_BSM_ALL) || \
179                                        ((MODE) == DCMI_BSM_OTHER) || \
180                                        ((MODE) == DCMI_BSM_ALTERNATE_4) || \
181                                        ((MODE) == DCMI_BSM_ALTERNATE_2))
182 
183 #define IS_DCMI_BYTE_SELECT_START(POLARITY)(((POLARITY) == DCMI_OEBS_ODD) || \
184                                             ((POLARITY) == DCMI_OEBS_EVEN))
185 
186 #define IS_DCMI_LINE_SELECT_MODE(MODE)(((MODE) == DCMI_LSM_ALL) || \
187                                        ((MODE) == DCMI_LSM_ALTERNATE_2))
188 
189 #define IS_DCMI_LINE_SELECT_START(POLARITY)(((POLARITY) == DCMI_OELS_ODD) || \
190                                             ((POLARITY) == DCMI_OELS_EVEN))
191 /**
192   * @}
193   */
194 
195 /* Private functions ---------------------------------------------------------*/
196 
197 /**
198   * @}
199   */
200 
201 /**
202   * @}
203   */
204 
205 #ifdef __cplusplus
206 }
207 #endif
208 
209 #endif /* __STM32F7xx_HAL_DCMI_H */
210 
211 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
212