Lines Matching refs:hdma
110 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32…
148 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) in HAL_DMA_Init() argument
153 if (hdma == NULL) in HAL_DMA_Init()
159 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_Init()
160 assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); in HAL_DMA_Init()
161 assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); in HAL_DMA_Init()
162 assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); in HAL_DMA_Init()
163 assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); in HAL_DMA_Init()
164 assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); in HAL_DMA_Init()
165 assert_param(IS_DMA_MODE(hdma->Init.Mode)); in HAL_DMA_Init()
166 assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); in HAL_DMA_Init()
168 assert_param(IS_DMA_ALL_REQUEST(hdma->Init.Request)); in HAL_DMA_Init()
171 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_Init()
172 hdma->DmaBaseAddress = DMA1; in HAL_DMA_Init()
175 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Init()
178 tmp = hdma->Instance->CCR; in HAL_DMA_Init()
186 tmp |= hdma->Init.Direction | in HAL_DMA_Init()
187 hdma->Init.PeriphInc | hdma->Init.MemInc | in HAL_DMA_Init()
188 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | in HAL_DMA_Init()
189 hdma->Init.Mode | hdma->Init.Priority; in HAL_DMA_Init()
192 hdma->Instance->CCR = tmp; in HAL_DMA_Init()
195 hdma->DMAmuxChannel = (DMAMUX1_Channel0 + (hdma->ChannelIndex >> 2U)); in HAL_DMA_Init()
197 if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) in HAL_DMA_Init()
200 hdma->Init.Request = DMA_REQUEST_MEM2MEM; in HAL_DMA_Init()
204 hdma->DMAmuxChannel->CxCR = (hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID); in HAL_DMA_Init()
207 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Init()
210 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Init()
213 hdma->Lock = HAL_UNLOCKED; in HAL_DMA_Init()
224 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) in HAL_DMA_DeInit() argument
227 if (NULL == hdma) in HAL_DMA_DeInit()
233 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_DeInit()
236 __HAL_DMA_DISABLE(hdma); in HAL_DMA_DeInit()
239 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_DeInit()
240 hdma->DmaBaseAddress = DMA1; in HAL_DMA_DeInit()
243 hdma->Instance->CCR = 0U; in HAL_DMA_DeInit()
246 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_DeInit()
249 hdma->DMAmuxChannel = (DMAMUX1_Channel0 + (hdma->ChannelIndex >> 2U)); in HAL_DMA_DeInit()
252 hdma->DMAmuxChannel->CxCR = 0U; in HAL_DMA_DeInit()
255 hdma->XferCpltCallback = NULL; in HAL_DMA_DeInit()
256 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_DeInit()
257 hdma->XferErrorCallback = NULL; in HAL_DMA_DeInit()
258 hdma->XferAbortCallback = NULL; in HAL_DMA_DeInit()
261 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_DeInit()
264 hdma->State = HAL_DMA_STATE_RESET; in HAL_DMA_DeInit()
267 __HAL_UNLOCK(hdma); in HAL_DMA_DeInit()
304 HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, … in HAL_DMA_Start() argument
312 __HAL_LOCK(hdma); in HAL_DMA_Start()
314 if (HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start()
317 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start()
318 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start()
321 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Start()
324 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start()
327 __HAL_DMA_ENABLE(hdma); in HAL_DMA_Start()
332 __HAL_UNLOCK(hdma); in HAL_DMA_Start()
347 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddres… in HAL_DMA_Start_IT() argument
355 __HAL_LOCK(hdma); in HAL_DMA_Start_IT()
357 if (HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start_IT()
360 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start_IT()
361 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start_IT()
364 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Start_IT()
367 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start_IT()
371 if (NULL != hdma->XferHalfCpltCallback) in HAL_DMA_Start_IT()
374 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Start_IT()
378 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); in HAL_DMA_Start_IT()
379 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE)); in HAL_DMA_Start_IT()
383 __HAL_DMA_ENABLE(hdma); in HAL_DMA_Start_IT()
388 __HAL_UNLOCK(hdma); in HAL_DMA_Start_IT()
402 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort() argument
406 if (NULL == hdma) in HAL_DMA_Abort()
412 if(hdma->State != HAL_DMA_STATE_BUSY) in HAL_DMA_Abort()
414 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort()
417 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
424 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Abort()
427 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Abort()
430 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_Abort()
433 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort()
436 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
448 HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort_IT() argument
452 if (HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_Abort_IT()
455 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort_IT()
462 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Abort_IT()
465 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Abort_IT()
468 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_Abort_IT()
471 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort_IT()
474 __HAL_UNLOCK(hdma); in HAL_DMA_Abort_IT()
477 if (hdma->XferAbortCallback != NULL) in HAL_DMA_Abort_IT()
479 hdma->XferAbortCallback(hdma); in HAL_DMA_Abort_IT()
493 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef Com… in HAL_DMA_PollForTransfer() argument
498 if (HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_PollForTransfer()
501 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_PollForTransfer()
502 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
507 if ((hdma->Instance->CCR & DMA_CCR_CIRC) != 0U) in HAL_DMA_PollForTransfer()
509 hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; in HAL_DMA_PollForTransfer()
517 temp = DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x3cU); in HAL_DMA_PollForTransfer()
522 temp = DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x3cU); in HAL_DMA_PollForTransfer()
528 while ((hdma->DmaBaseAddress->ISR & temp) == 0U) in HAL_DMA_PollForTransfer()
530 if (((hdma->DmaBaseAddress->ISR & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x3cU)))) != 0U) in HAL_DMA_PollForTransfer()
535 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_PollForTransfer()
538 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_PollForTransfer()
541 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
544 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
554 hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; in HAL_DMA_PollForTransfer()
557 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
560 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
570 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_PollForTransfer()
574 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
579 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_PollForTransfer()
583 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
594 void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) in HAL_DMA_IRQHandler() argument
596 uint32_t flag_it = hdma->DmaBaseAddress->ISR; in HAL_DMA_IRQHandler()
597 uint32_t source_it = hdma->Instance->CCR; in HAL_DMA_IRQHandler()
600 …if (((flag_it & (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x3cU))) != 0U) && ((source_it & DMA_IT_HT)… in HAL_DMA_IRQHandler()
603 if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
606 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); in HAL_DMA_IRQHandler()
609 hdma->DmaBaseAddress->IFCR = (DMA_ISR_HTIF1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_IRQHandler()
614 if (hdma->XferHalfCpltCallback != NULL) in HAL_DMA_IRQHandler()
617 hdma->XferHalfCpltCallback(hdma); in HAL_DMA_IRQHandler()
622 …else if ((0U != (flag_it & (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x3cU)))) && (0U != (source_it &… in HAL_DMA_IRQHandler()
624 if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
627 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC); in HAL_DMA_IRQHandler()
630 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
633 hdma->DmaBaseAddress->IFCR = (DMA_ISR_TCIF1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_IRQHandler()
636 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
638 if (hdma->XferCpltCallback != NULL) in HAL_DMA_IRQHandler()
641 hdma->XferCpltCallback(hdma); in HAL_DMA_IRQHandler()
646 …else if (((flag_it & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x3cU)))!= 0U) && ((source_it & DMA_IT… in HAL_DMA_IRQHandler()
651 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_IRQHandler()
654 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x3cU)); in HAL_DMA_IRQHandler()
657 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_IRQHandler()
660 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
663 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
665 if (hdma->XferErrorCallback != NULL) in HAL_DMA_IRQHandler()
668 hdma->XferErrorCallback(hdma); in HAL_DMA_IRQHandler()
688 HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Callb… in HAL_DMA_RegisterCallback() argument
693 __HAL_LOCK(hdma); in HAL_DMA_RegisterCallback()
695 if (HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_RegisterCallback()
700 hdma->XferCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
704 hdma->XferHalfCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
708 hdma->XferErrorCallback = pCallback; in HAL_DMA_RegisterCallback()
712 hdma->XferAbortCallback = pCallback; in HAL_DMA_RegisterCallback()
726 __HAL_UNLOCK(hdma); in HAL_DMA_RegisterCallback()
739 HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Cal… in HAL_DMA_UnRegisterCallback() argument
744 __HAL_LOCK(hdma); in HAL_DMA_UnRegisterCallback()
746 if (HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_UnRegisterCallback()
751 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
755 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
759 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
763 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
767 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
768 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
769 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
770 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
784 __HAL_UNLOCK(hdma); in HAL_DMA_UnRegisterCallback()
817 HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) in HAL_DMA_GetState() argument
820 return hdma->State; in HAL_DMA_GetState()
829 uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) in HAL_DMA_GetError() argument
831 return hdma->ErrorCode; in HAL_DMA_GetError()
855 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32… in DMA_SetConfig() argument
858 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x3cU)); in DMA_SetConfig()
861 hdma->Instance->CNDTR = DataLength; in DMA_SetConfig()
864 if ((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) in DMA_SetConfig()
867 hdma->Instance->CPAR = DstAddress; in DMA_SetConfig()
870 hdma->Instance->CMAR = SrcAddress; in DMA_SetConfig()
876 hdma->Instance->CPAR = SrcAddress; in DMA_SetConfig()
879 hdma->Instance->CMAR = DstAddress; in DMA_SetConfig()