2 ******************************************************************************
\r
3 * @file stm32f7xx_hal_dcmi.h
\r
4 * @author MCD Application Team
\r
7 * @brief Header file of DCMI HAL module.
\r
8 ******************************************************************************
\r
11 * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
\r
13 * Redistribution and use in source and binary forms, with or without modification,
\r
14 * are permitted provided that the following conditions are met:
\r
15 * 1. Redistributions of source code must retain the above copyright notice,
\r
16 * this list of conditions and the following disclaimer.
\r
17 * 2. Redistributions in binary form must reproduce the above copyright notice,
\r
18 * this list of conditions and the following disclaimer in the documentation
\r
19 * and/or other materials provided with the distribution.
\r
20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
\r
21 * may be used to endorse or promote products derived from this software
\r
22 * without specific prior written permission.
\r
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
\r
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
\r
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
\r
27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
\r
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
\r
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
\r
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
\r
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
\r
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
\r
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\r
35 ******************************************************************************
\r
38 /* Define to prevent recursive inclusion -------------------------------------*/
\r
39 #ifndef __STM32F7xx_HAL_DCMI_H
\r
40 #define __STM32F7xx_HAL_DCMI_H
\r
46 /* Includes ------------------------------------------------------------------*/
\r
47 #include "stm32f7xx_hal_def.h"
\r
49 /* Include DCMI HAL Extended module */
\r
50 /* (include on top of file since DCMI structures are defined in extended file) */
\r
51 #include "stm32f7xx_hal_dcmi_ex.h"
\r
53 /** @addtogroup STM32F7xx_HAL_Driver
\r
57 /** @addtogroup DCMI DCMI
\r
58 * @brief DCMI HAL module driver
\r
62 /* Exported types ------------------------------------------------------------*/
\r
63 /** @defgroup DCMI_Exported_Types DCMI Exported Types
\r
67 * @brief HAL DCMI State structures definition
\r
71 HAL_DCMI_STATE_RESET = 0x00, /*!< DCMI not yet initialized or disabled */
\r
72 HAL_DCMI_STATE_READY = 0x01, /*!< DCMI initialized and ready for use */
\r
73 HAL_DCMI_STATE_BUSY = 0x02, /*!< DCMI internal processing is ongoing */
\r
74 HAL_DCMI_STATE_TIMEOUT = 0x03, /*!< DCMI timeout state */
\r
75 HAL_DCMI_STATE_ERROR = 0x04 /*!< DCMI error state */
\r
76 }HAL_DCMI_StateTypeDef;
\r
79 * @brief DCMI handle Structure definition
\r
83 DCMI_TypeDef *Instance; /*!< DCMI Register base address */
\r
85 DCMI_InitTypeDef Init; /*!< DCMI parameters */
\r
87 HAL_LockTypeDef Lock; /*!< DCMI locking object */
\r
89 __IO HAL_DCMI_StateTypeDef State; /*!< DCMI state */
\r
91 __IO uint32_t XferCount; /*!< DMA transfer counter */
\r
93 __IO uint32_t XferSize; /*!< DMA transfer size */
\r
95 uint32_t XferTransferNumber; /*!< DMA transfer number */
\r
97 uint32_t pBuffPtr; /*!< Pointer to DMA output buffer */
\r
99 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer to the DMA handler */
\r
101 __IO uint32_t ErrorCode; /*!< DCMI Error code */
\r
103 }DCMI_HandleTypeDef;
\r
107 /* Exported constants --------------------------------------------------------*/
\r
109 /** @defgroup DCMI_Exported_Constants DCMI Exported Constants
\r
113 /** @defgroup DCMI_Error_Code DCMI Error Code
\r
116 #define HAL_DCMI_ERROR_NONE ((uint32_t)0x00000000) /*!< No error */
\r
117 #define HAL_DCMI_ERROR_OVF ((uint32_t)0x00000001) /*!< Overflow error */
\r
118 #define HAL_DCMI_ERROR_SYNC ((uint32_t)0x00000002) /*!< Synchronization error */
\r
119 #define HAL_DCMI_ERROR_TIMEOUT ((uint32_t)0x00000020) /*!< Timeout error */
\r
124 /** @defgroup DCMI_Capture_Mode DCMI Capture Mode
\r
127 #define DCMI_MODE_CONTINUOUS ((uint32_t)0x00000000) /*!< The received data are transferred continuously
\r
128 into the destination memory through the DMA */
\r
129 #define DCMI_MODE_SNAPSHOT ((uint32_t)DCMI_CR_CM) /*!< Once activated, the interface waits for the start of
\r
130 frame and then transfers a single frame through the DMA */
\r
135 /** @defgroup DCMI_Synchronization_Mode DCMI Synchronization Mode
\r
138 #define DCMI_SYNCHRO_HARDWARE ((uint32_t)0x00000000) /*!< Hardware synchronization data capture (frame/line start/stop)
\r
139 is synchronized with the HSYNC/VSYNC signals */
\r
140 #define DCMI_SYNCHRO_EMBEDDED ((uint32_t)DCMI_CR_ESS) /*!< Embedded synchronization data capture is synchronized with
\r
141 synchronization codes embedded in the data flow */
\r
147 /** @defgroup DCMI_PIXCK_Polarity DCMI PIXCK Polarity
\r
150 #define DCMI_PCKPOLARITY_FALLING ((uint32_t)0x00000000) /*!< Pixel clock active on Falling edge */
\r
151 #define DCMI_PCKPOLARITY_RISING ((uint32_t)DCMI_CR_PCKPOL) /*!< Pixel clock active on Rising edge */
\r
157 /** @defgroup DCMI_VSYNC_Polarity DCMI VSYNC Polarity
\r
160 #define DCMI_VSPOLARITY_LOW ((uint32_t)0x00000000) /*!< Vertical synchronization active Low */
\r
161 #define DCMI_VSPOLARITY_HIGH ((uint32_t)DCMI_CR_VSPOL) /*!< Vertical synchronization active High */
\r
167 /** @defgroup DCMI_HSYNC_Polarity DCMI HSYNC Polarity
\r
170 #define DCMI_HSPOLARITY_LOW ((uint32_t)0x00000000) /*!< Horizontal synchronization active Low */
\r
171 #define DCMI_HSPOLARITY_HIGH ((uint32_t)DCMI_CR_HSPOL) /*!< Horizontal synchronization active High */
\r
177 /** @defgroup DCMI_MODE_JPEG DCMI MODE JPEG
\r
180 #define DCMI_JPEG_DISABLE ((uint32_t)0x00000000) /*!< Mode JPEG Disabled */
\r
181 #define DCMI_JPEG_ENABLE ((uint32_t)DCMI_CR_JPEG) /*!< Mode JPEG Enabled */
\r
187 /** @defgroup DCMI_Capture_Rate DCMI Capture Rate
\r
190 #define DCMI_CR_ALL_FRAME ((uint32_t)0x00000000) /*!< All frames are captured */
\r
191 #define DCMI_CR_ALTERNATE_2_FRAME ((uint32_t)DCMI_CR_FCRC_0) /*!< Every alternate frame captured */
\r
192 #define DCMI_CR_ALTERNATE_4_FRAME ((uint32_t)DCMI_CR_FCRC_1) /*!< One frame in 4 frames captured */
\r
198 /** @defgroup DCMI_Extended_Data_Mode DCMI Extended Data Mode
\r
201 #define DCMI_EXTEND_DATA_8B ((uint32_t)0x00000000) /*!< Interface captures 8-bit data on every pixel clock */
\r
202 #define DCMI_EXTEND_DATA_10B ((uint32_t)DCMI_CR_EDM_0) /*!< Interface captures 10-bit data on every pixel clock */
\r
203 #define DCMI_EXTEND_DATA_12B ((uint32_t)DCMI_CR_EDM_1) /*!< Interface captures 12-bit data on every pixel clock */
\r
204 #define DCMI_EXTEND_DATA_14B ((uint32_t)(DCMI_CR_EDM_0 | DCMI_CR_EDM_1)) /*!< Interface captures 14-bit data on every pixel clock */
\r
210 /** @defgroup DCMI_Window_Coordinate DCMI Window Coordinate
\r
213 #define DCMI_WINDOW_COORDINATE ((uint32_t)0x3FFF) /*!< Window coordinate */
\r
219 /** @defgroup DCMI_Window_Height DCMI Window Height
\r
222 #define DCMI_WINDOW_HEIGHT ((uint32_t)0x1FFF) /*!< Window Height */
\r
228 /** @defgroup DCMI_interrupt_sources DCMI interrupt sources
\r
231 #define DCMI_IT_FRAME ((uint32_t)DCMI_IER_FRAME_IE)
\r
232 #define DCMI_IT_OVF ((uint32_t)DCMI_IER_OVF_IE)
\r
233 #define DCMI_IT_ERR ((uint32_t)DCMI_IER_ERR_IE)
\r
234 #define DCMI_IT_VSYNC ((uint32_t)DCMI_IER_VSYNC_IE)
\r
235 #define DCMI_IT_LINE ((uint32_t)DCMI_IER_LINE_IE)
\r
240 /** @defgroup DCMI_Flags DCMI Flags
\r
245 * @brief DCMI SR register
\r
247 #define DCMI_FLAG_HSYNC ((uint32_t)0x2001)
\r
248 #define DCMI_FLAG_VSYNC ((uint32_t)0x2002)
\r
249 #define DCMI_FLAG_FNE ((uint32_t)0x2004)
\r
251 * @brief DCMI RISR register
\r
253 #define DCMI_FLAG_FRAMERI ((uint32_t)DCMI_RISR_FRAME_RIS)
\r
254 #define DCMI_FLAG_OVFRI ((uint32_t)DCMI_RISR_OVF_RIS)
\r
255 #define DCMI_FLAG_ERRRI ((uint32_t)DCMI_RISR_ERR_RIS)
\r
256 #define DCMI_FLAG_VSYNCRI ((uint32_t)DCMI_RISR_VSYNC_RIS)
\r
257 #define DCMI_FLAG_LINERI ((uint32_t)DCMI_RISR_LINE_RIS)
\r
259 * @brief DCMI MISR register
\r
261 #define DCMI_FLAG_FRAMEMI ((uint32_t)0x1001)
\r
262 #define DCMI_FLAG_OVFMI ((uint32_t)0x1002)
\r
263 #define DCMI_FLAG_ERRMI ((uint32_t)0x1004)
\r
264 #define DCMI_FLAG_VSYNCMI ((uint32_t)0x1008)
\r
265 #define DCMI_FLAG_LINEMI ((uint32_t)0x1010)
\r
274 /* Exported macro ------------------------------------------------------------*/
\r
275 /** @defgroup DCMI_Exported_Macros DCMI Exported Macros
\r
279 /** @brief Reset DCMI handle state
\r
280 * @param __HANDLE__: specifies the DCMI handle.
\r
283 #define __HAL_DCMI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DCMI_STATE_RESET)
\r
286 * @brief Enable the DCMI.
\r
287 * @param __HANDLE__: DCMI handle
\r
290 #define __HAL_DCMI_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= DCMI_CR_ENABLE)
\r
293 * @brief Disable the DCMI.
\r
294 * @param __HANDLE__: DCMI handle
\r
297 #define __HAL_DCMI_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(DCMI_CR_ENABLE))
\r
299 /* Interrupt & Flag management */
\r
301 * @brief Get the DCMI pending flags.
\r
302 * @param __HANDLE__: DCMI handle
\r
303 * @param __FLAG__: Get the specified flag.
\r
304 * This parameter can be any combination of the following values:
\r
305 * @arg DCMI_FLAG_FRAMERI: Frame capture complete flag mask
\r
306 * @arg DCMI_FLAG_OVFRI: Overflow flag mask
\r
307 * @arg DCMI_FLAG_ERRRI: Synchronization error flag mask
\r
308 * @arg DCMI_FLAG_VSYNCRI: VSYNC flag mask
\r
309 * @arg DCMI_FLAG_LINERI: Line flag mask
\r
310 * @retval The state of FLAG.
\r
312 #define __HAL_DCMI_GET_FLAG(__HANDLE__, __FLAG__)\
\r
313 ((((__FLAG__) & 0x3000) == 0x0)? ((__HANDLE__)->Instance->RISR & (__FLAG__)) :\
\r
314 (((__FLAG__) & 0x2000) == 0x0)? ((__HANDLE__)->Instance->MISR & (__FLAG__)) : ((__HANDLE__)->Instance->SR & (__FLAG__)))
\r
317 * @brief Clear the DCMI pending flags.
\r
318 * @param __HANDLE__: DCMI handle
\r
319 * @param __FLAG__: specifies the flag to clear.
\r
320 * This parameter can be any combination of the following values:
\r
321 * @arg DCMI_FLAG_FRAMERI: Frame capture complete flag mask
\r
322 * @arg DCMI_FLAG_OVFRI: Overflow flag mask
\r
323 * @arg DCMI_FLAG_ERRRI: Synchronization error flag mask
\r
324 * @arg DCMI_FLAG_VSYNCRI: VSYNC flag mask
\r
325 * @arg DCMI_FLAG_LINERI: Line flag mask
\r
328 #define __HAL_DCMI_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
\r
331 * @brief Enable the specified DCMI interrupts.
\r
332 * @param __HANDLE__: DCMI handle
\r
333 * @param __INTERRUPT__: specifies the DCMI interrupt sources to be enabled.
\r
334 * This parameter can be any combination of the following values:
\r
335 * @arg DCMI_IT_FRAME: Frame capture complete interrupt mask
\r
336 * @arg DCMI_IT_OVF: Overflow interrupt mask
\r
337 * @arg DCMI_IT_ERR: Synchronization error interrupt mask
\r
338 * @arg DCMI_IT_VSYNC: VSYNC interrupt mask
\r
339 * @arg DCMI_IT_LINE: Line interrupt mask
\r
342 #define __HAL_DCMI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER |= (__INTERRUPT__))
\r
345 * @brief Disable the specified DCMI interrupts.
\r
346 * @param __HANDLE__: DCMI handle
\r
347 * @param __INTERRUPT__: specifies the DCMI interrupt sources to be enabled.
\r
348 * This parameter can be any combination of the following values:
\r
349 * @arg DCMI_IT_FRAME: Frame capture complete interrupt mask
\r
350 * @arg DCMI_IT_OVF: Overflow interrupt mask
\r
351 * @arg DCMI_IT_ERR: Synchronization error interrupt mask
\r
352 * @arg DCMI_IT_VSYNC: VSYNC interrupt mask
\r
353 * @arg DCMI_IT_LINE: Line interrupt mask
\r
356 #define __HAL_DCMI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER &= ~(__INTERRUPT__))
\r
359 * @brief Check whether the specified DCMI interrupt has occurred or not.
\r
360 * @param __HANDLE__: DCMI handle
\r
361 * @param __INTERRUPT__: specifies the DCMI interrupt source to check.
\r
362 * This parameter can be one of the following values:
\r
363 * @arg DCMI_IT_FRAME: Frame capture complete interrupt mask
\r
364 * @arg DCMI_IT_OVF: Overflow interrupt mask
\r
365 * @arg DCMI_IT_ERR: Synchronization error interrupt mask
\r
366 * @arg DCMI_IT_VSYNC: VSYNC interrupt mask
\r
367 * @arg DCMI_IT_LINE: Line interrupt mask
\r
368 * @retval The state of INTERRUPT.
\r
370 #define __HAL_DCMI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->MISR & (__INTERRUPT__))
\r
376 /* Exported functions --------------------------------------------------------*/
\r
377 /** @addtogroup DCMI_Exported_Functions DCMI Exported Functions
\r
381 /** @addtogroup DCMI_Exported_Functions_Group1 Initialization and Configuration functions
\r
384 /* Initialization and de-initialization functions *****************************/
\r
385 HAL_StatusTypeDef HAL_DCMI_Init(DCMI_HandleTypeDef *hdcmi);
\r
386 HAL_StatusTypeDef HAL_DCMI_DeInit(DCMI_HandleTypeDef *hdcmi);
\r
387 void HAL_DCMI_MspInit(DCMI_HandleTypeDef* hdcmi);
\r
388 void HAL_DCMI_MspDeInit(DCMI_HandleTypeDef* hdcmi);
\r
393 /** @addtogroup DCMI_Exported_Functions_Group2 IO operation functions
\r
396 /* IO operation functions *****************************************************/
\r
397 HAL_StatusTypeDef HAL_DCMI_Start_DMA(DCMI_HandleTypeDef* hdcmi, uint32_t DCMI_Mode, uint32_t pData, uint32_t Length);
\r
398 HAL_StatusTypeDef HAL_DCMI_Stop(DCMI_HandleTypeDef* hdcmi);
\r
399 void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi);
\r
400 void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi);
\r
401 void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi);
\r
402 void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi);
\r
403 void HAL_DCMI_IRQHandler(DCMI_HandleTypeDef *hdcmi);
\r
408 /** @addtogroup DCMI_Exported_Functions_Group3 Peripheral Control functions
\r
411 /* Peripheral Control functions ***********************************************/
\r
412 HAL_StatusTypeDef HAL_DCMI_ConfigCROP(DCMI_HandleTypeDef *hdcmi, uint32_t X0, uint32_t Y0, uint32_t XSize, uint32_t YSize);
\r
413 HAL_StatusTypeDef HAL_DCMI_EnableCROP(DCMI_HandleTypeDef *hdcmi);
\r
414 HAL_StatusTypeDef HAL_DCMI_DisableCROP(DCMI_HandleTypeDef *hdcmi);
\r
419 /** @addtogroup DCMI_Exported_Functions_Group4 Peripheral State functions
\r
422 /* Peripheral State functions *************************************************/
\r
423 HAL_DCMI_StateTypeDef HAL_DCMI_GetState(DCMI_HandleTypeDef *hdcmi);
\r
424 uint32_t HAL_DCMI_GetError(DCMI_HandleTypeDef *hdcmi);
\r
433 /* Private types -------------------------------------------------------------*/
\r
434 /* Private variables ---------------------------------------------------------*/
\r
435 /* Private constants ---------------------------------------------------------*/
\r
436 /* Private macro -------------------------------------------------------------*/
\r
437 /** @defgroup DCMI_Private_Macros DCMI Private Macros
\r
440 #define IS_DCMI_CAPTURE_MODE(MODE)(((MODE) == DCMI_MODE_CONTINUOUS) || \
\r
441 ((MODE) == DCMI_MODE_SNAPSHOT))
\r
443 #define IS_DCMI_SYNCHRO(MODE)(((MODE) == DCMI_SYNCHRO_HARDWARE) || \
\r
444 ((MODE) == DCMI_SYNCHRO_EMBEDDED))
\r
446 #define IS_DCMI_PCKPOLARITY(POLARITY)(((POLARITY) == DCMI_PCKPOLARITY_FALLING) || \
\r
447 ((POLARITY) == DCMI_PCKPOLARITY_RISING))
\r
449 #define IS_DCMI_VSPOLARITY(POLARITY)(((POLARITY) == DCMI_VSPOLARITY_LOW) || \
\r
450 ((POLARITY) == DCMI_VSPOLARITY_HIGH))
\r
452 #define IS_DCMI_HSPOLARITY(POLARITY)(((POLARITY) == DCMI_HSPOLARITY_LOW) || \
\r
453 ((POLARITY) == DCMI_HSPOLARITY_HIGH))
\r
455 #define IS_DCMI_MODE_JPEG(JPEG_MODE)(((JPEG_MODE) == DCMI_JPEG_DISABLE) || \
\r
456 ((JPEG_MODE) == DCMI_JPEG_ENABLE))
\r
458 #define IS_DCMI_CAPTURE_RATE(RATE) (((RATE) == DCMI_CR_ALL_FRAME) || \
\r
459 ((RATE) == DCMI_CR_ALTERNATE_2_FRAME) || \
\r
460 ((RATE) == DCMI_CR_ALTERNATE_4_FRAME))
\r
462 #define IS_DCMI_EXTENDED_DATA(DATA)(((DATA) == DCMI_EXTEND_DATA_8B) || \
\r
463 ((DATA) == DCMI_EXTEND_DATA_10B) || \
\r
464 ((DATA) == DCMI_EXTEND_DATA_12B) || \
\r
465 ((DATA) == DCMI_EXTEND_DATA_14B))
\r
467 #define IS_DCMI_WINDOW_COORDINATE(COORDINATE) ((COORDINATE) <= DCMI_WINDOW_COORDINATE)
\r
469 #define IS_DCMI_WINDOW_HEIGHT(HEIGHT) ((HEIGHT) <= DCMI_WINDOW_HEIGHT)
\r
475 /* Private functions ---------------------------------------------------------*/
\r
476 /** @addtogroup DCMI_Private_Functions DCMI Private Functions
\r
495 #endif /* __STM32F7xx_HAL_DCMI_H */
\r
497 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
\r