164 #ifdef HAL_DCMI_MODULE_ENABLED 184 #define DCMI_TIMEOUT_STOP ((uint32_t)1000U) 266 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 289 __HAL_DCMI_DISABLE(hdcmi);
299 hdcmi->
Instance->CR &= ~(DCMI_CR_PCKPOL | DCMI_CR_HSPOL | DCMI_CR_VSPOL | DCMI_CR_EDM_0 |\
300 DCMI_CR_EDM_1 | DCMI_CR_FCRC_0 | DCMI_CR_FCRC_1 | DCMI_CR_JPEG |\
301 DCMI_CR_ESS | DCMI_CR_BSM_0 | DCMI_CR_BSM_1 | DCMI_CR_OEBS |\
302 DCMI_CR_LSM | DCMI_CR_OELS);
314 ((uint32_t)hdcmi->
Init.
SynchroCode.LineStartCode << DCMI_ESCR_LSC_Pos)|\
315 ((uint32_t)hdcmi->
Init.
SynchroCode.LineEndCode << DCMI_ESCR_LEC_Pos) |\
316 ((uint32_t)hdcmi->
Init.
SynchroCode.FrameEndCode << DCMI_ESCR_FEC_Pos));
327 __HAL_DCMI_ENABLE_IT(hdcmi, DCMI_IT_FRAME|DCMI_IT_OVR|DCMI_IT_ERR|DCMI_IT_VSYNC|DCMI_IT_LINE);
349 if (__HAL_RCC_DCMI_IS_CLK_ENABLED())
361 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 469 uint32_t circular_copy_length;
481 MODIFY_REG(hdcmi->
Instance->CR, (DCMI_CR_CM|DCMI_CR_ENABLE), (DCMI_Mode|DCMI_CR_ENABLE));
492 if(Length <= 0xFFFFU)
526 if (circular_copy_length == 0U)
538 hdcmi->
XferCount = 2U * ((Length / circular_copy_length) - 1U);
549 hdcmi->
pCircularBuffer += 4U * (((Length / circular_copy_length) - 1U) * circular_copy_length);
568 SET_BIT(hdcmi->
Instance->CR, DCMI_CR_CAPTURE);
586 HAL_StatusTypeDef status =
HAL_OK;
601 while((hdcmi->
Instance->CR & DCMI_CR_CAPTURE) != 0U)
603 if((
HAL_GetTick() - tickstart ) > DCMI_TIMEOUT_STOP)
606 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_TIMEOUT;
608 status = HAL_TIMEOUT;
620 __HAL_DCMI_DISABLE(hdcmi);
657 while((hdcmi->
Instance->CR & DCMI_CR_CAPTURE) != 0U)
659 if((
HAL_GetTick() - tickstart ) > DCMI_TIMEOUT_STOP)
662 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_TIMEOUT;
699 SET_BIT(hdcmi->
Instance->CR, DCMI_CR_CAPTURE);
716 uint32_t misflags = READ_REG(hdcmi->
Instance->MISR);
719 if ((misflags & DCMI_MIS_ERR_MIS) != 0x0U)
722 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_ERRRI);
729 if ((misflags & DCMI_MIS_OVR_MIS) != 0x0U)
732 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_OVRRI);
738 if (hdcmi->
ErrorCode != HAL_DCMI_ERROR_NONE)
754 if ((misflags & DCMI_MIS_LINE_MIS) != 0x0U)
757 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_LINERI);
760 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 769 if ((misflags & DCMI_MIS_VSYNC_MIS) != 0x0U)
772 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_VSYNCRI);
775 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 784 if ((misflags & DCMI_MIS_FRAME_MIS) != 0x0U)
787 if ((hdcmi->
Instance->CR & DCMI_CR_CM) == DCMI_MODE_SNAPSHOT)
789 __HAL_DCMI_DISABLE_IT(hdcmi, DCMI_IT_LINE|DCMI_IT_VSYNC|DCMI_IT_ERR|DCMI_IT_OVR);
795 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_FRAMERI);
798 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 920 MODIFY_REG(hdcmi->
Instance->CWSIZER, (DCMI_CWSIZE_VLINE|DCMI_CWSIZE_CAPCNT), (XSize | (YSize << DCMI_CWSIZE_VLINE_Pos)));
921 MODIFY_REG(hdcmi->
Instance->CWSTRTR, (DCMI_CWSTRT_VST|DCMI_CWSTRT_HOFFCNT), (X0 | (Y0 << DCMI_CWSTRT_VST_Pos)));
973 SET_BIT(hdcmi->
Instance->CR, DCMI_CR_CROP);
1003 ((uint32_t)SyncUnmask->
LineEndUnmask << DCMI_ESUR_LEU_Pos)|\
1046 return hdcmi->
State;
1064 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 1074 HAL_StatusTypeDef status =
HAL_OK;
1076 if(pCallback == NULL)
1079 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1133 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1142 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1159 HAL_StatusTypeDef status =
HAL_OK;
1191 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1211 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1220 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1250 uint32_t loop_length;
1251 uint32_t * tmpBuffer_Dest;
1252 uint32_t * tmpBuffer_Orig;
1266 tmpBuffer_Dest = (uint32_t *)hdcmi->
pBuffPtr;
1270 temp = (uint32_t) (tmpBuffer_Orig);
1272 tmpBuffer_Orig = (uint32_t *) temp;
1278 hdcmi->
pBuffPtr += (uint32_t) loop_length*4U;
1295 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 1306 if((hdcmi->
Instance->IER & DCMI_IT_FRAME) == 0x0U)
1309 if(__HAL_DCMI_GET_FLAG(hdcmi, (uint32_t)DCMI_FLAG_FRAMERI) != 0x0UL)
1312 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_FRAMERI);
1315 if((hdcmi->
Instance->CR & DCMI_CR_CM) == DCMI_MODE_SNAPSHOT)
1318 __HAL_DCMI_DISABLE_IT(hdcmi, DCMI_IT_LINE | DCMI_IT_VSYNC | DCMI_IT_ERR | DCMI_IT_OVR);
1327 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 1351 uint32_t loop_length;
1352 uint32_t * tmpBuffer_Dest;
1353 uint32_t * tmpBuffer_Orig;
1365 tmpBuffer_Dest = (uint32_t *)hdcmi->
pBuffPtr;
1374 hdcmi->
pBuffPtr += (uint32_t) loop_length*4U;
1391 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 1418 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1) 1442 uint32_t temp = InputSize;
1443 uint32_t aPrime[NPRIME] = {0};
1444 uint32_t output = 2;
1445 uint32_t PrimeArray[NPRIME] = { 1UL, 2UL, 3UL, 5UL,
1446 7UL, 11UL, 13UL, 17UL,
1447 19UL, 23UL, 29UL, 31UL,
1448 37UL, 41UL, 43UL, 47UL};
1455 if (temp < PrimeArray[j])
1459 while ((temp % PrimeArray[j]) == 0U)
1462 temp /= PrimeArray[j];
1473 while ((j > 0U) && (output <= 0xFFFEU))
1475 while (aPrime[j] > 0U)
1477 if ((output * PrimeArray[j]) > 0xFFFEU)
1483 output *= PrimeArray[j];
void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
Frame Event callback.
void(* MspInitCallback)(struct __DCMI_HandleTypeDef *hdcmi)
HAL_StatusTypeDef HAL_DCMI_Stop(DCMI_HandleTypeDef *hdcmi)
Disable DCMI capture in DMA mode.
HAL_StatusTypeDef HAL_DCMI_ConfigSyncUnmask(DCMI_HandleTypeDef *hdcmi, DCMI_SyncUnmaskTypeDef *SyncUnmask)
Set embedded synchronization delimiters unmasks.
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void(* MspDeInitCallback)(struct __DCMI_HandleTypeDef *hdcmi)
void(* ErrorCallback)(struct __DCMI_HandleTypeDef *hdcmi)
void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi)
Error DCMI callback.
DCMI Embedded Synchronisation CODE Init structure definition.
void HAL_DCMI_MspInit(DCMI_HandleTypeDef *hdcmi)
Initialize the DCMI MSP.
HAL_StatusTypeDef HAL_DCMI_RegisterCallback(DCMI_HandleTypeDef *hdcmi, HAL_DCMI_CallbackIDTypeDef CallbackID, pDCMI_CallbackTypeDef pCallback)
DCMI Callback registering.
void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi)
Line Event callback.
void(* FrameEventCallback)(struct __DCMI_HandleTypeDef *hdcmi)
DMA handle Structure definition.
static void DCMI_DMAXferCplt(DMA_HandleTypeDef *hdma)
DMA conversion complete callback.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
__IO HAL_DCMI_StateTypeDef State
This file contains all the functions prototypes for the HAL module driver.
DCMI_CodesInitTypeDef SynchroCode
DMA_HandleTypeDef * DMAM2M_Handle
HAL_StatusTypeDef HAL_DCMI_Start_DMA(DCMI_HandleTypeDef *hdcmi, uint32_t DCMI_Mode, uint32_t pData, uint32_t Length)
Enable DCMI capture in DMA mode.
uint32_t ExtendedDataMode
DCMI handle Structure definition.
void(* pDCMI_CallbackTypeDef)(DCMI_HandleTypeDef *hdcmi)
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt mode.
HAL_StatusTypeDef HAL_DCMI_ConfigCrop(DCMI_HandleTypeDef *hdcmi, uint32_t X0, uint32_t Y0, uint32_t XSize, uint32_t YSize)
Configure the DCMI crop window coordinates.
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_DCMI_StateTypeDef HAL_DCMI_GetState(DCMI_HandleTypeDef *hdcmi)
Return the DCMI state.
void(* LineEventCallback)(struct __DCMI_HandleTypeDef *hdcmi)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void HAL_DCMI_IRQHandler(DCMI_HandleTypeDef *hdcmi)
Handle DCMI interrupt request.
void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi)
VSYNC Event callback.
DMA_HandleTypeDef * DMA_Handle
HAL_StatusTypeDef HAL_DCMI_EnableCrop(DCMI_HandleTypeDef *hdcmi)
Enable the crop feature.
HAL_DCMI_CallbackIDTypeDef
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Abort the DMA Transfer.
HAL_DCMI_StateTypeDef
HAL DCMI State structures definition.
HAL_StatusTypeDef HAL_DCMI_DisableCrop(DCMI_HandleTypeDef *hdcmi)
Disable the crop feature.
static void DCMI_DMAError(DMA_HandleTypeDef *hdma)
DMA error callback.
HAL_StatusTypeDef HAL_DCMI_DeInit(DCMI_HandleTypeDef *hdcmi)
De-initialize the DCMI peripheral, reset control registers to their default values.
HAL_StatusTypeDef HAL_DCMI_Suspend(DCMI_HandleTypeDef *hdcmi)
Suspend DCMI capture.
static uint32_t DCMI_TransferSize(uint32_t InputSize)
Sub-buffers transfer size computation.
static void DCMI_DMAHalfXferCplt(DMA_HandleTypeDef *hdma)
DMA Half Transfer complete callback.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
void HAL_DCMI_MspDeInit(DCMI_HandleTypeDef *hdcmi)
De-initialize the DCMI MSP.
HAL_StatusTypeDef HAL_DCMI_Resume(DCMI_HandleTypeDef *hdcmi)
Resume DCMI capture.
uint32_t HAL_DCMI_GetError(DCMI_HandleTypeDef *hdcmi)
Return the DCMI error code.
HAL_StatusTypeDef HAL_DCMI_UnRegisterCallback(DCMI_HandleTypeDef *hdcmi, HAL_DCMI_CallbackIDTypeDef CallbackID)
DCMI Callback Unregistering.
HAL_StatusTypeDef HAL_DCMI_Init(DCMI_HandleTypeDef *hdcmi)
Initialize the DCMI according to the specified parameters in the DCMI_InitTypeDef and create the asso...
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
void(* VsyncEventCallback)(struct __DCMI_HandleTypeDef *hdcmi)