Library to control Silicon Labs SI570 10 MHZ TO 1.4 GHZ I2C PROGRAMMABLE XO/VCXO.

Dependencies:   mbed

Fork of SI570 by Gerrit Polder

Committer:
DL3LD
Date:
Sun Mar 27 06:55:59 2016 +0000
Revision:
1:1556bcaaf759
STM32F746NG SI570 VFO Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DL3LD 1:1556bcaaf759 1 /**
DL3LD 1:1556bcaaf759 2 ******************************************************************************
DL3LD 1:1556bcaaf759 3 * @file stm32746g_discovery_camera.c
DL3LD 1:1556bcaaf759 4 * @author MCD Application Team
DL3LD 1:1556bcaaf759 5 * @version V1.0.0
DL3LD 1:1556bcaaf759 6 * @date 25-June-2015
DL3LD 1:1556bcaaf759 7 * @brief This file includes the driver for Camera modules mounted on
DL3LD 1:1556bcaaf759 8 * STM32746G-Discovery board.
DL3LD 1:1556bcaaf759 9 @verbatim
DL3LD 1:1556bcaaf759 10 How to use this driver:
DL3LD 1:1556bcaaf759 11 ------------------------
DL3LD 1:1556bcaaf759 12 - This driver is used to drive the camera.
DL3LD 1:1556bcaaf759 13 - The OV9655 component driver MUST be included with this driver.
DL3LD 1:1556bcaaf759 14
DL3LD 1:1556bcaaf759 15 Driver description:
DL3LD 1:1556bcaaf759 16 -------------------
DL3LD 1:1556bcaaf759 17 + Initialization steps:
DL3LD 1:1556bcaaf759 18 o Initialize the camera using the BSP_CAMERA_Init() function.
DL3LD 1:1556bcaaf759 19 o Start the camera capture/snapshot using the CAMERA_Start() function.
DL3LD 1:1556bcaaf759 20 o Suspend, resume or stop the camera capture using the following functions:
DL3LD 1:1556bcaaf759 21 - BSP_CAMERA_Suspend()
DL3LD 1:1556bcaaf759 22 - BSP_CAMERA_Resume()
DL3LD 1:1556bcaaf759 23 - BSP_CAMERA_Stop()
DL3LD 1:1556bcaaf759 24
DL3LD 1:1556bcaaf759 25 + Options
DL3LD 1:1556bcaaf759 26 o Increase or decrease on the fly the brightness and/or contrast
DL3LD 1:1556bcaaf759 27 using the following function:
DL3LD 1:1556bcaaf759 28 - BSP_CAMERA_ContrastBrightnessConfig
DL3LD 1:1556bcaaf759 29 o Add a special effect on the fly using the following functions:
DL3LD 1:1556bcaaf759 30 - BSP_CAMERA_BlackWhiteConfig()
DL3LD 1:1556bcaaf759 31 - BSP_CAMERA_ColorEffectConfig()
DL3LD 1:1556bcaaf759 32 @endverbatim
DL3LD 1:1556bcaaf759 33 ******************************************************************************
DL3LD 1:1556bcaaf759 34 * @attention
DL3LD 1:1556bcaaf759 35 *
DL3LD 1:1556bcaaf759 36 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
DL3LD 1:1556bcaaf759 37 *
DL3LD 1:1556bcaaf759 38 * Redistribution and use in source and binary forms, with or without modification,
DL3LD 1:1556bcaaf759 39 * are permitted provided that the following conditions are met:
DL3LD 1:1556bcaaf759 40 * 1. Redistributions of source code must retain the above copyright notice,
DL3LD 1:1556bcaaf759 41 * this list of conditions and the following disclaimer.
DL3LD 1:1556bcaaf759 42 * 2. Redistributions in binary form must reproduce the above copyright notice,
DL3LD 1:1556bcaaf759 43 * this list of conditions and the following disclaimer in the documentation
DL3LD 1:1556bcaaf759 44 * and/or other materials provided with the distribution.
DL3LD 1:1556bcaaf759 45 * 3. Neither the name of STMicroelectronics nor the names of its contributors
DL3LD 1:1556bcaaf759 46 * may be used to endorse or promote products derived from this software
DL3LD 1:1556bcaaf759 47 * without specific prior written permission.
DL3LD 1:1556bcaaf759 48 *
DL3LD 1:1556bcaaf759 49 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
DL3LD 1:1556bcaaf759 50 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
DL3LD 1:1556bcaaf759 51 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DL3LD 1:1556bcaaf759 52 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
DL3LD 1:1556bcaaf759 53 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DL3LD 1:1556bcaaf759 54 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
DL3LD 1:1556bcaaf759 55 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
DL3LD 1:1556bcaaf759 56 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
DL3LD 1:1556bcaaf759 57 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
DL3LD 1:1556bcaaf759 58 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
DL3LD 1:1556bcaaf759 59 *
DL3LD 1:1556bcaaf759 60 ******************************************************************************
DL3LD 1:1556bcaaf759 61 */
DL3LD 1:1556bcaaf759 62
DL3LD 1:1556bcaaf759 63 /* Includes ------------------------------------------------------------------*/
DL3LD 1:1556bcaaf759 64 #include "stm32746g_discovery_camera.h"
DL3LD 1:1556bcaaf759 65 #include "stm32746g_discovery.h"
DL3LD 1:1556bcaaf759 66
DL3LD 1:1556bcaaf759 67 /** @addtogroup BSP
DL3LD 1:1556bcaaf759 68 * @{
DL3LD 1:1556bcaaf759 69 */
DL3LD 1:1556bcaaf759 70
DL3LD 1:1556bcaaf759 71 /** @addtogroup STM32746G_DISCOVERY
DL3LD 1:1556bcaaf759 72 * @{
DL3LD 1:1556bcaaf759 73 */
DL3LD 1:1556bcaaf759 74
DL3LD 1:1556bcaaf759 75 /** @addtogroup STM32746G_DISCOVERY_CAMERA
DL3LD 1:1556bcaaf759 76 * @{
DL3LD 1:1556bcaaf759 77 */
DL3LD 1:1556bcaaf759 78
DL3LD 1:1556bcaaf759 79 /** @defgroup STM32746G_DISCOVERY_CAMERA_Private_TypesDefinitions STM32746G_DISCOVERY_CAMERA Private Types Definitions
DL3LD 1:1556bcaaf759 80 * @{
DL3LD 1:1556bcaaf759 81 */
DL3LD 1:1556bcaaf759 82 /**
DL3LD 1:1556bcaaf759 83 * @}
DL3LD 1:1556bcaaf759 84 */
DL3LD 1:1556bcaaf759 85
DL3LD 1:1556bcaaf759 86 /** @defgroup STM32746G_DISCOVERY_CAMERA_Private_Defines STM32746G_DISCOVERY_CAMERA Private Defines
DL3LD 1:1556bcaaf759 87 * @{
DL3LD 1:1556bcaaf759 88 */
DL3LD 1:1556bcaaf759 89 #define CAMERA_VGA_RES_X 640
DL3LD 1:1556bcaaf759 90 #define CAMERA_VGA_RES_Y 480
DL3LD 1:1556bcaaf759 91 #define CAMERA_480x272_RES_X 480
DL3LD 1:1556bcaaf759 92 #define CAMERA_480x272_RES_Y 272
DL3LD 1:1556bcaaf759 93 #define CAMERA_QVGA_RES_X 320
DL3LD 1:1556bcaaf759 94 #define CAMERA_QVGA_RES_Y 240
DL3LD 1:1556bcaaf759 95 #define CAMERA_QQVGA_RES_X 160
DL3LD 1:1556bcaaf759 96 #define CAMERA_QQVGA_RES_Y 120
DL3LD 1:1556bcaaf759 97 /**
DL3LD 1:1556bcaaf759 98 * @}
DL3LD 1:1556bcaaf759 99 */
DL3LD 1:1556bcaaf759 100
DL3LD 1:1556bcaaf759 101 /** @defgroup STM32746G_DISCOVERY_CAMERA_Private_Macros STM32746G_DISCOVERY_CAMERA Private Macros
DL3LD 1:1556bcaaf759 102 * @{
DL3LD 1:1556bcaaf759 103 */
DL3LD 1:1556bcaaf759 104 /**
DL3LD 1:1556bcaaf759 105 * @}
DL3LD 1:1556bcaaf759 106 */
DL3LD 1:1556bcaaf759 107
DL3LD 1:1556bcaaf759 108 /** @defgroup STM32746G_DISCOVERY_CAMERA_Private_Variables STM32746G_DISCOVERY_CAMERA Private Variables
DL3LD 1:1556bcaaf759 109 * @{
DL3LD 1:1556bcaaf759 110 */
DL3LD 1:1556bcaaf759 111 static DCMI_HandleTypeDef hDcmiHandler;
DL3LD 1:1556bcaaf759 112 CAMERA_DrvTypeDef *camera_drv;
DL3LD 1:1556bcaaf759 113 /* Camera current resolution naming (QQVGA, VGA, ...) */
DL3LD 1:1556bcaaf759 114 static uint32_t CameraCurrentResolution;
DL3LD 1:1556bcaaf759 115
DL3LD 1:1556bcaaf759 116 /* Camera module I2C HW address */
DL3LD 1:1556bcaaf759 117 static uint32_t CameraHwAddress;
DL3LD 1:1556bcaaf759 118 /**
DL3LD 1:1556bcaaf759 119 * @}
DL3LD 1:1556bcaaf759 120 */
DL3LD 1:1556bcaaf759 121
DL3LD 1:1556bcaaf759 122 /** @defgroup STM32746G_DISCOVERY_CAMERA_Private_FunctionPrototypes STM32746G_DISCOVERY_CAMERA Private Function Prototypes
DL3LD 1:1556bcaaf759 123 * @{
DL3LD 1:1556bcaaf759 124 */
DL3LD 1:1556bcaaf759 125 static uint32_t GetSize(uint32_t resolution);
DL3LD 1:1556bcaaf759 126 /**
DL3LD 1:1556bcaaf759 127 * @}
DL3LD 1:1556bcaaf759 128 */
DL3LD 1:1556bcaaf759 129
DL3LD 1:1556bcaaf759 130 /** @defgroup STM32746G_DISCOVERY_CAMERA_Exported_Functions STM32746G_DISCOVERY_CAMERA Exported Functions
DL3LD 1:1556bcaaf759 131 * @{
DL3LD 1:1556bcaaf759 132 */
DL3LD 1:1556bcaaf759 133
DL3LD 1:1556bcaaf759 134 /**
DL3LD 1:1556bcaaf759 135 * @brief Initializes the camera.
DL3LD 1:1556bcaaf759 136 * @param Resolution : camera sensor requested resolution (x, y) : standard resolution
DL3LD 1:1556bcaaf759 137 * naming QQVGA, QVGA, VGA ...
DL3LD 1:1556bcaaf759 138 * @retval Camera status
DL3LD 1:1556bcaaf759 139 */
DL3LD 1:1556bcaaf759 140 uint8_t BSP_CAMERA_Init(uint32_t Resolution)
DL3LD 1:1556bcaaf759 141 {
DL3LD 1:1556bcaaf759 142 DCMI_HandleTypeDef *phdcmi;
DL3LD 1:1556bcaaf759 143 uint8_t status = CAMERA_ERROR;
DL3LD 1:1556bcaaf759 144
DL3LD 1:1556bcaaf759 145 /* Get the DCMI handle structure */
DL3LD 1:1556bcaaf759 146 phdcmi = &hDcmiHandler;
DL3LD 1:1556bcaaf759 147
DL3LD 1:1556bcaaf759 148 /*** Configures the DCMI to interface with the camera module ***/
DL3LD 1:1556bcaaf759 149 /* DCMI configuration */
DL3LD 1:1556bcaaf759 150 phdcmi->Init.CaptureRate = DCMI_CR_ALL_FRAME;
DL3LD 1:1556bcaaf759 151 phdcmi->Init.HSPolarity = DCMI_HSPOLARITY_LOW;
DL3LD 1:1556bcaaf759 152 phdcmi->Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;
DL3LD 1:1556bcaaf759 153 phdcmi->Init.VSPolarity = DCMI_VSPOLARITY_HIGH;
DL3LD 1:1556bcaaf759 154 phdcmi->Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;
DL3LD 1:1556bcaaf759 155 phdcmi->Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;
DL3LD 1:1556bcaaf759 156 phdcmi->Instance = DCMI;
DL3LD 1:1556bcaaf759 157
DL3LD 1:1556bcaaf759 158 /* Power up camera */
DL3LD 1:1556bcaaf759 159 BSP_CAMERA_PwrUp();
DL3LD 1:1556bcaaf759 160
DL3LD 1:1556bcaaf759 161 /* Read ID of Camera module via I2C */
DL3LD 1:1556bcaaf759 162 if(ov9655_ReadID(CAMERA_I2C_ADDRESS) == OV9655_ID)
DL3LD 1:1556bcaaf759 163 {
DL3LD 1:1556bcaaf759 164 /* Initialize the camera driver structure */
DL3LD 1:1556bcaaf759 165 camera_drv = &ov9655_drv;
DL3LD 1:1556bcaaf759 166 CameraHwAddress = CAMERA_I2C_ADDRESS;
DL3LD 1:1556bcaaf759 167
DL3LD 1:1556bcaaf759 168 /* DCMI Initialization */
DL3LD 1:1556bcaaf759 169 BSP_CAMERA_MspInit(&hDcmiHandler, NULL);
DL3LD 1:1556bcaaf759 170 HAL_DCMI_Init(phdcmi);
DL3LD 1:1556bcaaf759 171
DL3LD 1:1556bcaaf759 172 /* Camera Module Initialization via I2C to the wanted 'Resolution' */
DL3LD 1:1556bcaaf759 173 if (Resolution == CAMERA_R480x272)
DL3LD 1:1556bcaaf759 174 { /* For 480x272 resolution, the OV9655 sensor is set to VGA resolution
DL3LD 1:1556bcaaf759 175 * as OV9655 doesn't supports 480x272 resolution,
DL3LD 1:1556bcaaf759 176 * then DCMI is configured to output a 480x272 cropped window */
DL3LD 1:1556bcaaf759 177 camera_drv->Init(CameraHwAddress, CAMERA_R640x480);
DL3LD 1:1556bcaaf759 178 HAL_DCMI_ConfigCROP(phdcmi, /* Crop in the middle of the VGA picture */
DL3LD 1:1556bcaaf759 179 (CAMERA_VGA_RES_X - CAMERA_480x272_RES_X)/2,
DL3LD 1:1556bcaaf759 180 (CAMERA_VGA_RES_Y - CAMERA_480x272_RES_Y)/2,
DL3LD 1:1556bcaaf759 181 (CAMERA_480x272_RES_X * 2) - 1,
DL3LD 1:1556bcaaf759 182 CAMERA_480x272_RES_Y - 1);
DL3LD 1:1556bcaaf759 183 HAL_DCMI_EnableCROP(phdcmi);
DL3LD 1:1556bcaaf759 184 }
DL3LD 1:1556bcaaf759 185 else
DL3LD 1:1556bcaaf759 186 {
DL3LD 1:1556bcaaf759 187 camera_drv->Init(CameraHwAddress, Resolution);
DL3LD 1:1556bcaaf759 188 HAL_DCMI_DisableCROP(phdcmi);
DL3LD 1:1556bcaaf759 189 }
DL3LD 1:1556bcaaf759 190
DL3LD 1:1556bcaaf759 191 CameraCurrentResolution = Resolution;
DL3LD 1:1556bcaaf759 192
DL3LD 1:1556bcaaf759 193 /* Return CAMERA_OK status */
DL3LD 1:1556bcaaf759 194 status = CAMERA_OK;
DL3LD 1:1556bcaaf759 195 }
DL3LD 1:1556bcaaf759 196 else
DL3LD 1:1556bcaaf759 197 {
DL3LD 1:1556bcaaf759 198 /* Return CAMERA_NOT_SUPPORTED status */
DL3LD 1:1556bcaaf759 199 status = CAMERA_NOT_SUPPORTED;
DL3LD 1:1556bcaaf759 200 }
DL3LD 1:1556bcaaf759 201
DL3LD 1:1556bcaaf759 202 return status;
DL3LD 1:1556bcaaf759 203 }
DL3LD 1:1556bcaaf759 204
DL3LD 1:1556bcaaf759 205 /**
DL3LD 1:1556bcaaf759 206 * @brief DeInitializes the camera.
DL3LD 1:1556bcaaf759 207 * @retval Camera status
DL3LD 1:1556bcaaf759 208 */
DL3LD 1:1556bcaaf759 209 uint8_t BSP_CAMERA_DeInit(void)
DL3LD 1:1556bcaaf759 210 {
DL3LD 1:1556bcaaf759 211 hDcmiHandler.Instance = DCMI;
DL3LD 1:1556bcaaf759 212
DL3LD 1:1556bcaaf759 213 HAL_DCMI_DeInit(&hDcmiHandler);
DL3LD 1:1556bcaaf759 214 BSP_CAMERA_MspDeInit(&hDcmiHandler, NULL);
DL3LD 1:1556bcaaf759 215 return CAMERA_OK;
DL3LD 1:1556bcaaf759 216 }
DL3LD 1:1556bcaaf759 217
DL3LD 1:1556bcaaf759 218 /**
DL3LD 1:1556bcaaf759 219 * @brief Starts the camera capture in continuous mode.
DL3LD 1:1556bcaaf759 220 * @param buff: pointer to the camera output buffer
DL3LD 1:1556bcaaf759 221 * @retval None
DL3LD 1:1556bcaaf759 222 */
DL3LD 1:1556bcaaf759 223 void BSP_CAMERA_ContinuousStart(uint8_t *buff)
DL3LD 1:1556bcaaf759 224 {
DL3LD 1:1556bcaaf759 225 /* Start the camera capture */
DL3LD 1:1556bcaaf759 226 HAL_DCMI_Start_DMA(&hDcmiHandler, DCMI_MODE_CONTINUOUS, (uint32_t)buff, GetSize(CameraCurrentResolution));
DL3LD 1:1556bcaaf759 227 }
DL3LD 1:1556bcaaf759 228
DL3LD 1:1556bcaaf759 229 /**
DL3LD 1:1556bcaaf759 230 * @brief Starts the camera capture in snapshot mode.
DL3LD 1:1556bcaaf759 231 * @param buff: pointer to the camera output buffer
DL3LD 1:1556bcaaf759 232 * @retval None
DL3LD 1:1556bcaaf759 233 */
DL3LD 1:1556bcaaf759 234 void BSP_CAMERA_SnapshotStart(uint8_t *buff)
DL3LD 1:1556bcaaf759 235 {
DL3LD 1:1556bcaaf759 236 /* Start the camera capture */
DL3LD 1:1556bcaaf759 237 HAL_DCMI_Start_DMA(&hDcmiHandler, DCMI_MODE_SNAPSHOT, (uint32_t)buff, GetSize(CameraCurrentResolution));
DL3LD 1:1556bcaaf759 238 }
DL3LD 1:1556bcaaf759 239
DL3LD 1:1556bcaaf759 240 /**
DL3LD 1:1556bcaaf759 241 * @brief Suspend the CAMERA capture
DL3LD 1:1556bcaaf759 242 * @retval None
DL3LD 1:1556bcaaf759 243 */
DL3LD 1:1556bcaaf759 244 void BSP_CAMERA_Suspend(void)
DL3LD 1:1556bcaaf759 245 {
DL3LD 1:1556bcaaf759 246 /* Disable the DMA */
DL3LD 1:1556bcaaf759 247 __HAL_DMA_DISABLE(hDcmiHandler.DMA_Handle);
DL3LD 1:1556bcaaf759 248 /* Disable the DCMI */
DL3LD 1:1556bcaaf759 249 __HAL_DCMI_DISABLE(&hDcmiHandler);
DL3LD 1:1556bcaaf759 250
DL3LD 1:1556bcaaf759 251 }
DL3LD 1:1556bcaaf759 252
DL3LD 1:1556bcaaf759 253 /**
DL3LD 1:1556bcaaf759 254 * @brief Resume the CAMERA capture
DL3LD 1:1556bcaaf759 255 * @retval None
DL3LD 1:1556bcaaf759 256 */
DL3LD 1:1556bcaaf759 257 void BSP_CAMERA_Resume(void)
DL3LD 1:1556bcaaf759 258 {
DL3LD 1:1556bcaaf759 259 /* Enable the DCMI */
DL3LD 1:1556bcaaf759 260 __HAL_DCMI_ENABLE(&hDcmiHandler);
DL3LD 1:1556bcaaf759 261 /* Enable the DMA */
DL3LD 1:1556bcaaf759 262 __HAL_DMA_ENABLE(hDcmiHandler.DMA_Handle);
DL3LD 1:1556bcaaf759 263 }
DL3LD 1:1556bcaaf759 264
DL3LD 1:1556bcaaf759 265 /**
DL3LD 1:1556bcaaf759 266 * @brief Stop the CAMERA capture
DL3LD 1:1556bcaaf759 267 * @retval Camera status
DL3LD 1:1556bcaaf759 268 */
DL3LD 1:1556bcaaf759 269 uint8_t BSP_CAMERA_Stop(void)
DL3LD 1:1556bcaaf759 270 {
DL3LD 1:1556bcaaf759 271 uint8_t status = CAMERA_ERROR;
DL3LD 1:1556bcaaf759 272
DL3LD 1:1556bcaaf759 273 if(HAL_DCMI_Stop(&hDcmiHandler) == HAL_OK)
DL3LD 1:1556bcaaf759 274 {
DL3LD 1:1556bcaaf759 275 status = CAMERA_OK;
DL3LD 1:1556bcaaf759 276 }
DL3LD 1:1556bcaaf759 277
DL3LD 1:1556bcaaf759 278 /* Set Camera in Power Down */
DL3LD 1:1556bcaaf759 279 BSP_CAMERA_PwrDown();
DL3LD 1:1556bcaaf759 280
DL3LD 1:1556bcaaf759 281 return status;
DL3LD 1:1556bcaaf759 282 }
DL3LD 1:1556bcaaf759 283
DL3LD 1:1556bcaaf759 284 /**
DL3LD 1:1556bcaaf759 285 * @brief CANERA power up
DL3LD 1:1556bcaaf759 286 * @retval None
DL3LD 1:1556bcaaf759 287 */
DL3LD 1:1556bcaaf759 288 void BSP_CAMERA_PwrUp(void)
DL3LD 1:1556bcaaf759 289 {
DL3LD 1:1556bcaaf759 290 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 291
DL3LD 1:1556bcaaf759 292 /* Enable GPIO clock */
DL3LD 1:1556bcaaf759 293 __HAL_RCC_GPIOH_CLK_ENABLE();
DL3LD 1:1556bcaaf759 294
DL3LD 1:1556bcaaf759 295 /*** Configure the GPIO ***/
DL3LD 1:1556bcaaf759 296 /* Configure DCMI GPIO as alternate function */
DL3LD 1:1556bcaaf759 297 gpio_init_structure.Pin = GPIO_PIN_13;
DL3LD 1:1556bcaaf759 298 gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;
DL3LD 1:1556bcaaf759 299 gpio_init_structure.Pull = GPIO_NOPULL;
DL3LD 1:1556bcaaf759 300 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
DL3LD 1:1556bcaaf759 301 HAL_GPIO_Init(GPIOH, &gpio_init_structure);
DL3LD 1:1556bcaaf759 302
DL3LD 1:1556bcaaf759 303 /* De-assert the camera POWER_DOWN pin (active high) */
DL3LD 1:1556bcaaf759 304 HAL_GPIO_WritePin(GPIOH, GPIO_PIN_13, GPIO_PIN_RESET);
DL3LD 1:1556bcaaf759 305
DL3LD 1:1556bcaaf759 306 HAL_Delay(3); /* POWER_DOWN de-asserted during 3ms */
DL3LD 1:1556bcaaf759 307 }
DL3LD 1:1556bcaaf759 308
DL3LD 1:1556bcaaf759 309 /**
DL3LD 1:1556bcaaf759 310 * @brief CAMERA power down
DL3LD 1:1556bcaaf759 311 * @retval None
DL3LD 1:1556bcaaf759 312 */
DL3LD 1:1556bcaaf759 313 void BSP_CAMERA_PwrDown(void)
DL3LD 1:1556bcaaf759 314 {
DL3LD 1:1556bcaaf759 315 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 316
DL3LD 1:1556bcaaf759 317 /* Enable GPIO clock */
DL3LD 1:1556bcaaf759 318 __HAL_RCC_GPIOH_CLK_ENABLE();
DL3LD 1:1556bcaaf759 319
DL3LD 1:1556bcaaf759 320 /*** Configure the GPIO ***/
DL3LD 1:1556bcaaf759 321 /* Configure DCMI GPIO as alternate function */
DL3LD 1:1556bcaaf759 322 gpio_init_structure.Pin = GPIO_PIN_13;
DL3LD 1:1556bcaaf759 323 gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;
DL3LD 1:1556bcaaf759 324 gpio_init_structure.Pull = GPIO_NOPULL;
DL3LD 1:1556bcaaf759 325 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
DL3LD 1:1556bcaaf759 326 HAL_GPIO_Init(GPIOH, &gpio_init_structure);
DL3LD 1:1556bcaaf759 327
DL3LD 1:1556bcaaf759 328 /* Assert the camera POWER_DOWN pin (active high) */
DL3LD 1:1556bcaaf759 329 HAL_GPIO_WritePin(GPIOH, GPIO_PIN_13, GPIO_PIN_SET);
DL3LD 1:1556bcaaf759 330 }
DL3LD 1:1556bcaaf759 331
DL3LD 1:1556bcaaf759 332 /**
DL3LD 1:1556bcaaf759 333 * @brief Configures the camera contrast and brightness.
DL3LD 1:1556bcaaf759 334 * @param contrast_level: Contrast level
DL3LD 1:1556bcaaf759 335 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 336 * @arg CAMERA_CONTRAST_LEVEL4: for contrast +2
DL3LD 1:1556bcaaf759 337 * @arg CAMERA_CONTRAST_LEVEL3: for contrast +1
DL3LD 1:1556bcaaf759 338 * @arg CAMERA_CONTRAST_LEVEL2: for contrast 0
DL3LD 1:1556bcaaf759 339 * @arg CAMERA_CONTRAST_LEVEL1: for contrast -1
DL3LD 1:1556bcaaf759 340 * @arg CAMERA_CONTRAST_LEVEL0: for contrast -2
DL3LD 1:1556bcaaf759 341 * @param brightness_level: Contrast level
DL3LD 1:1556bcaaf759 342 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 343 * @arg CAMERA_BRIGHTNESS_LEVEL4: for brightness +2
DL3LD 1:1556bcaaf759 344 * @arg CAMERA_BRIGHTNESS_LEVEL3: for brightness +1
DL3LD 1:1556bcaaf759 345 * @arg CAMERA_BRIGHTNESS_LEVEL2: for brightness 0
DL3LD 1:1556bcaaf759 346 * @arg CAMERA_BRIGHTNESS_LEVEL1: for brightness -1
DL3LD 1:1556bcaaf759 347 * @arg CAMERA_BRIGHTNESS_LEVEL0: for brightness -2
DL3LD 1:1556bcaaf759 348 * @retval None
DL3LD 1:1556bcaaf759 349 */
DL3LD 1:1556bcaaf759 350 void BSP_CAMERA_ContrastBrightnessConfig(uint32_t contrast_level, uint32_t brightness_level)
DL3LD 1:1556bcaaf759 351 {
DL3LD 1:1556bcaaf759 352 if(camera_drv->Config != NULL)
DL3LD 1:1556bcaaf759 353 {
DL3LD 1:1556bcaaf759 354 camera_drv->Config(CameraHwAddress, CAMERA_CONTRAST_BRIGHTNESS, contrast_level, brightness_level);
DL3LD 1:1556bcaaf759 355 }
DL3LD 1:1556bcaaf759 356 }
DL3LD 1:1556bcaaf759 357
DL3LD 1:1556bcaaf759 358 /**
DL3LD 1:1556bcaaf759 359 * @brief Configures the camera white balance.
DL3LD 1:1556bcaaf759 360 * @param Mode: black_white mode
DL3LD 1:1556bcaaf759 361 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 362 * @arg CAMERA_BLACK_WHITE_BW
DL3LD 1:1556bcaaf759 363 * @arg CAMERA_BLACK_WHITE_NEGATIVE
DL3LD 1:1556bcaaf759 364 * @arg CAMERA_BLACK_WHITE_BW_NEGATIVE
DL3LD 1:1556bcaaf759 365 * @arg CAMERA_BLACK_WHITE_NORMAL
DL3LD 1:1556bcaaf759 366 * @retval None
DL3LD 1:1556bcaaf759 367 */
DL3LD 1:1556bcaaf759 368 void BSP_CAMERA_BlackWhiteConfig(uint32_t Mode)
DL3LD 1:1556bcaaf759 369 {
DL3LD 1:1556bcaaf759 370 if(camera_drv->Config != NULL)
DL3LD 1:1556bcaaf759 371 {
DL3LD 1:1556bcaaf759 372 camera_drv->Config(CameraHwAddress, CAMERA_BLACK_WHITE, Mode, 0);
DL3LD 1:1556bcaaf759 373 }
DL3LD 1:1556bcaaf759 374 }
DL3LD 1:1556bcaaf759 375
DL3LD 1:1556bcaaf759 376 /**
DL3LD 1:1556bcaaf759 377 * @brief Configures the camera color effect.
DL3LD 1:1556bcaaf759 378 * @param Effect: Color effect
DL3LD 1:1556bcaaf759 379 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 380 * @arg CAMERA_COLOR_EFFECT_ANTIQUE
DL3LD 1:1556bcaaf759 381 * @arg CAMERA_COLOR_EFFECT_BLUE
DL3LD 1:1556bcaaf759 382 * @arg CAMERA_COLOR_EFFECT_GREEN
DL3LD 1:1556bcaaf759 383 * @arg CAMERA_COLOR_EFFECT_RED
DL3LD 1:1556bcaaf759 384 * @retval None
DL3LD 1:1556bcaaf759 385 */
DL3LD 1:1556bcaaf759 386 void BSP_CAMERA_ColorEffectConfig(uint32_t Effect)
DL3LD 1:1556bcaaf759 387 {
DL3LD 1:1556bcaaf759 388 if(camera_drv->Config != NULL)
DL3LD 1:1556bcaaf759 389 {
DL3LD 1:1556bcaaf759 390 camera_drv->Config(CameraHwAddress, CAMERA_COLOR_EFFECT, Effect, 0);
DL3LD 1:1556bcaaf759 391 }
DL3LD 1:1556bcaaf759 392 }
DL3LD 1:1556bcaaf759 393
DL3LD 1:1556bcaaf759 394 /**
DL3LD 1:1556bcaaf759 395 * @brief Handles DCMI interrupt request.
DL3LD 1:1556bcaaf759 396 * @retval None
DL3LD 1:1556bcaaf759 397 */
DL3LD 1:1556bcaaf759 398 void BSP_CAMERA_IRQHandler(void)
DL3LD 1:1556bcaaf759 399 {
DL3LD 1:1556bcaaf759 400 HAL_DCMI_IRQHandler(&hDcmiHandler);
DL3LD 1:1556bcaaf759 401 }
DL3LD 1:1556bcaaf759 402
DL3LD 1:1556bcaaf759 403 /**
DL3LD 1:1556bcaaf759 404 * @brief Handles DMA interrupt request.
DL3LD 1:1556bcaaf759 405 * @retval None
DL3LD 1:1556bcaaf759 406 */
DL3LD 1:1556bcaaf759 407 void BSP_CAMERA_DMA_IRQHandler(void)
DL3LD 1:1556bcaaf759 408 {
DL3LD 1:1556bcaaf759 409 HAL_DMA_IRQHandler(hDcmiHandler.DMA_Handle);
DL3LD 1:1556bcaaf759 410 }
DL3LD 1:1556bcaaf759 411
DL3LD 1:1556bcaaf759 412 /**
DL3LD 1:1556bcaaf759 413 * @brief Get the capture size in pixels unit.
DL3LD 1:1556bcaaf759 414 * @param resolution: the current resolution.
DL3LD 1:1556bcaaf759 415 * @retval capture size in pixels unit.
DL3LD 1:1556bcaaf759 416 */
DL3LD 1:1556bcaaf759 417 static uint32_t GetSize(uint32_t resolution)
DL3LD 1:1556bcaaf759 418 {
DL3LD 1:1556bcaaf759 419 uint32_t size = 0;
DL3LD 1:1556bcaaf759 420
DL3LD 1:1556bcaaf759 421 /* Get capture size */
DL3LD 1:1556bcaaf759 422 switch (resolution)
DL3LD 1:1556bcaaf759 423 {
DL3LD 1:1556bcaaf759 424 case CAMERA_R160x120:
DL3LD 1:1556bcaaf759 425 {
DL3LD 1:1556bcaaf759 426 size = 0x2580;
DL3LD 1:1556bcaaf759 427 }
DL3LD 1:1556bcaaf759 428 break;
DL3LD 1:1556bcaaf759 429 case CAMERA_R320x240:
DL3LD 1:1556bcaaf759 430 {
DL3LD 1:1556bcaaf759 431 size = 0x9600;
DL3LD 1:1556bcaaf759 432 }
DL3LD 1:1556bcaaf759 433 break;
DL3LD 1:1556bcaaf759 434 case CAMERA_R480x272:
DL3LD 1:1556bcaaf759 435 {
DL3LD 1:1556bcaaf759 436 size = 0xFF00;
DL3LD 1:1556bcaaf759 437 }
DL3LD 1:1556bcaaf759 438 break;
DL3LD 1:1556bcaaf759 439 case CAMERA_R640x480:
DL3LD 1:1556bcaaf759 440 {
DL3LD 1:1556bcaaf759 441 size = 0x25800;
DL3LD 1:1556bcaaf759 442 }
DL3LD 1:1556bcaaf759 443 break;
DL3LD 1:1556bcaaf759 444 default:
DL3LD 1:1556bcaaf759 445 {
DL3LD 1:1556bcaaf759 446 break;
DL3LD 1:1556bcaaf759 447 }
DL3LD 1:1556bcaaf759 448 }
DL3LD 1:1556bcaaf759 449
DL3LD 1:1556bcaaf759 450 return size;
DL3LD 1:1556bcaaf759 451 }
DL3LD 1:1556bcaaf759 452
DL3LD 1:1556bcaaf759 453 /**
DL3LD 1:1556bcaaf759 454 * @brief Initializes the DCMI MSP.
DL3LD 1:1556bcaaf759 455 * @param hdcmi: HDMI handle
DL3LD 1:1556bcaaf759 456 * @param Params
DL3LD 1:1556bcaaf759 457 * @retval None
DL3LD 1:1556bcaaf759 458 */
DL3LD 1:1556bcaaf759 459 __weak void BSP_CAMERA_MspInit(DCMI_HandleTypeDef *hdcmi, void *Params)
DL3LD 1:1556bcaaf759 460 {
DL3LD 1:1556bcaaf759 461 static DMA_HandleTypeDef hdma_handler;
DL3LD 1:1556bcaaf759 462 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 463
DL3LD 1:1556bcaaf759 464 /*** Enable peripherals and GPIO clocks ***/
DL3LD 1:1556bcaaf759 465 /* Enable DCMI clock */
DL3LD 1:1556bcaaf759 466 __HAL_RCC_DCMI_CLK_ENABLE();
DL3LD 1:1556bcaaf759 467
DL3LD 1:1556bcaaf759 468 /* Enable DMA2 clock */
DL3LD 1:1556bcaaf759 469 __HAL_RCC_DMA2_CLK_ENABLE();
DL3LD 1:1556bcaaf759 470
DL3LD 1:1556bcaaf759 471 /* Enable GPIO clocks */
DL3LD 1:1556bcaaf759 472 __HAL_RCC_GPIOA_CLK_ENABLE();
DL3LD 1:1556bcaaf759 473 __HAL_RCC_GPIOD_CLK_ENABLE();
DL3LD 1:1556bcaaf759 474 __HAL_RCC_GPIOE_CLK_ENABLE();
DL3LD 1:1556bcaaf759 475 __HAL_RCC_GPIOG_CLK_ENABLE();
DL3LD 1:1556bcaaf759 476 __HAL_RCC_GPIOH_CLK_ENABLE();
DL3LD 1:1556bcaaf759 477
DL3LD 1:1556bcaaf759 478 /*** Configure the GPIO ***/
DL3LD 1:1556bcaaf759 479 /* Configure DCMI GPIO as alternate function */
DL3LD 1:1556bcaaf759 480 gpio_init_structure.Pin = GPIO_PIN_4 | GPIO_PIN_6;
DL3LD 1:1556bcaaf759 481 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
DL3LD 1:1556bcaaf759 482 gpio_init_structure.Pull = GPIO_PULLUP;
DL3LD 1:1556bcaaf759 483 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
DL3LD 1:1556bcaaf759 484 gpio_init_structure.Alternate = GPIO_AF13_DCMI;
DL3LD 1:1556bcaaf759 485 HAL_GPIO_Init(GPIOA, &gpio_init_structure);
DL3LD 1:1556bcaaf759 486
DL3LD 1:1556bcaaf759 487 gpio_init_structure.Pin = GPIO_PIN_3;
DL3LD 1:1556bcaaf759 488 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
DL3LD 1:1556bcaaf759 489 gpio_init_structure.Pull = GPIO_PULLUP;
DL3LD 1:1556bcaaf759 490 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
DL3LD 1:1556bcaaf759 491 gpio_init_structure.Alternate = GPIO_AF13_DCMI;
DL3LD 1:1556bcaaf759 492 HAL_GPIO_Init(GPIOD, &gpio_init_structure);
DL3LD 1:1556bcaaf759 493
DL3LD 1:1556bcaaf759 494 gpio_init_structure.Pin = GPIO_PIN_5 | GPIO_PIN_6;
DL3LD 1:1556bcaaf759 495 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
DL3LD 1:1556bcaaf759 496 gpio_init_structure.Pull = GPIO_PULLUP;
DL3LD 1:1556bcaaf759 497 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
DL3LD 1:1556bcaaf759 498 gpio_init_structure.Alternate = GPIO_AF13_DCMI;
DL3LD 1:1556bcaaf759 499 HAL_GPIO_Init(GPIOE, &gpio_init_structure);
DL3LD 1:1556bcaaf759 500
DL3LD 1:1556bcaaf759 501 gpio_init_structure.Pin = GPIO_PIN_9;
DL3LD 1:1556bcaaf759 502 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
DL3LD 1:1556bcaaf759 503 gpio_init_structure.Pull = GPIO_PULLUP;
DL3LD 1:1556bcaaf759 504 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
DL3LD 1:1556bcaaf759 505 gpio_init_structure.Alternate = GPIO_AF13_DCMI;
DL3LD 1:1556bcaaf759 506 HAL_GPIO_Init(GPIOG, &gpio_init_structure);
DL3LD 1:1556bcaaf759 507
DL3LD 1:1556bcaaf759 508 gpio_init_structure.Pin = GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |\
DL3LD 1:1556bcaaf759 509 GPIO_PIN_12 | GPIO_PIN_14;
DL3LD 1:1556bcaaf759 510 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
DL3LD 1:1556bcaaf759 511 gpio_init_structure.Pull = GPIO_PULLUP;
DL3LD 1:1556bcaaf759 512 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
DL3LD 1:1556bcaaf759 513 gpio_init_structure.Alternate = GPIO_AF13_DCMI;
DL3LD 1:1556bcaaf759 514 HAL_GPIO_Init(GPIOH, &gpio_init_structure);
DL3LD 1:1556bcaaf759 515
DL3LD 1:1556bcaaf759 516 /*** Configure the DMA ***/
DL3LD 1:1556bcaaf759 517 /* Set the parameters to be configured */
DL3LD 1:1556bcaaf759 518 hdma_handler.Init.Channel = DMA_CHANNEL_1;
DL3LD 1:1556bcaaf759 519 hdma_handler.Init.Direction = DMA_PERIPH_TO_MEMORY;
DL3LD 1:1556bcaaf759 520 hdma_handler.Init.PeriphInc = DMA_PINC_DISABLE;
DL3LD 1:1556bcaaf759 521 hdma_handler.Init.MemInc = DMA_MINC_ENABLE;
DL3LD 1:1556bcaaf759 522 hdma_handler.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
DL3LD 1:1556bcaaf759 523 hdma_handler.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
DL3LD 1:1556bcaaf759 524 hdma_handler.Init.Mode = DMA_CIRCULAR;
DL3LD 1:1556bcaaf759 525 hdma_handler.Init.Priority = DMA_PRIORITY_HIGH;
DL3LD 1:1556bcaaf759 526 hdma_handler.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
DL3LD 1:1556bcaaf759 527 hdma_handler.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
DL3LD 1:1556bcaaf759 528 hdma_handler.Init.MemBurst = DMA_MBURST_SINGLE;
DL3LD 1:1556bcaaf759 529 hdma_handler.Init.PeriphBurst = DMA_PBURST_SINGLE;
DL3LD 1:1556bcaaf759 530
DL3LD 1:1556bcaaf759 531 hdma_handler.Instance = DMA2_Stream1;
DL3LD 1:1556bcaaf759 532
DL3LD 1:1556bcaaf759 533 /* Associate the initialized DMA handle to the DCMI handle */
DL3LD 1:1556bcaaf759 534 __HAL_LINKDMA(hdcmi, DMA_Handle, hdma_handler);
DL3LD 1:1556bcaaf759 535
DL3LD 1:1556bcaaf759 536 /*** Configure the NVIC for DCMI and DMA ***/
DL3LD 1:1556bcaaf759 537 /* NVIC configuration for DCMI transfer complete interrupt */
DL3LD 1:1556bcaaf759 538 HAL_NVIC_SetPriority(DCMI_IRQn, 5, 0);
DL3LD 1:1556bcaaf759 539 HAL_NVIC_EnableIRQ(DCMI_IRQn);
DL3LD 1:1556bcaaf759 540
DL3LD 1:1556bcaaf759 541 /* NVIC configuration for DMA2D transfer complete interrupt */
DL3LD 1:1556bcaaf759 542 HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 5, 0);
DL3LD 1:1556bcaaf759 543 HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
DL3LD 1:1556bcaaf759 544
DL3LD 1:1556bcaaf759 545 /* Configure the DMA stream */
DL3LD 1:1556bcaaf759 546 HAL_DMA_Init(hdcmi->DMA_Handle);
DL3LD 1:1556bcaaf759 547 }
DL3LD 1:1556bcaaf759 548
DL3LD 1:1556bcaaf759 549
DL3LD 1:1556bcaaf759 550 /**
DL3LD 1:1556bcaaf759 551 * @brief DeInitializes the DCMI MSP.
DL3LD 1:1556bcaaf759 552 * @param hdcmi: HDMI handle
DL3LD 1:1556bcaaf759 553 * @param Params
DL3LD 1:1556bcaaf759 554 * @retval None
DL3LD 1:1556bcaaf759 555 */
DL3LD 1:1556bcaaf759 556 __weak void BSP_CAMERA_MspDeInit(DCMI_HandleTypeDef *hdcmi, void *Params)
DL3LD 1:1556bcaaf759 557 {
DL3LD 1:1556bcaaf759 558 /* Disable NVIC for DCMI transfer complete interrupt */
DL3LD 1:1556bcaaf759 559 HAL_NVIC_DisableIRQ(DCMI_IRQn);
DL3LD 1:1556bcaaf759 560
DL3LD 1:1556bcaaf759 561 /* Disable NVIC for DMA2 transfer complete interrupt */
DL3LD 1:1556bcaaf759 562 HAL_NVIC_DisableIRQ(DMA2_Stream1_IRQn);
DL3LD 1:1556bcaaf759 563
DL3LD 1:1556bcaaf759 564 /* Configure the DMA stream */
DL3LD 1:1556bcaaf759 565 HAL_DMA_DeInit(hdcmi->DMA_Handle);
DL3LD 1:1556bcaaf759 566
DL3LD 1:1556bcaaf759 567 /* Disable DCMI clock */
DL3LD 1:1556bcaaf759 568 __HAL_RCC_DCMI_CLK_DISABLE();
DL3LD 1:1556bcaaf759 569
DL3LD 1:1556bcaaf759 570 /* GPIO pins clock and DMA clock can be shut down in the application
DL3LD 1:1556bcaaf759 571 by surcharging this __weak function */
DL3LD 1:1556bcaaf759 572 }
DL3LD 1:1556bcaaf759 573
DL3LD 1:1556bcaaf759 574 /**
DL3LD 1:1556bcaaf759 575 * @brief Line event callback
DL3LD 1:1556bcaaf759 576 * @param hdcmi: pointer to the DCMI handle
DL3LD 1:1556bcaaf759 577 * @retval None
DL3LD 1:1556bcaaf759 578 */
DL3LD 1:1556bcaaf759 579 void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi)
DL3LD 1:1556bcaaf759 580 {
DL3LD 1:1556bcaaf759 581 BSP_CAMERA_LineEventCallback();
DL3LD 1:1556bcaaf759 582 }
DL3LD 1:1556bcaaf759 583
DL3LD 1:1556bcaaf759 584 /**
DL3LD 1:1556bcaaf759 585 * @brief Line Event callback.
DL3LD 1:1556bcaaf759 586 * @retval None
DL3LD 1:1556bcaaf759 587 */
DL3LD 1:1556bcaaf759 588 __weak void BSP_CAMERA_LineEventCallback(void)
DL3LD 1:1556bcaaf759 589 {
DL3LD 1:1556bcaaf759 590 /* NOTE : This function Should not be modified, when the callback is needed,
DL3LD 1:1556bcaaf759 591 the HAL_DCMI_LineEventCallback could be implemented in the user file
DL3LD 1:1556bcaaf759 592 */
DL3LD 1:1556bcaaf759 593 }
DL3LD 1:1556bcaaf759 594
DL3LD 1:1556bcaaf759 595 /**
DL3LD 1:1556bcaaf759 596 * @brief VSYNC event callback
DL3LD 1:1556bcaaf759 597 * @param hdcmi: pointer to the DCMI handle
DL3LD 1:1556bcaaf759 598 * @retval None
DL3LD 1:1556bcaaf759 599 */
DL3LD 1:1556bcaaf759 600 void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi)
DL3LD 1:1556bcaaf759 601 {
DL3LD 1:1556bcaaf759 602 BSP_CAMERA_VsyncEventCallback();
DL3LD 1:1556bcaaf759 603 }
DL3LD 1:1556bcaaf759 604
DL3LD 1:1556bcaaf759 605 /**
DL3LD 1:1556bcaaf759 606 * @brief VSYNC Event callback.
DL3LD 1:1556bcaaf759 607 * @retval None
DL3LD 1:1556bcaaf759 608 */
DL3LD 1:1556bcaaf759 609 __weak void BSP_CAMERA_VsyncEventCallback(void)
DL3LD 1:1556bcaaf759 610 {
DL3LD 1:1556bcaaf759 611 /* NOTE : This function Should not be modified, when the callback is needed,
DL3LD 1:1556bcaaf759 612 the HAL_DCMI_VsyncEventCallback could be implemented in the user file
DL3LD 1:1556bcaaf759 613 */
DL3LD 1:1556bcaaf759 614 }
DL3LD 1:1556bcaaf759 615
DL3LD 1:1556bcaaf759 616 /**
DL3LD 1:1556bcaaf759 617 * @brief Frame event callback
DL3LD 1:1556bcaaf759 618 * @param hdcmi: pointer to the DCMI handle
DL3LD 1:1556bcaaf759 619 * @retval None
DL3LD 1:1556bcaaf759 620 */
DL3LD 1:1556bcaaf759 621 void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
DL3LD 1:1556bcaaf759 622 {
DL3LD 1:1556bcaaf759 623 BSP_CAMERA_FrameEventCallback();
DL3LD 1:1556bcaaf759 624 }
DL3LD 1:1556bcaaf759 625
DL3LD 1:1556bcaaf759 626 /**
DL3LD 1:1556bcaaf759 627 * @brief Frame Event callback.
DL3LD 1:1556bcaaf759 628 * @retval None
DL3LD 1:1556bcaaf759 629 */
DL3LD 1:1556bcaaf759 630 __weak void BSP_CAMERA_FrameEventCallback(void)
DL3LD 1:1556bcaaf759 631 {
DL3LD 1:1556bcaaf759 632 /* NOTE : This function Should not be modified, when the callback is needed,
DL3LD 1:1556bcaaf759 633 the HAL_DCMI_FrameEventCallback could be implemented in the user file
DL3LD 1:1556bcaaf759 634 */
DL3LD 1:1556bcaaf759 635 }
DL3LD 1:1556bcaaf759 636
DL3LD 1:1556bcaaf759 637 /**
DL3LD 1:1556bcaaf759 638 * @brief Error callback
DL3LD 1:1556bcaaf759 639 * @param hdcmi: pointer to the DCMI handle
DL3LD 1:1556bcaaf759 640 * @retval None
DL3LD 1:1556bcaaf759 641 */
DL3LD 1:1556bcaaf759 642 void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi)
DL3LD 1:1556bcaaf759 643 {
DL3LD 1:1556bcaaf759 644 BSP_CAMERA_ErrorCallback();
DL3LD 1:1556bcaaf759 645 }
DL3LD 1:1556bcaaf759 646
DL3LD 1:1556bcaaf759 647 /**
DL3LD 1:1556bcaaf759 648 * @brief Error callback.
DL3LD 1:1556bcaaf759 649 * @retval None
DL3LD 1:1556bcaaf759 650 */
DL3LD 1:1556bcaaf759 651 __weak void BSP_CAMERA_ErrorCallback(void)
DL3LD 1:1556bcaaf759 652 {
DL3LD 1:1556bcaaf759 653 /* NOTE : This function Should not be modified, when the callback is needed,
DL3LD 1:1556bcaaf759 654 the HAL_DCMI_ErrorCallback could be implemented in the user file
DL3LD 1:1556bcaaf759 655 */
DL3LD 1:1556bcaaf759 656 }
DL3LD 1:1556bcaaf759 657
DL3LD 1:1556bcaaf759 658 /**
DL3LD 1:1556bcaaf759 659 * @}
DL3LD 1:1556bcaaf759 660 */
DL3LD 1:1556bcaaf759 661
DL3LD 1:1556bcaaf759 662 /**
DL3LD 1:1556bcaaf759 663 * @}
DL3LD 1:1556bcaaf759 664 */
DL3LD 1:1556bcaaf759 665
DL3LD 1:1556bcaaf759 666 /**
DL3LD 1:1556bcaaf759 667 * @}
DL3LD 1:1556bcaaf759 668 */
DL3LD 1:1556bcaaf759 669
DL3LD 1:1556bcaaf759 670 /**
DL3LD 1:1556bcaaf759 671 * @}
DL3LD 1:1556bcaaf759 672 */
DL3LD 1:1556bcaaf759 673
DL3LD 1:1556bcaaf759 674 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
DL3LD 1:1556bcaaf759 675