Lines Matching refs:hmdma
179 static void MDMA_SetConfig(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddress, uin…
180 static void MDMA_Init(MDMA_HandleTypeDef *hmdma);
218 HAL_StatusTypeDef HAL_MDMA_Init(MDMA_HandleTypeDef *hmdma) in HAL_MDMA_Init() argument
223 if(hmdma == NULL) in HAL_MDMA_Init()
229 assert_param(IS_MDMA_STREAM_ALL_INSTANCE(hmdma->Instance)); in HAL_MDMA_Init()
230 assert_param(IS_MDMA_PRIORITY(hmdma->Init.Priority)); in HAL_MDMA_Init()
231 assert_param(IS_MDMA_ENDIANNESS_MODE(hmdma->Init.Endianness)); in HAL_MDMA_Init()
232 assert_param(IS_MDMA_REQUEST(hmdma->Init.Request)); in HAL_MDMA_Init()
233 assert_param(IS_MDMA_SOURCE_INC(hmdma->Init.SourceInc)); in HAL_MDMA_Init()
234 assert_param(IS_MDMA_DESTINATION_INC(hmdma->Init.DestinationInc)); in HAL_MDMA_Init()
235 assert_param(IS_MDMA_SOURCE_DATASIZE(hmdma->Init.SourceDataSize)); in HAL_MDMA_Init()
236 assert_param(IS_MDMA_DESTINATION_DATASIZE(hmdma->Init.DestDataSize)); in HAL_MDMA_Init()
237 assert_param(IS_MDMA_DATA_ALIGNMENT(hmdma->Init.DataAlignment)); in HAL_MDMA_Init()
238 assert_param(IS_MDMA_SOURCE_BURST(hmdma->Init.SourceBurst)); in HAL_MDMA_Init()
239 assert_param(IS_MDMA_DESTINATION_BURST(hmdma->Init.DestBurst)); in HAL_MDMA_Init()
240 assert_param(IS_MDMA_BUFFER_TRANSFER_LENGTH(hmdma->Init.BufferTransferLength)); in HAL_MDMA_Init()
241 assert_param(IS_MDMA_TRANSFER_TRIGGER_MODE(hmdma->Init.TransferTriggerMode)); in HAL_MDMA_Init()
242 assert_param(IS_MDMA_BLOCK_ADDR_OFFSET(hmdma->Init.SourceBlockAddressOffset)); in HAL_MDMA_Init()
243 assert_param(IS_MDMA_BLOCK_ADDR_OFFSET(hmdma->Init.DestBlockAddressOffset)); in HAL_MDMA_Init()
247 __HAL_UNLOCK(hmdma); in HAL_MDMA_Init()
250 hmdma->State = HAL_MDMA_STATE_BUSY; in HAL_MDMA_Init()
253 __HAL_MDMA_DISABLE(hmdma); in HAL_MDMA_Init()
256 while((hmdma->Instance->CCR & MDMA_CCR_EN) != 0U) in HAL_MDMA_Init()
262 hmdma->ErrorCode = HAL_MDMA_ERROR_TIMEOUT; in HAL_MDMA_Init()
265 hmdma->State = HAL_MDMA_STATE_ERROR; in HAL_MDMA_Init()
272 MDMA_Init(hmdma); in HAL_MDMA_Init()
275 hmdma->FirstLinkedListNodeAddress = 0; in HAL_MDMA_Init()
276 hmdma->LastLinkedListNodeAddress = 0; in HAL_MDMA_Init()
277 hmdma->LinkedListNodeCounter = 0; in HAL_MDMA_Init()
280 hmdma->ErrorCode = HAL_MDMA_ERROR_NONE; in HAL_MDMA_Init()
283 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_Init()
294 HAL_StatusTypeDef HAL_MDMA_DeInit(MDMA_HandleTypeDef *hmdma) in HAL_MDMA_DeInit() argument
298 if(hmdma == NULL) in HAL_MDMA_DeInit()
304 __HAL_MDMA_DISABLE(hmdma); in HAL_MDMA_DeInit()
307 hmdma->Instance->CCR = 0; in HAL_MDMA_DeInit()
308 hmdma->Instance->CTCR = 0; in HAL_MDMA_DeInit()
309 hmdma->Instance->CBNDTR = 0; in HAL_MDMA_DeInit()
310 hmdma->Instance->CSAR = 0; in HAL_MDMA_DeInit()
311 hmdma->Instance->CDAR = 0; in HAL_MDMA_DeInit()
312 hmdma->Instance->CBRUR = 0; in HAL_MDMA_DeInit()
313 hmdma->Instance->CLAR = 0; in HAL_MDMA_DeInit()
314 hmdma->Instance->CTBR = 0; in HAL_MDMA_DeInit()
315 hmdma->Instance->CMAR = 0; in HAL_MDMA_DeInit()
316 hmdma->Instance->CMDR = 0; in HAL_MDMA_DeInit()
319 …__HAL_MDMA_CLEAR_FLAG(hmdma,(MDMA_FLAG_TE | MDMA_FLAG_CTC | MDMA_FLAG_BRT | MDMA_FLAG_BT | MDMA_FL… in HAL_MDMA_DeInit()
322 hmdma->FirstLinkedListNodeAddress = 0; in HAL_MDMA_DeInit()
323 hmdma->LastLinkedListNodeAddress = 0; in HAL_MDMA_DeInit()
324 hmdma->LinkedListNodeCounter = 0; in HAL_MDMA_DeInit()
327 hmdma->ErrorCode = HAL_MDMA_ERROR_NONE; in HAL_MDMA_DeInit()
330 hmdma->State = HAL_MDMA_STATE_RESET; in HAL_MDMA_DeInit()
333 __HAL_UNLOCK(hmdma); in HAL_MDMA_DeInit()
347 HAL_StatusTypeDef HAL_MDMA_ConfigPostRequestMask(MDMA_HandleTypeDef *hmdma, uint32_t MaskAddress, u… in HAL_MDMA_ConfigPostRequestMask() argument
352 if(hmdma == NULL) in HAL_MDMA_ConfigPostRequestMask()
358 __HAL_LOCK(hmdma); in HAL_MDMA_ConfigPostRequestMask()
360 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_ConfigPostRequestMask()
363 if((hmdma->Instance->CTCR & MDMA_CTCR_SWRM) == 0U) in HAL_MDMA_ConfigPostRequestMask()
366 hmdma->Instance->CMAR = MaskAddress; in HAL_MDMA_ConfigPostRequestMask()
367 hmdma->Instance->CMDR = MaskData; in HAL_MDMA_ConfigPostRequestMask()
377 hmdma->Instance->CTCR &= ~MDMA_CTCR_BWM; in HAL_MDMA_ConfigPostRequestMask()
381 hmdma->Instance->CTCR |= MDMA_CTCR_BWM; in HAL_MDMA_ConfigPostRequestMask()
396 __HAL_UNLOCK(hmdma); in HAL_MDMA_ConfigPostRequestMask()
409 HAL_StatusTypeDef HAL_MDMA_RegisterCallback(MDMA_HandleTypeDef *hmdma, HAL_MDMA_CallbackIDTypeDef C… in HAL_MDMA_RegisterCallback() argument
414 if(hmdma == NULL) in HAL_MDMA_RegisterCallback()
420 __HAL_LOCK(hmdma); in HAL_MDMA_RegisterCallback()
422 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_RegisterCallback()
427 hmdma->XferCpltCallback = pCallback; in HAL_MDMA_RegisterCallback()
431 hmdma->XferBufferCpltCallback = pCallback; in HAL_MDMA_RegisterCallback()
435 hmdma->XferBlockCpltCallback = pCallback; in HAL_MDMA_RegisterCallback()
439 hmdma->XferRepeatBlockCpltCallback = pCallback; in HAL_MDMA_RegisterCallback()
443 hmdma->XferErrorCallback = pCallback; in HAL_MDMA_RegisterCallback()
447 hmdma->XferAbortCallback = pCallback; in HAL_MDMA_RegisterCallback()
461 __HAL_UNLOCK(hmdma); in HAL_MDMA_RegisterCallback()
474 HAL_StatusTypeDef HAL_MDMA_UnRegisterCallback(MDMA_HandleTypeDef *hmdma, HAL_MDMA_CallbackIDTypeDef… in HAL_MDMA_UnRegisterCallback() argument
479 if(hmdma == NULL) in HAL_MDMA_UnRegisterCallback()
485 __HAL_LOCK(hmdma); in HAL_MDMA_UnRegisterCallback()
487 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_UnRegisterCallback()
492 hmdma->XferCpltCallback = NULL; in HAL_MDMA_UnRegisterCallback()
496 hmdma->XferBufferCpltCallback = NULL; in HAL_MDMA_UnRegisterCallback()
500 hmdma->XferBlockCpltCallback = NULL; in HAL_MDMA_UnRegisterCallback()
504 hmdma->XferRepeatBlockCpltCallback = NULL; in HAL_MDMA_UnRegisterCallback()
508 hmdma->XferErrorCallback = NULL; in HAL_MDMA_UnRegisterCallback()
512 hmdma->XferAbortCallback = NULL; in HAL_MDMA_UnRegisterCallback()
516 hmdma->XferCpltCallback = NULL; in HAL_MDMA_UnRegisterCallback()
517 hmdma->XferBufferCpltCallback = NULL; in HAL_MDMA_UnRegisterCallback()
518 hmdma->XferBlockCpltCallback = NULL; in HAL_MDMA_UnRegisterCallback()
519 hmdma->XferRepeatBlockCpltCallback = NULL; in HAL_MDMA_UnRegisterCallback()
520 hmdma->XferErrorCallback = NULL; in HAL_MDMA_UnRegisterCallback()
521 hmdma->XferAbortCallback = NULL; in HAL_MDMA_UnRegisterCallback()
535 __HAL_UNLOCK(hmdma); in HAL_MDMA_UnRegisterCallback()
711 HAL_StatusTypeDef HAL_MDMA_LinkedList_AddNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *pNew… in HAL_MDMA_LinkedList_AddNode() argument
718 if((hmdma == NULL) || (pNewNode == NULL)) in HAL_MDMA_LinkedList_AddNode()
724 __HAL_LOCK(hmdma); in HAL_MDMA_LinkedList_AddNode()
726 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_LinkedList_AddNode()
729 hmdma->State = HAL_MDMA_STATE_BUSY; in HAL_MDMA_LinkedList_AddNode()
732 if((uint32_t)hmdma->FirstLinkedListNodeAddress == 0U) in HAL_MDMA_LinkedList_AddNode()
739 hmdma->Instance->CLAR = (uint32_t)pNewNode; in HAL_MDMA_LinkedList_AddNode()
741 hmdma->FirstLinkedListNodeAddress = pNewNode; in HAL_MDMA_LinkedList_AddNode()
747 hmdma->LastLinkedListNodeAddress = pNewNode; in HAL_MDMA_LinkedList_AddNode()
749 hmdma->LinkedListNodeCounter = 1; in HAL_MDMA_LinkedList_AddNode()
756 else if(hmdma->FirstLinkedListNodeAddress != pNewNode) in HAL_MDMA_LinkedList_AddNode()
759 pNode = hmdma->FirstLinkedListNodeAddress; in HAL_MDMA_LinkedList_AddNode()
760 while((counter < hmdma->LinkedListNodeCounter) && (hal_status == HAL_OK)) in HAL_MDMA_LinkedList_AddNode()
773 if((pPrevNode == hmdma->LastLinkedListNodeAddress) || (pPrevNode == NULL)) in HAL_MDMA_LinkedList_AddNode()
776 pNewNode->CLAR = hmdma->LastLinkedListNodeAddress->CLAR; in HAL_MDMA_LinkedList_AddNode()
777 hmdma->LastLinkedListNodeAddress->CLAR = (uint32_t)pNewNode; in HAL_MDMA_LinkedList_AddNode()
779 hmdma->LastLinkedListNodeAddress = pNewNode; in HAL_MDMA_LinkedList_AddNode()
781 hmdma->LinkedListNodeCounter++; in HAL_MDMA_LinkedList_AddNode()
786 pNode = hmdma->FirstLinkedListNodeAddress; in HAL_MDMA_LinkedList_AddNode()
788 while((counter < hmdma->LinkedListNodeCounter) && (nodeInserted == 0U)) in HAL_MDMA_LinkedList_AddNode()
797 hmdma->LinkedListNodeCounter++; in HAL_MDMA_LinkedList_AddNode()
819 __HAL_UNLOCK(hmdma); in HAL_MDMA_LinkedList_AddNode()
821 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_LinkedList_AddNode()
828 __HAL_UNLOCK(hmdma); in HAL_MDMA_LinkedList_AddNode()
844 HAL_StatusTypeDef HAL_MDMA_LinkedList_RemoveNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *p… in HAL_MDMA_LinkedList_RemoveNode() argument
851 if((hmdma == NULL) || (pNode == NULL)) in HAL_MDMA_LinkedList_RemoveNode()
857 __HAL_LOCK(hmdma); in HAL_MDMA_LinkedList_RemoveNode()
859 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_LinkedList_RemoveNode()
862 hmdma->State = HAL_MDMA_STATE_BUSY; in HAL_MDMA_LinkedList_RemoveNode()
865 …if(((uint32_t)hmdma->FirstLinkedListNodeAddress == 0U) || ((uint32_t)hmdma->LastLinkedListNodeAddr… in HAL_MDMA_LinkedList_RemoveNode()
869 else if(hmdma->FirstLinkedListNodeAddress == pNode) /* Deleting first node */ in HAL_MDMA_LinkedList_RemoveNode()
872 if(hmdma->LastLinkedListNodeAddress == pNode) in HAL_MDMA_LinkedList_RemoveNode()
877 hmdma->FirstLinkedListNodeAddress = 0; in HAL_MDMA_LinkedList_RemoveNode()
878 hmdma->LastLinkedListNodeAddress = 0; in HAL_MDMA_LinkedList_RemoveNode()
879 hmdma->LinkedListNodeCounter = 0; in HAL_MDMA_LinkedList_RemoveNode()
881 hmdma->Instance->CLAR = 0; in HAL_MDMA_LinkedList_RemoveNode()
885 if((uint32_t)hmdma->FirstLinkedListNodeAddress == hmdma->LastLinkedListNodeAddress->CLAR) in HAL_MDMA_LinkedList_RemoveNode()
888 hmdma->LastLinkedListNodeAddress->CLAR = pNode->CLAR; in HAL_MDMA_LinkedList_RemoveNode()
894 hmdma->Instance->CLAR = pNode->CLAR; in HAL_MDMA_LinkedList_RemoveNode()
895 hmdma->FirstLinkedListNodeAddress = (MDMA_LinkNodeTypeDef *)hmdma->Instance->CLAR; in HAL_MDMA_LinkedList_RemoveNode()
897 hmdma->LinkedListNodeCounter--; in HAL_MDMA_LinkedList_RemoveNode()
903 ptmpNode = hmdma->FirstLinkedListNodeAddress; in HAL_MDMA_LinkedList_RemoveNode()
904 while((counter < hmdma->LinkedListNodeCounter) && (nodeDeleted == 0U)) in HAL_MDMA_LinkedList_RemoveNode()
910 if(pNode == hmdma->LastLinkedListNodeAddress) in HAL_MDMA_LinkedList_RemoveNode()
913 hmdma->LastLinkedListNodeAddress = ptmpNode; in HAL_MDMA_LinkedList_RemoveNode()
919 hmdma->LinkedListNodeCounter--; in HAL_MDMA_LinkedList_RemoveNode()
935 __HAL_UNLOCK(hmdma); in HAL_MDMA_LinkedList_RemoveNode()
937 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_LinkedList_RemoveNode()
944 __HAL_UNLOCK(hmdma); in HAL_MDMA_LinkedList_RemoveNode()
957 HAL_StatusTypeDef HAL_MDMA_LinkedList_EnableCircularMode(MDMA_HandleTypeDef *hmdma) in HAL_MDMA_LinkedList_EnableCircularMode() argument
962 if(hmdma == NULL) in HAL_MDMA_LinkedList_EnableCircularMode()
968 __HAL_LOCK(hmdma); in HAL_MDMA_LinkedList_EnableCircularMode()
970 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_LinkedList_EnableCircularMode()
973 hmdma->State = HAL_MDMA_STATE_BUSY; in HAL_MDMA_LinkedList_EnableCircularMode()
976 …if(((uint32_t)hmdma->FirstLinkedListNodeAddress == 0U) || ((uint32_t)hmdma->LastLinkedListNodeAddr… in HAL_MDMA_LinkedList_EnableCircularMode()
983 hmdma->LastLinkedListNodeAddress->CLAR = (uint32_t)hmdma->FirstLinkedListNodeAddress; in HAL_MDMA_LinkedList_EnableCircularMode()
988 __HAL_UNLOCK(hmdma); in HAL_MDMA_LinkedList_EnableCircularMode()
990 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_LinkedList_EnableCircularMode()
1001 HAL_StatusTypeDef HAL_MDMA_LinkedList_DisableCircularMode(MDMA_HandleTypeDef *hmdma) in HAL_MDMA_LinkedList_DisableCircularMode() argument
1006 if(hmdma == NULL) in HAL_MDMA_LinkedList_DisableCircularMode()
1012 __HAL_LOCK(hmdma); in HAL_MDMA_LinkedList_DisableCircularMode()
1014 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_LinkedList_DisableCircularMode()
1017 hmdma->State = HAL_MDMA_STATE_BUSY; in HAL_MDMA_LinkedList_DisableCircularMode()
1020 …if(((uint32_t)hmdma->FirstLinkedListNodeAddress == 0U) || ((uint32_t)hmdma->LastLinkedListNodeAddr… in HAL_MDMA_LinkedList_DisableCircularMode()
1027 hmdma->LastLinkedListNodeAddress->CLAR = 0; in HAL_MDMA_LinkedList_DisableCircularMode()
1032 __HAL_UNLOCK(hmdma); in HAL_MDMA_LinkedList_DisableCircularMode()
1034 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_LinkedList_DisableCircularMode()
1072 HAL_StatusTypeDef HAL_MDMA_Start(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddres… in HAL_MDMA_Start() argument
1079 if(hmdma == NULL) in HAL_MDMA_Start()
1085 __HAL_LOCK(hmdma); in HAL_MDMA_Start()
1087 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_Start()
1090 hmdma->State = HAL_MDMA_STATE_BUSY; in HAL_MDMA_Start()
1093 hmdma->ErrorCode = HAL_MDMA_ERROR_NONE; in HAL_MDMA_Start()
1096 __HAL_MDMA_DISABLE(hmdma); in HAL_MDMA_Start()
1099 MDMA_SetConfig(hmdma, SrcAddress, DstAddress, BlockDataLength, BlockCount); in HAL_MDMA_Start()
1102 __HAL_MDMA_ENABLE(hmdma); in HAL_MDMA_Start()
1104 if(hmdma->Init.Request == MDMA_REQUEST_SW) in HAL_MDMA_Start()
1107 hmdma->Instance->CCR |= MDMA_CCR_SWRQ; in HAL_MDMA_Start()
1113 __HAL_UNLOCK(hmdma); in HAL_MDMA_Start()
1132 HAL_StatusTypeDef HAL_MDMA_Start_IT(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAdd… in HAL_MDMA_Start_IT() argument
1139 if(hmdma == NULL) in HAL_MDMA_Start_IT()
1145 __HAL_LOCK(hmdma); in HAL_MDMA_Start_IT()
1147 if(HAL_MDMA_STATE_READY == hmdma->State) in HAL_MDMA_Start_IT()
1150 hmdma->State = HAL_MDMA_STATE_BUSY; in HAL_MDMA_Start_IT()
1153 hmdma->ErrorCode = HAL_MDMA_ERROR_NONE; in HAL_MDMA_Start_IT()
1156 __HAL_MDMA_DISABLE(hmdma); in HAL_MDMA_Start_IT()
1159 MDMA_SetConfig(hmdma, SrcAddress, DstAddress, BlockDataLength, BlockCount); in HAL_MDMA_Start_IT()
1162 __HAL_MDMA_ENABLE_IT(hmdma, (MDMA_IT_TE | MDMA_IT_CTC)); in HAL_MDMA_Start_IT()
1164 if(hmdma->XferBlockCpltCallback != NULL) in HAL_MDMA_Start_IT()
1167 __HAL_MDMA_ENABLE_IT(hmdma, MDMA_IT_BT); in HAL_MDMA_Start_IT()
1170 if(hmdma->XferRepeatBlockCpltCallback != NULL) in HAL_MDMA_Start_IT()
1173 __HAL_MDMA_ENABLE_IT(hmdma, MDMA_IT_BRT); in HAL_MDMA_Start_IT()
1176 if(hmdma->XferBufferCpltCallback != NULL) in HAL_MDMA_Start_IT()
1179 __HAL_MDMA_ENABLE_IT(hmdma, MDMA_IT_BFTC); in HAL_MDMA_Start_IT()
1183 __HAL_MDMA_ENABLE(hmdma); in HAL_MDMA_Start_IT()
1185 if(hmdma->Init.Request == MDMA_REQUEST_SW) in HAL_MDMA_Start_IT()
1188 hmdma->Instance->CCR |= MDMA_CCR_SWRQ; in HAL_MDMA_Start_IT()
1194 __HAL_UNLOCK(hmdma); in HAL_MDMA_Start_IT()
1215 HAL_StatusTypeDef HAL_MDMA_Abort(MDMA_HandleTypeDef *hmdma) in HAL_MDMA_Abort() argument
1220 if(hmdma == NULL) in HAL_MDMA_Abort()
1225 if(HAL_MDMA_STATE_BUSY != hmdma->State) in HAL_MDMA_Abort()
1227 hmdma->ErrorCode = HAL_MDMA_ERROR_NO_XFER; in HAL_MDMA_Abort()
1230 __HAL_UNLOCK(hmdma); in HAL_MDMA_Abort()
1237 …__HAL_MDMA_DISABLE_IT(hmdma, (MDMA_IT_TE | MDMA_IT_CTC | MDMA_IT_BT | MDMA_IT_BRT | MDMA_IT_BFTC)); in HAL_MDMA_Abort()
1240 __HAL_MDMA_DISABLE(hmdma); in HAL_MDMA_Abort()
1243 while((hmdma->Instance->CCR & MDMA_CCR_EN) != 0U) in HAL_MDMA_Abort()
1249 hmdma->ErrorCode |= HAL_MDMA_ERROR_TIMEOUT; in HAL_MDMA_Abort()
1252 __HAL_UNLOCK(hmdma); in HAL_MDMA_Abort()
1255 hmdma->State = HAL_MDMA_STATE_ERROR; in HAL_MDMA_Abort()
1262 …__HAL_MDMA_CLEAR_FLAG(hmdma, (MDMA_FLAG_TE | MDMA_FLAG_CTC | MDMA_FLAG_BT | MDMA_FLAG_BRT | MDMA_F… in HAL_MDMA_Abort()
1265 __HAL_UNLOCK(hmdma); in HAL_MDMA_Abort()
1268 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_Abort()
1280 HAL_StatusTypeDef HAL_MDMA_Abort_IT(MDMA_HandleTypeDef *hmdma) in HAL_MDMA_Abort_IT() argument
1283 if(hmdma == NULL) in HAL_MDMA_Abort_IT()
1288 if(HAL_MDMA_STATE_BUSY != hmdma->State) in HAL_MDMA_Abort_IT()
1291 hmdma->ErrorCode = HAL_MDMA_ERROR_NO_XFER; in HAL_MDMA_Abort_IT()
1298 hmdma->State = HAL_MDMA_STATE_ABORT; in HAL_MDMA_Abort_IT()
1301 __HAL_MDMA_DISABLE(hmdma); in HAL_MDMA_Abort_IT()
1315 HAL_StatusTypeDef HAL_MDMA_PollForTransfer(MDMA_HandleTypeDef *hmdma, HAL_MDMA_LevelCompleteTypeDef… in HAL_MDMA_PollForTransfer() argument
1324 if(hmdma == NULL) in HAL_MDMA_PollForTransfer()
1329 if(HAL_MDMA_STATE_BUSY != hmdma->State) in HAL_MDMA_PollForTransfer()
1332 hmdma->ErrorCode = HAL_MDMA_ERROR_NO_XFER; in HAL_MDMA_PollForTransfer()
1347 while(__HAL_MDMA_GET_FLAG(hmdma, levelFlag) == 0U) in HAL_MDMA_PollForTransfer()
1349 if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_TE) != 0U)) in HAL_MDMA_PollForTransfer()
1352 errorFlag = hmdma->Instance->CESR; in HAL_MDMA_PollForTransfer()
1357 hmdma->ErrorCode |= HAL_MDMA_ERROR_READ_XFER; in HAL_MDMA_PollForTransfer()
1362 hmdma->ErrorCode |= HAL_MDMA_ERROR_WRITE_XFER; in HAL_MDMA_PollForTransfer()
1368 hmdma->ErrorCode |= HAL_MDMA_ERROR_MASK_DATA; in HAL_MDMA_PollForTransfer()
1374 hmdma->ErrorCode |= HAL_MDMA_ERROR_LINKED_LIST; in HAL_MDMA_PollForTransfer()
1380 hmdma->ErrorCode |= HAL_MDMA_ERROR_ALIGNMENT; in HAL_MDMA_PollForTransfer()
1386 hmdma->ErrorCode |= HAL_MDMA_ERROR_BLOCK_SIZE; in HAL_MDMA_PollForTransfer()
1389 (void) HAL_MDMA_Abort(hmdma); /* if error then abort the current transfer */ in HAL_MDMA_PollForTransfer()
1408 hmdma->ErrorCode |= HAL_MDMA_ERROR_TIMEOUT; in HAL_MDMA_PollForTransfer()
1410 (void) HAL_MDMA_Abort(hmdma); /* if timeout then abort the current transfer */ in HAL_MDMA_PollForTransfer()
1427 __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_BFTC); in HAL_MDMA_PollForTransfer()
1432 __HAL_MDMA_CLEAR_FLAG(hmdma, (MDMA_FLAG_BFTC | MDMA_FLAG_BT)); in HAL_MDMA_PollForTransfer()
1437 __HAL_MDMA_CLEAR_FLAG(hmdma, (MDMA_FLAG_BFTC | MDMA_FLAG_BT | MDMA_FLAG_BRT)); in HAL_MDMA_PollForTransfer()
1441 __HAL_MDMA_CLEAR_FLAG(hmdma, (MDMA_FLAG_BRT | MDMA_FLAG_BT | MDMA_FLAG_BFTC | MDMA_FLAG_CTC)); in HAL_MDMA_PollForTransfer()
1444 __HAL_UNLOCK(hmdma); in HAL_MDMA_PollForTransfer()
1446 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_PollForTransfer()
1462 HAL_StatusTypeDef HAL_MDMA_GenerateSWRequest(MDMA_HandleTypeDef *hmdma) in HAL_MDMA_GenerateSWRequest() argument
1467 if(hmdma == NULL) in HAL_MDMA_GenerateSWRequest()
1473 request_mode = hmdma->Instance->CTCR & MDMA_CTCR_SWRM; in HAL_MDMA_GenerateSWRequest()
1475 if((hmdma->Instance->CCR & MDMA_CCR_EN) == 0U) in HAL_MDMA_GenerateSWRequest()
1478 hmdma->ErrorCode = HAL_MDMA_ERROR_NO_XFER; in HAL_MDMA_GenerateSWRequest()
1482 else if(((hmdma->Instance->CISR & MDMA_CISR_CRQA) != 0U) || (request_mode == 0U)) in HAL_MDMA_GenerateSWRequest()
1485 hmdma->ErrorCode = HAL_MDMA_ERROR_BUSY; in HAL_MDMA_GenerateSWRequest()
1492 hmdma->Instance->CCR |= MDMA_CCR_SWRQ; in HAL_MDMA_GenerateSWRequest()
1504 void HAL_MDMA_IRQHandler(MDMA_HandleTypeDef *hmdma) in HAL_MDMA_IRQHandler() argument
1512 …generalIntFlag = 1UL << ((((uint32_t)hmdma->Instance - (uint32_t)(MDMA_Channel0))/HAL_MDMA_CHANNE… in HAL_MDMA_IRQHandler()
1519 if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_TE) != 0U)) in HAL_MDMA_IRQHandler()
1521 if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_TE) != 0U) in HAL_MDMA_IRQHandler()
1524 __HAL_MDMA_DISABLE_IT(hmdma, MDMA_IT_TE); in HAL_MDMA_IRQHandler()
1527 errorFlag = hmdma->Instance->CESR; in HAL_MDMA_IRQHandler()
1532 hmdma->ErrorCode |= HAL_MDMA_ERROR_READ_XFER; in HAL_MDMA_IRQHandler()
1537 hmdma->ErrorCode |= HAL_MDMA_ERROR_WRITE_XFER; in HAL_MDMA_IRQHandler()
1543 hmdma->ErrorCode |= HAL_MDMA_ERROR_MASK_DATA; in HAL_MDMA_IRQHandler()
1549 hmdma->ErrorCode |= HAL_MDMA_ERROR_LINKED_LIST; in HAL_MDMA_IRQHandler()
1555 hmdma->ErrorCode |= HAL_MDMA_ERROR_ALIGNMENT; in HAL_MDMA_IRQHandler()
1561 hmdma->ErrorCode |= HAL_MDMA_ERROR_BLOCK_SIZE; in HAL_MDMA_IRQHandler()
1565 __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_TE); in HAL_MDMA_IRQHandler()
1570 if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_BFTC) != 0U)) in HAL_MDMA_IRQHandler()
1572 if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_BFTC) != 0U) in HAL_MDMA_IRQHandler()
1575 __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_BFTC); in HAL_MDMA_IRQHandler()
1577 if(hmdma->XferBufferCpltCallback != NULL) in HAL_MDMA_IRQHandler()
1580 hmdma->XferBufferCpltCallback(hmdma); in HAL_MDMA_IRQHandler()
1586 if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_BT) != 0U)) in HAL_MDMA_IRQHandler()
1588 if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_BT) != 0U) in HAL_MDMA_IRQHandler()
1591 __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_BT); in HAL_MDMA_IRQHandler()
1593 if(hmdma->XferBlockCpltCallback != NULL) in HAL_MDMA_IRQHandler()
1596 hmdma->XferBlockCpltCallback(hmdma); in HAL_MDMA_IRQHandler()
1602 if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_BRT) != 0U)) in HAL_MDMA_IRQHandler()
1604 if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_BRT) != 0U) in HAL_MDMA_IRQHandler()
1607 __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_BRT); in HAL_MDMA_IRQHandler()
1609 if(hmdma->XferRepeatBlockCpltCallback != NULL) in HAL_MDMA_IRQHandler()
1612 hmdma->XferRepeatBlockCpltCallback(hmdma); in HAL_MDMA_IRQHandler()
1618 if((__HAL_MDMA_GET_FLAG(hmdma, MDMA_FLAG_CTC) != 0U)) in HAL_MDMA_IRQHandler()
1620 if(__HAL_MDMA_GET_IT_SOURCE(hmdma, MDMA_IT_CTC) != 0U) in HAL_MDMA_IRQHandler()
1623 …__HAL_MDMA_DISABLE_IT(hmdma, (MDMA_IT_TE | MDMA_IT_CTC | MDMA_IT_BT | MDMA_IT_BRT | MDMA_IT_BFTC)); in HAL_MDMA_IRQHandler()
1625 if(HAL_MDMA_STATE_ABORT == hmdma->State) in HAL_MDMA_IRQHandler()
1628 __HAL_UNLOCK(hmdma); in HAL_MDMA_IRQHandler()
1631 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_IRQHandler()
1633 if(hmdma->XferAbortCallback != NULL) in HAL_MDMA_IRQHandler()
1635 hmdma->XferAbortCallback(hmdma); in HAL_MDMA_IRQHandler()
1641 __HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_CTC); in HAL_MDMA_IRQHandler()
1644 __HAL_UNLOCK(hmdma); in HAL_MDMA_IRQHandler()
1647 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_IRQHandler()
1649 if(hmdma->XferCpltCallback != NULL) in HAL_MDMA_IRQHandler()
1652 hmdma->XferCpltCallback(hmdma); in HAL_MDMA_IRQHandler()
1658 if(hmdma->ErrorCode != HAL_MDMA_ERROR_NONE) in HAL_MDMA_IRQHandler()
1660 hmdma->State = HAL_MDMA_STATE_ABORT; in HAL_MDMA_IRQHandler()
1663 __HAL_MDMA_DISABLE(hmdma); in HAL_MDMA_IRQHandler()
1672 while((hmdma->Instance->CCR & MDMA_CCR_EN) != 0U); in HAL_MDMA_IRQHandler()
1675 __HAL_UNLOCK(hmdma); in HAL_MDMA_IRQHandler()
1677 if((hmdma->Instance->CCR & MDMA_CCR_EN) != 0U) in HAL_MDMA_IRQHandler()
1680 hmdma->State = HAL_MDMA_STATE_ERROR; in HAL_MDMA_IRQHandler()
1685 hmdma->State = HAL_MDMA_STATE_READY; in HAL_MDMA_IRQHandler()
1689 if (hmdma->XferErrorCallback != NULL) in HAL_MDMA_IRQHandler()
1692 hmdma->XferErrorCallback(hmdma); in HAL_MDMA_IRQHandler()
1722 HAL_MDMA_StateTypeDef HAL_MDMA_GetState(const MDMA_HandleTypeDef *hmdma) in HAL_MDMA_GetState() argument
1724 return hmdma->State; in HAL_MDMA_GetState()
1733 uint32_t HAL_MDMA_GetError(const MDMA_HandleTypeDef *hmdma) in HAL_MDMA_GetError() argument
1735 return hmdma->ErrorCode; in HAL_MDMA_GetError()
1760 static void MDMA_SetConfig(MDMA_HandleTypeDef *hmdma, uint32_t SrcAddress, uint32_t DstAddress, uin… in MDMA_SetConfig() argument
1765 MODIFY_REG(hmdma->Instance->CBNDTR ,MDMA_CBNDTR_BNDT, (BlockDataLength & MDMA_CBNDTR_BNDT)); in MDMA_SetConfig()
1768 …MODIFY_REG(hmdma->Instance->CBNDTR , MDMA_CBNDTR_BRC , ((BlockCount - 1U) << MDMA_CBNDTR_BRC_Pos) … in MDMA_SetConfig()
1771 …__HAL_MDMA_CLEAR_FLAG(hmdma, MDMA_FLAG_TE | MDMA_FLAG_CTC | MDMA_CISR_BRTIF | MDMA_CISR_BTIF | MDM… in MDMA_SetConfig()
1774 hmdma->Instance->CDAR = DstAddress; in MDMA_SetConfig()
1777 hmdma->Instance->CSAR = SrcAddress; in MDMA_SetConfig()
1783 hmdma->Instance->CTBR |= MDMA_CTBR_SBUS; in MDMA_SetConfig()
1788 hmdma->Instance->CTBR &= (~MDMA_CTBR_SBUS); in MDMA_SetConfig()
1795 hmdma->Instance->CTBR |= MDMA_CTBR_DBUS; in MDMA_SetConfig()
1800 hmdma->Instance->CTBR &= (~MDMA_CTBR_DBUS); in MDMA_SetConfig()
1804 hmdma->Instance->CLAR = (uint32_t)hmdma->FirstLinkedListNodeAddress; in MDMA_SetConfig()
1814 static void MDMA_Init(MDMA_HandleTypeDef *hmdma) in MDMA_Init() argument
1819 hmdma->Instance->CCR = hmdma->Init.Priority | hmdma->Init.Endianness; in MDMA_Init()
1822 hmdma->Instance->CTCR = hmdma->Init.SourceInc | hmdma->Init.DestinationInc | \ in MDMA_Init()
1823 hmdma->Init.SourceDataSize | hmdma->Init.DestDataSize | \ in MDMA_Init()
1824 hmdma->Init.DataAlignment | hmdma->Init.SourceBurst | \ in MDMA_Init()
1825 hmdma->Init.DestBurst | \ in MDMA_Init()
1826 ((hmdma->Init.BufferTransferLength - 1U) << MDMA_CTCR_TLEN_Pos) | \ in MDMA_Init()
1827 hmdma->Init.TransferTriggerMode; in MDMA_Init()
1830 if(hmdma->Init.Request == MDMA_REQUEST_SW) in MDMA_Init()
1838 hmdma->Instance->CTCR |= (MDMA_CTCR_SWRM | MDMA_CTCR_BWM); in MDMA_Init()
1842 hmdma->Instance->CBNDTR = 0; in MDMA_Init()
1845 if(hmdma->Init.SourceBlockAddressOffset < 0) in MDMA_Init()
1847 hmdma->Instance->CBNDTR |= MDMA_CBNDTR_BRSUM; in MDMA_Init()
1849 blockoffset = (uint32_t)(- hmdma->Init.SourceBlockAddressOffset); in MDMA_Init()
1850 hmdma->Instance->CBRUR = (blockoffset & 0x0000FFFFU); in MDMA_Init()
1855 hmdma->Instance->CBRUR = (((uint32_t)hmdma->Init.SourceBlockAddressOffset) & 0x0000FFFFU); in MDMA_Init()
1859 if(hmdma->Init.DestBlockAddressOffset < 0) in MDMA_Init()
1861 hmdma->Instance->CBNDTR |= MDMA_CBNDTR_BRDUM; in MDMA_Init()
1863 blockoffset = (uint32_t)(- hmdma->Init.DestBlockAddressOffset); in MDMA_Init()
1864 hmdma->Instance->CBRUR |= ((blockoffset & 0x0000FFFFU) << MDMA_CBRUR_DUV_Pos); in MDMA_Init()
1869 …hmdma->Instance->CBRUR |= ((((uint32_t)hmdma->Init.DestBlockAddressOffset) & 0x0000FFFFU) << MDMA_… in MDMA_Init()
1873 if(hmdma->Init.Request != MDMA_REQUEST_SW) in MDMA_Init()
1876 hmdma->Instance->CTBR = hmdma->Init.Request & MDMA_CTBR_TSEL; in MDMA_Init()
1880 hmdma->Instance->CTBR = 0; in MDMA_Init()
1884 hmdma->Instance->CLAR = 0; in MDMA_Init()