Lines Matching refs:hi2c
429 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
430 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c);
431 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c);
432 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
433 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
434 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
435 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);
438 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
441 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
446 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
448 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
450 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
452 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
454 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
456 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
460 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta…
462 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
464 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
466 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
468 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
472 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
473 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
476 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c);
479 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c);
482 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t…
486 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c);
535 HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) in HAL_I2C_Init() argument
538 if (hi2c == NULL) in HAL_I2C_Init()
544 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_Init()
545 assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); in HAL_I2C_Init()
546 assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); in HAL_I2C_Init()
547 assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); in HAL_I2C_Init()
548 assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); in HAL_I2C_Init()
549 assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); in HAL_I2C_Init()
550 assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); in HAL_I2C_Init()
551 assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); in HAL_I2C_Init()
553 if (hi2c->State == HAL_I2C_STATE_RESET) in HAL_I2C_Init()
556 hi2c->Lock = HAL_UNLOCKED; in HAL_I2C_Init()
560 … hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_Init()
561 … hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_Init()
562 … hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_Init()
563 … hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_Init()
564 … hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_Init()
565 … hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_Init()
566 … hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_Init()
567 … hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_Init()
568 … hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_Init()
569 … hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_Init()
571 if (hi2c->MspInitCallback == NULL) in HAL_I2C_Init()
573 hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_Init()
577 hi2c->MspInitCallback(hi2c); in HAL_I2C_Init()
580 HAL_I2C_MspInit(hi2c); in HAL_I2C_Init()
584 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_Init()
587 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_Init()
591 hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; in HAL_I2C_Init()
595 hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; in HAL_I2C_Init()
598 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) in HAL_I2C_Init()
600 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
604 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
609 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Init()
611 SET_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); in HAL_I2C_Init()
616 CLEAR_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); in HAL_I2C_Init()
619 hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); in HAL_I2C_Init()
623 hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; in HAL_I2C_Init()
626 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ in HAL_I2C_Init()
627 (hi2c->Init.OwnAddress2Masks << 8)); in HAL_I2C_Init()
631 hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); in HAL_I2C_Init()
634 __HAL_I2C_ENABLE(hi2c); in HAL_I2C_Init()
636 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Init()
637 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Init()
638 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_Init()
639 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Init()
650 HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_DeInit() argument
653 if (hi2c == NULL) in HAL_I2C_DeInit()
659 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_DeInit()
661 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_DeInit()
664 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_DeInit()
667 if (hi2c->MspDeInitCallback == NULL) in HAL_I2C_DeInit()
669 hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_DeInit()
673 hi2c->MspDeInitCallback(hi2c); in HAL_I2C_DeInit()
676 HAL_I2C_MspDeInit(hi2c); in HAL_I2C_DeInit()
679 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_DeInit()
680 hi2c->State = HAL_I2C_STATE_RESET; in HAL_I2C_DeInit()
681 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_DeInit()
682 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DeInit()
685 __HAL_UNLOCK(hi2c); in HAL_I2C_DeInit()
696 __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspInit() argument
699 UNUSED(hi2c); in HAL_I2C_MspInit()
712 __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspDeInit() argument
715 UNUSED(hi2c); in HAL_I2C_MspDeInit()
746 HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb… in HAL_I2C_RegisterCallback() argument
754 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
759 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterCallback()
764 hi2c->MasterTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
768 hi2c->MasterRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
772 hi2c->SlaveTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
776 hi2c->SlaveRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
780 hi2c->ListenCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
784 hi2c->MemTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
788 hi2c->MemRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
792 hi2c->ErrorCallback = pCallback; in HAL_I2C_RegisterCallback()
796 hi2c->AbortCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
800 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
804 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
809 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
816 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_RegisterCallback()
821 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
825 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
830 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
840 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
872 HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal… in HAL_I2C_UnRegisterCallback() argument
876 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterCallback()
881 … hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
885 … hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
889 … hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
893 … hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
897 … hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_UnRegisterCallback()
901 … hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
905 … hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
909 … hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_UnRegisterCallback()
913 … hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_UnRegisterCallback()
917 … hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
921 … hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
926 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
933 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_UnRegisterCallback()
938 … hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
942 … hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
947 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
957 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
974 HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pC… in HAL_I2C_RegisterAddrCallback() argument
981 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
986 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterAddrCallback()
988 hi2c->AddrCallback = pCallback; in HAL_I2C_RegisterAddrCallback()
993 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
1009 HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_UnRegisterAddrCallback() argument
1013 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterAddrCallback()
1015 hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_UnRegisterAddrCallback()
1020 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterAddrCallback()
1119 HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD… in HAL_I2C_Master_Transmit() argument
1125 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit()
1128 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit()
1133 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1138 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit()
1139 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit()
1140 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit()
1143 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit()
1144 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit()
1145 hi2c->XferISR = NULL; in HAL_I2C_Master_Transmit()
1147 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1149 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1154 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1158 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit()
1162 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit()
1165 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit()
1167 hi2c->XferCount--; in HAL_I2C_Master_Transmit()
1168 hi2c->XferSize--; in HAL_I2C_Master_Transmit()
1172 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, in HAL_I2C_Master_Transmit()
1179 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, in HAL_I2C_Master_Transmit()
1183 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Transmit()
1186 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1191 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit()
1194 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit()
1196 hi2c->XferCount--; in HAL_I2C_Master_Transmit()
1197 hi2c->XferSize--; in HAL_I2C_Master_Transmit()
1199 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Transmit()
1202 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1207 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1209 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1210 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Transmit()
1215 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1216 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit()
1224 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1230 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Transmit()
1233 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Transmit()
1235 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit()
1236 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit()
1239 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit()
1260 HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa… in HAL_I2C_Master_Receive() argument
1265 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive()
1268 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive()
1273 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1278 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive()
1279 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive()
1280 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive()
1283 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive()
1284 hi2c->XferCount = Size; in HAL_I2C_Master_Receive()
1285 hi2c->XferISR = NULL; in HAL_I2C_Master_Receive()
1289 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1291 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1292 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1297 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1298 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1302 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Receive()
1305 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1311 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Master_Receive()
1314 hi2c->pBuffPtr++; in HAL_I2C_Master_Receive()
1316 hi2c->XferSize--; in HAL_I2C_Master_Receive()
1317 hi2c->XferCount--; in HAL_I2C_Master_Receive()
1319 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Receive()
1322 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1327 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1329 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1330 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1335 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1336 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1344 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1350 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Receive()
1353 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Receive()
1355 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive()
1356 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive()
1359 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive()
1378 HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Transmit() argument
1385 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit()
1389 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit()
1393 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit()
1398 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit()
1399 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit()
1400 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit()
1403 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit()
1404 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit()
1405 hi2c->XferISR = NULL; in HAL_I2C_Slave_Transmit()
1408 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1411 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit()
1415 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1418 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1420 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1424 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1427 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1430 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1436 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1439 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Slave_Transmit()
1442 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1445 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1448 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1454 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1458 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1461 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1464 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1469 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Transmit()
1472 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1475 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1480 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1483 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1485 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1489 error = I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart); in HAL_I2C_Slave_Transmit()
1497 tmpXferCount = hi2c->XferCount; in HAL_I2C_Slave_Transmit()
1498 if ((hi2c->ErrorCode == HAL_I2C_ERROR_AF) && (tmpXferCount == 0U)) in HAL_I2C_Slave_Transmit()
1501 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit()
1506 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1513 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1516 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_Slave_Transmit()
1519 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1522 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1528 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Transmit()
1532 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1535 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1540 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1542 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Transmit()
1543 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit()
1546 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit()
1565 HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Receive() argument
1570 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive()
1574 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive()
1578 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive()
1583 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive()
1584 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive()
1585 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive()
1588 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive()
1589 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive()
1590 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive()
1591 hi2c->XferISR = NULL; in HAL_I2C_Slave_Receive()
1594 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1597 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1600 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1605 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Receive()
1608 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1611 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1615 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Receive()
1618 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1621 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1624 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) in HAL_I2C_Slave_Receive()
1627 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1630 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1632 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1633 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1640 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1643 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1645 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1646 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1650 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1653 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1658 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Receive()
1661 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1664 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1669 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1671 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Receive()
1672 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive()
1675 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive()
1695 HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Transmit_IT() argument
1700 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_IT()
1702 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_IT()
1708 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1710 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_IT()
1711 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_IT()
1712 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_IT()
1715 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_IT()
1716 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_IT()
1717 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_IT()
1718 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_IT()
1720 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_IT()
1722 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_IT()
1727 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_IT()
1733 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_IT()
1737 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit_IT()
1740 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit_IT()
1742 hi2c->XferCount--; in HAL_I2C_Master_Transmit_IT()
1743 hi2c->XferSize--; in HAL_I2C_Master_Transmit_IT()
1745 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, in HAL_I2C_Master_Transmit_IT()
1750 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, in HAL_I2C_Master_Transmit_IT()
1755 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1765 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_IT()
1785 HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *… in HAL_I2C_Master_Receive_IT() argument
1790 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_IT()
1792 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_IT()
1798 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1800 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_IT()
1801 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_IT()
1802 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_IT()
1805 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_IT()
1806 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_IT()
1807 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_IT()
1808 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_IT()
1810 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_IT()
1812 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_IT()
1817 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_IT()
1823 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_IT()
1826 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1836 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_IT()
1854 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_IT() argument
1856 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_IT()
1859 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1861 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_IT()
1862 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_IT()
1863 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_IT()
1866 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_IT()
1869 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_IT()
1870 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_IT()
1871 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_IT()
1872 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_IT()
1873 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Transmit_IT()
1876 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_IT()
1880 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_IT()
1883 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_IT()
1885 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_IT()
1886 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_IT()
1890 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1900 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_IT()
1918 HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_IT() argument
1920 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_IT()
1923 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1925 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_IT()
1926 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_IT()
1927 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_IT()
1930 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_IT()
1933 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_IT()
1934 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_IT()
1935 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_IT()
1936 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_IT()
1937 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Receive_IT()
1940 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1950 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_IT()
1970 HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t… in HAL_I2C_Master_Transmit_DMA() argument
1977 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_DMA()
1979 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_DMA()
1985 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1987 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_DMA()
1988 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_DMA()
1989 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_DMA()
1992 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_DMA()
1993 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_DMA()
1994 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_DMA()
1995 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Transmit_DMA()
1997 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_DMA()
1999 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_DMA()
2004 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_DMA()
2008 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_DMA()
2012 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit_DMA()
2015 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit_DMA()
2017 sizetoxfer = hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
2018 hi2c->XferCount--; in HAL_I2C_Master_Transmit_DMA()
2019 hi2c->XferSize--; in HAL_I2C_Master_Transmit_DMA()
2022 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_DMA()
2024 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Transmit_DMA()
2027 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Transmit_DMA()
2030 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Transmit_DMA()
2033 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
2034 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
2037 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, in HAL_I2C_Master_Transmit_DMA()
2038 (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); in HAL_I2C_Master_Transmit_DMA()
2043 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2044 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2047 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Transmit_DMA()
2050 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2059 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), in HAL_I2C_Master_Transmit_DMA()
2063 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
2066 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2072 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Transmit_DMA()
2075 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Transmit_DMA()
2080 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2081 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2084 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Transmit_DMA()
2087 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2095 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_DMA()
2099 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit_DMA()
2103 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2112 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_DMA()
2133 HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Receive_DMA() argument
2139 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_DMA()
2141 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_DMA()
2147 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2149 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_DMA()
2150 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_DMA()
2151 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_DMA()
2154 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_DMA()
2155 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_DMA()
2156 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_DMA()
2157 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Receive_DMA()
2159 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_DMA()
2161 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_DMA()
2166 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_DMA()
2170 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Receive_DMA()
2172 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Receive_DMA()
2175 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Receive_DMA()
2178 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Receive_DMA()
2181 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2182 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2185 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Receive_DMA()
2186 hi2c->XferSize); in HAL_I2C_Master_Receive_DMA()
2191 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2192 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2195 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Receive_DMA()
2198 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2207 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_DMA()
2210 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Receive_DMA()
2213 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2219 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Receive_DMA()
2222 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Receive_DMA()
2227 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2228 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2231 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Receive_DMA()
2234 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2242 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_DMA()
2246 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive_DMA()
2250 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2259 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_DMA()
2278 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_DMA() argument
2282 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_DMA()
2286 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2290 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2292 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_DMA()
2293 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_DMA()
2294 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_DMA()
2297 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_DMA()
2298 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_DMA()
2299 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_DMA()
2300 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_DMA()
2301 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2304 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_DMA()
2308 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_DMA()
2311 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_DMA()
2313 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_DMA()
2314 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_DMA()
2317 if (hi2c->XferCount != 0U) in HAL_I2C_Slave_Transmit_DMA()
2319 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Transmit_DMA()
2322 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Transmit_DMA()
2325 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Transmit_DMA()
2328 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2329 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2332 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, in HAL_I2C_Slave_Transmit_DMA()
2333 (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Transmit_DMA()
2334 hi2c->XferSize); in HAL_I2C_Slave_Transmit_DMA()
2339 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2340 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2343 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2346 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2354 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2357 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2363 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2366 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Transmit_DMA()
2371 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2372 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2375 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2378 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2386 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2389 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2395 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2414 HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_DMA() argument
2418 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_DMA()
2422 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive_DMA()
2426 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2428 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_DMA()
2429 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_DMA()
2430 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_DMA()
2433 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_DMA()
2434 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_DMA()
2435 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_DMA()
2436 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_DMA()
2437 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Receive_DMA()
2439 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Receive_DMA()
2442 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Receive_DMA()
2445 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Receive_DMA()
2448 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2449 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2452 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Receive_DMA()
2453 hi2c->XferSize); in HAL_I2C_Slave_Receive_DMA()
2458 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2459 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2462 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Receive_DMA()
2465 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2473 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_DMA()
2476 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2482 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_DMA()
2485 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Receive_DMA()
2490 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2491 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2494 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Receive_DMA()
2497 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2523 HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre… in HAL_I2C_Mem_Write() argument
2531 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write()
2535 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write()
2540 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write()
2545 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2550 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write()
2551 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write()
2552 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write()
2555 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write()
2556 hi2c->XferCount = Size; in HAL_I2C_Mem_Write()
2557 hi2c->XferISR = NULL; in HAL_I2C_Mem_Write()
2560 …if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2563 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2568 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2570 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2571 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2575 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2576 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2582 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2588 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Mem_Write()
2591 hi2c->pBuffPtr++; in HAL_I2C_Mem_Write()
2593 hi2c->XferCount--; in HAL_I2C_Mem_Write()
2594 hi2c->XferSize--; in HAL_I2C_Mem_Write()
2596 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Write()
2599 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2604 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2606 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2607 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Write()
2612 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2613 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Write()
2618 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Write()
2622 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2628 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Write()
2631 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Write()
2633 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write()
2634 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write()
2637 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2660 HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres… in HAL_I2C_Mem_Read() argument
2668 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read()
2672 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read()
2677 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read()
2682 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2687 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read()
2688 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read()
2689 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read()
2692 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read()
2693 hi2c->XferCount = Size; in HAL_I2C_Mem_Read()
2694 hi2c->XferISR = NULL; in HAL_I2C_Mem_Read()
2697 … if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2700 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2706 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2708 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2709 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2714 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2715 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2722 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2728 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Mem_Read()
2731 hi2c->pBuffPtr++; in HAL_I2C_Mem_Read()
2733 hi2c->XferSize--; in HAL_I2C_Mem_Read()
2734 hi2c->XferCount--; in HAL_I2C_Mem_Read()
2736 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Read()
2739 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2744 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2746 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2747 I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2752 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2753 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2757 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Read()
2761 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2767 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Read()
2770 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Read()
2772 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read()
2773 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read()
2776 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2797 HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Write_IT() argument
2803 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_IT()
2807 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_IT()
2811 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_IT()
2817 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2819 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_IT()
2820 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_IT()
2821 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_IT()
2824 hi2c->XferSize = 0U; in HAL_I2C_Mem_Write_IT()
2825 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_IT()
2826 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_IT()
2827 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_IT()
2828 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Write_IT()
2829 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_IT()
2835 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2838 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_IT()
2844 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2847 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2850 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_IT()
2853 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2863 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_IT()
2885 HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd… in HAL_I2C_Mem_Read_IT() argument
2891 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_IT()
2895 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_IT()
2899 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_IT()
2905 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2907 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_IT()
2908 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_IT()
2909 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_IT()
2912 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_IT()
2913 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_IT()
2914 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_IT()
2915 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Read_IT()
2916 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_IT()
2922 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2925 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_IT()
2931 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2934 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2937 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_IT()
2940 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2950 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_IT()
2972 HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA… in HAL_I2C_Mem_Write_DMA() argument
2980 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_DMA()
2984 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_DMA()
2988 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_DMA()
2994 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
2996 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_DMA()
2997 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_DMA()
2998 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_DMA()
3001 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_DMA()
3002 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_DMA()
3003 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_DMA()
3004 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Write_DMA()
3005 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_DMA()
3007 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write_DMA()
3009 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write_DMA()
3013 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write_DMA()
3020 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3023 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_DMA()
3029 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3032 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3035 if (hi2c->hdmatx != NULL) in HAL_I2C_Mem_Write_DMA()
3038 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Mem_Write_DMA()
3041 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Write_DMA()
3044 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3045 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3048 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Mem_Write_DMA()
3049 hi2c->XferSize); in HAL_I2C_Mem_Write_DMA()
3054 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3055 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3058 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Write_DMA()
3061 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3069 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_DMA()
3072 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3081 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_DMA()
3086 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3087 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3090 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Write_DMA()
3093 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3118 HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Read_DMA() argument
3126 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_DMA()
3130 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_DMA()
3134 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_DMA()
3140 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3142 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_DMA()
3143 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_DMA()
3144 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_DMA()
3147 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_DMA()
3148 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_DMA()
3149 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_DMA()
3150 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Read_DMA()
3151 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_DMA()
3153 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read_DMA()
3155 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read_DMA()
3159 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read_DMA()
3166 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3169 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_DMA()
3175 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3178 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3181 if (hi2c->hdmarx != NULL) in HAL_I2C_Mem_Read_DMA()
3184 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Mem_Read_DMA()
3187 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Read_DMA()
3190 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3191 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3194 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Mem_Read_DMA()
3195 hi2c->XferSize); in HAL_I2C_Mem_Read_DMA()
3200 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3201 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3204 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Read_DMA()
3207 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3215 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_DMA()
3218 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3227 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_DMA()
3232 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3233 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3236 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Read_DMA()
3239 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3263 HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria… in HAL_I2C_IsDeviceReady() argument
3275 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_IsDeviceReady()
3277 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_IsDeviceReady()
3283 __HAL_LOCK(hi2c); in HAL_I2C_IsDeviceReady()
3285 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_IsDeviceReady()
3286 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3291 hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); in HAL_I2C_IsDeviceReady()
3297 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3298 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3307 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3310 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3313 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3319 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3320 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3324 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) in HAL_I2C_IsDeviceReady()
3327 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3330 if (hi2c->ErrorCode == HAL_I2C_ERROR_AF) in HAL_I2C_IsDeviceReady()
3333 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3336 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3348 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3351 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3354 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3365 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3368 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3375 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3390 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3393 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3396 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3418 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Transmit_IT() argument
3428 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_IT()
3431 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3433 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_IT()
3434 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_IT()
3435 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_IT()
3438 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_IT()
3439 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_IT()
3440 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3441 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_IT()
3444 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3446 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_IT()
3451 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_IT()
3452 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3455 if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ in HAL_I2C_Master_Seq_Transmit_IT()
3460 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Seq_Transmit_IT()
3463 hi2c->pBuffPtr++; in HAL_I2C_Master_Seq_Transmit_IT()
3465 sizetoxfer = hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_IT()
3466 hi2c->XferCount--; in HAL_I2C_Master_Seq_Transmit_IT()
3467 hi2c->XferSize--; in HAL_I2C_Master_Seq_Transmit_IT()
3473 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_IT()
3481 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3484 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3486 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3493 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_IT()
3497 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_IT()
3501 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3510 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_IT()
3532 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin… in HAL_I2C_Master_Seq_Transmit_DMA() argument
3543 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_DMA()
3546 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3548 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_DMA()
3549 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_DMA()
3550 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3553 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_DMA()
3554 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_DMA()
3555 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3556 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3559 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3561 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_DMA()
3566 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_DMA()
3567 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3570 if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ in HAL_I2C_Master_Seq_Transmit_DMA()
3575 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Seq_Transmit_DMA()
3578 hi2c->pBuffPtr++; in HAL_I2C_Master_Seq_Transmit_DMA()
3580 sizetoxfer = hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3581 hi2c->XferCount--; in HAL_I2C_Master_Seq_Transmit_DMA()
3582 hi2c->XferSize--; in HAL_I2C_Master_Seq_Transmit_DMA()
3588 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_DMA()
3596 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3599 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3601 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3605 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Transmit_DMA()
3607 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3610 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Seq_Transmit_DMA()
3613 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Transmit_DMA()
3616 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3617 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3620 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, in HAL_I2C_Master_Seq_Transmit_DMA()
3621 (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); in HAL_I2C_Master_Seq_Transmit_DMA()
3626 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3627 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3630 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Transmit_DMA()
3633 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3643 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3647 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3651 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3654 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3660 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3663 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Seq_Transmit_DMA()
3668 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3669 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3672 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3675 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3683 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_DMA()
3689 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3693 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3697 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3706 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3729 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8… in HAL_I2C_Master_Seq_Receive_IT() argument
3738 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_IT()
3741 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3743 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_IT()
3744 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_IT()
3745 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_IT()
3748 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_IT()
3749 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_IT()
3750 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3751 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_IT()
3754 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3756 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_IT()
3761 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_IT()
3762 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3768 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_IT()
3776 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3779 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3781 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3786 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_IT()
3789 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3794 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_IT()
3816 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Receive_DMA() argument
3826 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_DMA()
3829 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3831 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_DMA()
3832 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_DMA()
3833 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3836 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_DMA()
3837 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_DMA()
3838 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3839 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3842 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3844 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_DMA()
3849 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_DMA()
3850 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3856 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_DMA()
3864 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3867 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3869 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3873 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Receive_DMA()
3875 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
3878 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Seq_Receive_DMA()
3881 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Receive_DMA()
3884 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3885 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3888 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Seq_Receive_DMA()
3889 hi2c->XferSize); in HAL_I2C_Master_Seq_Receive_DMA()
3894 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
3895 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3898 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Receive_DMA()
3901 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3909 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_DMA()
3912 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Receive_DMA()
3915 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3921 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Receive_DMA()
3924 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Seq_Receive_DMA()
3929 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
3930 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3933 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3936 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3944 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_DMA()
3948 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Receive_DMA()
3952 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3961 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_DMA()
3982 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t S… in HAL_I2C_Slave_Seq_Transmit_IT() argument
3991 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3995 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_IT()
4000 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4003 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
4007 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4010 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4013 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4015 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_IT()
4017 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_IT()
4021 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_IT()
4024 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_IT()
4027 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_IT()
4033 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_IT()
4034 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_IT()
4035 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_IT()
4038 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_IT()
4041 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_IT()
4042 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_IT()
4043 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_IT()
4044 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_IT()
4045 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Transmit_IT()
4047 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4048 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_IT()
4052 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4056 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
4062 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4082 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t … in HAL_I2C_Slave_Seq_Transmit_DMA() argument
4092 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4096 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4101 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4104 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4108 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4111 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4113 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4116 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4118 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4122 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4125 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4128 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4133 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4135 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4137 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4140 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4144 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4147 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4150 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4160 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4161 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4162 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4165 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_DMA()
4168 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_DMA()
4169 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_DMA()
4170 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_DMA()
4171 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_DMA()
4172 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4174 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4177 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Seq_Transmit_DMA()
4180 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Transmit_DMA()
4183 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4184 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4187 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Seq_Transmit_DMA()
4188 hi2c->XferSize); in HAL_I2C_Slave_Seq_Transmit_DMA()
4193 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4194 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4197 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4200 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4208 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Transmit_DMA()
4211 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Transmit_DMA()
4216 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4217 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4220 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4223 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4228 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4229 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_DMA()
4233 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4237 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4240 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4246 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4266 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Si… in HAL_I2C_Slave_Seq_Receive_IT() argument
4275 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4279 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_IT()
4284 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4287 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4291 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4294 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4296 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_IT()
4298 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_IT()
4301 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_IT()
4305 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_IT()
4308 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_IT()
4311 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_IT()
4317 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_IT()
4318 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_IT()
4319 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_IT()
4322 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_IT()
4325 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_IT()
4326 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_IT()
4327 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_IT()
4328 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_IT()
4329 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Receive_IT()
4331 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4332 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_IT()
4336 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4340 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4346 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4366 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t S… in HAL_I2C_Slave_Seq_Receive_DMA() argument
4376 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4380 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4385 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4388 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4392 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4395 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4397 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4400 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4402 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4406 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4409 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4412 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_DMA()
4417 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4419 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4421 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4424 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4428 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4431 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4434 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4444 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4445 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_DMA()
4446 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4449 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_DMA()
4452 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_DMA()
4453 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_DMA()
4454 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_DMA()
4455 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_DMA()
4456 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4458 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4461 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Seq_Receive_DMA()
4464 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Receive_DMA()
4467 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4468 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4471 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, in HAL_I2C_Slave_Seq_Receive_DMA()
4472 (uint32_t)pData, hi2c->XferSize); in HAL_I2C_Slave_Seq_Receive_DMA()
4477 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4478 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4481 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4484 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4492 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Receive_DMA()
4495 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Receive_DMA()
4500 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4501 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4504 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4507 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4512 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4513 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_DMA()
4517 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4521 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4524 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4530 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4546 HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_EnableListen_IT() argument
4548 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_EnableListen_IT()
4550 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_EnableListen_IT()
4551 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_EnableListen_IT()
4554 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_EnableListen_IT()
4570 HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_DisableListen_IT() argument
4576 if (hi2c->State == HAL_I2C_STATE_LISTEN) in HAL_I2C_DisableListen_IT()
4578 tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; in HAL_I2C_DisableListen_IT()
4579 hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); in HAL_I2C_DisableListen_IT()
4580 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_DisableListen_IT()
4581 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DisableListen_IT()
4582 hi2c->XferISR = NULL; in HAL_I2C_DisableListen_IT()
4585 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_DisableListen_IT()
4603 HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) in HAL_I2C_Master_Abort_IT() argument
4605 HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; in HAL_I2C_Master_Abort_IT()
4610 __HAL_LOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4613 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in HAL_I2C_Master_Abort_IT()
4615 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Abort_IT()
4616 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in HAL_I2C_Master_Abort_IT()
4618 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in HAL_I2C_Master_Abort_IT()
4620 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Abort_IT()
4621 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in HAL_I2C_Master_Abort_IT()
4629 hi2c->State = HAL_I2C_STATE_ABORT; in HAL_I2C_Master_Abort_IT()
4633 I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); in HAL_I2C_Master_Abort_IT()
4636 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4641 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in HAL_I2C_Master_Abort_IT()
4667 void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_I2C_EV_IRQHandler() argument
4670 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_EV_IRQHandler()
4671 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_EV_IRQHandler()
4674 if (hi2c->XferISR != NULL) in HAL_I2C_EV_IRQHandler()
4676 hi2c->XferISR(hi2c, itflags, itsources); in HAL_I2C_EV_IRQHandler()
4686 void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) in HAL_I2C_ER_IRQHandler() argument
4688 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_ER_IRQHandler()
4689 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_ER_IRQHandler()
4696 hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; in HAL_I2C_ER_IRQHandler()
4699 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in HAL_I2C_ER_IRQHandler()
4706 hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; in HAL_I2C_ER_IRQHandler()
4709 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in HAL_I2C_ER_IRQHandler()
4716 hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; in HAL_I2C_ER_IRQHandler()
4719 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in HAL_I2C_ER_IRQHandler()
4723 tmperror = hi2c->ErrorCode; in HAL_I2C_ER_IRQHandler()
4728 I2C_ITError(hi2c, tmperror); in HAL_I2C_ER_IRQHandler()
4738 __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterTxCpltCallback() argument
4741 UNUSED(hi2c); in HAL_I2C_MasterTxCpltCallback()
4754 __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterRxCpltCallback() argument
4757 UNUSED(hi2c); in HAL_I2C_MasterRxCpltCallback()
4769 __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveTxCpltCallback() argument
4772 UNUSED(hi2c); in HAL_I2C_SlaveTxCpltCallback()
4785 __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveRxCpltCallback() argument
4788 UNUSED(hi2c); in HAL_I2C_SlaveRxCpltCallback()
4803 __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM… in HAL_I2C_AddrCallback() argument
4806 UNUSED(hi2c); in HAL_I2C_AddrCallback()
4821 __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ListenCpltCallback() argument
4824 UNUSED(hi2c); in HAL_I2C_ListenCpltCallback()
4837 __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemTxCpltCallback() argument
4840 UNUSED(hi2c); in HAL_I2C_MemTxCpltCallback()
4853 __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemRxCpltCallback() argument
4856 UNUSED(hi2c); in HAL_I2C_MemRxCpltCallback()
4869 __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ErrorCallback() argument
4872 UNUSED(hi2c); in HAL_I2C_ErrorCallback()
4885 __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_AbortCpltCallback() argument
4888 UNUSED(hi2c); in HAL_I2C_AbortCpltCallback()
4920 HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetState() argument
4923 return hi2c->State; in HAL_I2C_GetState()
4932 HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetMode() argument
4934 return hi2c->Mode; in HAL_I2C_GetMode()
4943 uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetError() argument
4945 return hi2c->ErrorCode; in HAL_I2C_GetError()
4968 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_IT() argument
4975 __HAL_LOCK(hi2c); in I2C_Master_ISR_IT()
4981 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_IT()
4986 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_IT()
4989 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_IT()
4998 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Master_ISR_IT()
5001 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5003 hi2c->XferSize--; in I2C_Master_ISR_IT()
5004 hi2c->XferCount--; in I2C_Master_ISR_IT()
5011 if (hi2c->XferCount != 0U) in I2C_Master_ISR_IT()
5014 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Master_ISR_IT()
5017 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5019 hi2c->XferSize--; in I2C_Master_ISR_IT()
5020 hi2c->XferCount--; in I2C_Master_ISR_IT()
5026 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Master_ISR_IT()
5028 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_IT()
5030 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_IT()
5032 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_IT()
5033 … I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5037 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_IT()
5038 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5040 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5041 hi2c->XferOptions, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5045 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5053 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5056 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5062 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5069 if (hi2c->XferCount == 0U) in I2C_Master_ISR_IT()
5071 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5074 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5077 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_IT()
5082 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5090 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5102 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Master_ISR_IT()
5106 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_IT()
5119 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_IT() argument
5126 __HAL_LOCK(hi2c); in I2C_Mem_ISR_IT()
5132 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_IT()
5137 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_IT()
5140 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_IT()
5149 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Mem_ISR_IT()
5152 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5154 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5155 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5160 if (hi2c->Memaddress == 0xFFFFFFFFU) in I2C_Mem_ISR_IT()
5163 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Mem_ISR_IT()
5166 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5168 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5169 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5174 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_IT()
5177 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_IT()
5183 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Mem_ISR_IT()
5185 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5187 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5188 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5193 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5194 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5202 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_IT()
5209 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_IT()
5212 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_Mem_ISR_IT()
5214 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_IT()
5219 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5221 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5224 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5229 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5232 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5245 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Mem_ISR_IT()
5249 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_IT()
5262 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_IT() argument
5265 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_IT()
5269 __HAL_LOCK(hi2c); in I2C_Slave_ISR_IT()
5276 I2C_ITSlaveCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5285 if (hi2c->XferCount == 0U) in I2C_Slave_ISR_IT()
5287 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_IT()
5292 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5294 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_IT()
5297 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5300 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_IT()
5304 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5309 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5316 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5319 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_IT()
5324 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_IT()
5331 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5334 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Slave_ISR_IT()
5337 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5339 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5340 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5343 if ((hi2c->XferCount == 0U) && \ in I2C_Slave_ISR_IT()
5347 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5353 I2C_ITAddrCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5362 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5365 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Slave_ISR_IT()
5368 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5370 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5371 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5379 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5389 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_IT()
5402 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_DMA() argument
5409 __HAL_LOCK(hi2c); in I2C_Master_ISR_DMA()
5415 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_DMA()
5418 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_DMA()
5423 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Master_ISR_DMA()
5426 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_DMA()
5432 __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); in I2C_Master_ISR_DMA()
5434 if (hi2c->XferCount != 0U) in I2C_Master_ISR_DMA()
5437 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_DMA()
5440 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_DMA()
5442 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_DMA()
5447 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_DMA()
5448 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5450 xfermode = hi2c->XferOptions; in I2C_Master_ISR_DMA()
5459 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); in I2C_Master_ISR_DMA()
5462 hi2c->XferCount -= hi2c->XferSize; in I2C_Master_ISR_DMA()
5465 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Master_ISR_DMA()
5467 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Master_ISR_DMA()
5471 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Master_ISR_DMA()
5477 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5480 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5486 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5493 if (hi2c->XferCount == 0U) in I2C_Master_ISR_DMA()
5495 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5498 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5501 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_DMA()
5506 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5514 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5521 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Master_ISR_DMA()
5529 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_DMA()
5542 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_DMA() argument
5548 __HAL_LOCK(hi2c); in I2C_Mem_ISR_DMA()
5554 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_DMA()
5557 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_DMA()
5562 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Mem_ISR_DMA()
5565 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_DMA()
5571 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_DMA()
5574 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_DMA()
5580 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_DMA()
5583 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5585 if (hi2c->XferCount != 0U) in I2C_Mem_ISR_DMA()
5588 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5590 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5591 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5596 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5597 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5602 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5605 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5607 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5611 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5618 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_DMA()
5625 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_DMA()
5628 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5630 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5635 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5637 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5640 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5645 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5648 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5653 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5656 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5658 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5662 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5669 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Mem_ISR_DMA()
5677 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_DMA()
5690 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_DMA() argument
5693 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_DMA()
5698 __HAL_LOCK(hi2c); in I2C_Slave_ISR_DMA()
5705 I2C_ITSlaveCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5718 if (hi2c->hdmarx != NULL) in I2C_Slave_ISR_DMA()
5722 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) in I2C_Slave_ISR_DMA()
5730 if (hi2c->hdmatx != NULL) in I2C_Slave_ISR_DMA()
5734 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) in I2C_Slave_ISR_DMA()
5743 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_DMA()
5748 I2C_ITListenCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5750 … else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_DMA()
5753 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5756 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_DMA()
5760 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_DMA()
5765 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5772 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5775 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_DMA()
5778 tmpstate = hi2c->State; in I2C_Slave_ISR_DMA()
5784 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_Slave_ISR_DMA()
5788 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_Slave_ISR_DMA()
5796 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_DMA()
5803 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5809 I2C_ITAddrCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5817 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_DMA()
5834 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryWrite() argument
5838 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in I2C_RequestMemoryWrite()
5841 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5850 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
5856 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryWrite()
5859 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5865 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
5869 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5889 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryRead() argument
5893 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in I2C_RequestMemoryRead()
5896 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5905 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
5911 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryRead()
5914 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5920 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
5924 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5938 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITAddrCplt() argument
5949 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_ITAddrCplt()
5951 transferdirection = I2C_GET_DIR(hi2c); in I2C_ITAddrCplt()
5952 slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); in I2C_ITAddrCplt()
5953 ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); in I2C_ITAddrCplt()
5954 ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); in I2C_ITAddrCplt()
5957 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in I2C_ITAddrCplt()
5962 hi2c->AddrEventCount++; in I2C_ITAddrCplt()
5963 if (hi2c->AddrEventCount == 2U) in I2C_ITAddrCplt()
5966 hi2c->AddrEventCount = 0U; in I2C_ITAddrCplt()
5969 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
5972 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5976 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5978 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5987 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
5990 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5994 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5996 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6004 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
6007 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6011 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6013 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6021 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
6024 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6033 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITMasterSeqCplt() argument
6036 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterSeqCplt()
6040 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterSeqCplt()
6042 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
6043 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterSeqCplt()
6044 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
6047 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterSeqCplt()
6050 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
6054 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6056 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6062 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
6063 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterSeqCplt()
6064 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
6067 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterSeqCplt()
6070 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
6074 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6076 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6086 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITSlaveSeqCplt() argument
6088 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveSeqCplt()
6091 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveSeqCplt()
6097 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveSeqCplt()
6102 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveSeqCplt()
6109 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in I2C_ITSlaveSeqCplt()
6112 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
6113 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveSeqCplt()
6116 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITSlaveSeqCplt()
6119 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
6123 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6125 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6129 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in I2C_ITSlaveSeqCplt()
6132 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
6133 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveSeqCplt()
6136 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITSlaveSeqCplt()
6139 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
6143 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6145 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6160 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITMasterCplt() argument
6167 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITMasterCplt()
6170 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6172 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterCplt()
6173 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterCplt()
6175 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6177 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterCplt()
6178 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterCplt()
6186 I2C_RESET_CR2(hi2c); in I2C_ITMasterCplt()
6189 hi2c->XferISR = NULL; in I2C_ITMasterCplt()
6190 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITMasterCplt()
6195 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITMasterCplt()
6198 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITMasterCplt()
6202 if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) in I2C_ITMasterCplt()
6205 tmpreg = (uint8_t)hi2c->Instance->RXDR; in I2C_ITMasterCplt()
6210 I2C_Flush_TXDR(hi2c); in I2C_ITMasterCplt()
6213 tmperror = hi2c->ErrorCode; in I2C_ITMasterCplt()
6216 if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) in I2C_ITMasterCplt()
6219 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITMasterCplt()
6222 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6224 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6225 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6227 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6229 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6232 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6236 hi2c->MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6238 HAL_I2C_MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6243 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6246 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6250 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6252 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6257 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6259 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6260 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6262 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6264 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6267 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6271 hi2c->MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6273 HAL_I2C_MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6278 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6281 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6285 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6287 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6303 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITSlaveCplt() argument
6305 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveCplt()
6307 uint32_t tmpoptions = hi2c->XferOptions; in I2C_ITSlaveCplt()
6308 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITSlaveCplt()
6311 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITSlaveCplt()
6316 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in I2C_ITSlaveCplt()
6317 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveCplt()
6321 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6322 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveCplt()
6326 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6327 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6335 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_ITSlaveCplt()
6338 I2C_RESET_CR2(hi2c); in I2C_ITSlaveCplt()
6341 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6347 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveCplt()
6349 if (hi2c->hdmatx != NULL) in I2C_ITSlaveCplt()
6351 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); in I2C_ITSlaveCplt()
6357 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveCplt()
6359 if (hi2c->hdmarx != NULL) in I2C_ITSlaveCplt()
6361 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); in I2C_ITSlaveCplt()
6376 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITSlaveCplt()
6379 hi2c->pBuffPtr++; in I2C_ITSlaveCplt()
6381 if ((hi2c->XferSize > 0U)) in I2C_ITSlaveCplt()
6383 hi2c->XferSize--; in I2C_ITSlaveCplt()
6384 hi2c->XferCount--; in I2C_ITSlaveCplt()
6389 if (hi2c->XferCount != 0U) in I2C_ITSlaveCplt()
6392 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6402 if (hi2c->XferCount == 0U) in I2C_ITSlaveCplt()
6404 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_ITSlaveCplt()
6409 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6411 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_ITSlaveCplt()
6414 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6417 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6421 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6426 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6433 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6436 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6441 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6446 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveCplt()
6447 hi2c->XferISR = NULL; in I2C_ITSlaveCplt()
6449 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) in I2C_ITSlaveCplt()
6452 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6455 if (hi2c->State == HAL_I2C_STATE_LISTEN) in I2C_ITSlaveCplt()
6458 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6461 else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_ITSlaveCplt()
6464 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6466 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITSlaveCplt()
6467 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6468 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6471 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6475 hi2c->ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6477 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6481 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITSlaveCplt()
6483 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6484 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6487 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6491 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6493 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6498 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6499 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6502 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6506 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6508 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6519 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITListenCplt() argument
6522 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITListenCplt()
6523 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITListenCplt()
6524 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITListenCplt()
6525 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITListenCplt()
6526 hi2c->XferISR = NULL; in I2C_ITListenCplt()
6532 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITListenCplt()
6535 hi2c->pBuffPtr++; in I2C_ITListenCplt()
6537 if ((hi2c->XferSize > 0U)) in I2C_ITListenCplt()
6539 hi2c->XferSize--; in I2C_ITListenCplt()
6540 hi2c->XferCount--; in I2C_ITListenCplt()
6543 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITListenCplt()
6548 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITListenCplt()
6551 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITListenCplt()
6554 __HAL_UNLOCK(hi2c); in I2C_ITListenCplt()
6558 hi2c->ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6560 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6570 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) in I2C_ITError() argument
6572 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITError()
6577 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITError()
6578 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITError()
6579 hi2c->XferCount = 0U; in I2C_ITError()
6582 hi2c->ErrorCode |= ErrorCode; in I2C_ITError()
6590 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6593 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITError()
6594 hi2c->XferISR = I2C_Slave_ISR_IT; in I2C_ITError()
6599 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6602 I2C_Flush_TXDR(hi2c); in I2C_ITError()
6606 if (hi2c->State != HAL_I2C_STATE_ABORT) in I2C_ITError()
6609 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITError()
6612 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) in I2C_ITError()
6614 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_ITError()
6616 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITError()
6617 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITError()
6621 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITError()
6625 hi2c->XferISR = NULL; in I2C_ITError()
6629 tmppreviousstate = hi2c->PreviousState; in I2C_ITError()
6631 if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ in I2C_ITError()
6634 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in I2C_ITError()
6636 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITError()
6639 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) in I2C_ITError()
6643 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6646 __HAL_UNLOCK(hi2c); in I2C_ITError()
6649 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in I2C_ITError()
6652 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in I2C_ITError()
6657 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6661 else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ in I2C_ITError()
6664 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in I2C_ITError()
6666 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITError()
6669 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) in I2C_ITError()
6673 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6676 __HAL_UNLOCK(hi2c); in I2C_ITError()
6679 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in I2C_ITError()
6682 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in I2C_ITError()
6687 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6692 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6701 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) in I2C_TreatErrorCallback() argument
6703 if (hi2c->State == HAL_I2C_STATE_ABORT) in I2C_TreatErrorCallback()
6705 hi2c->State = HAL_I2C_STATE_READY; in I2C_TreatErrorCallback()
6706 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6709 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6713 hi2c->AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6715 HAL_I2C_AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6720 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6723 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6727 hi2c->ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6729 HAL_I2C_ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6739 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) in I2C_Flush_TXDR() argument
6743 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) in I2C_Flush_TXDR()
6745 hi2c->Instance->TXDR = 0x00U; in I2C_Flush_TXDR()
6749 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) in I2C_Flush_TXDR()
6751 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); in I2C_Flush_TXDR()
6763 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterTransmitCplt() local
6766 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMAMasterTransmitCplt()
6769 if (hi2c->XferCount == 0U) in I2C_DMAMasterTransmitCplt()
6772 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterTransmitCplt()
6778 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterTransmitCplt()
6781 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterTransmitCplt()
6783 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterTransmitCplt()
6787 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterTransmitCplt()
6791 if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in I2C_DMAMasterTransmitCplt()
6792 hi2c->XferSize) != HAL_OK) in I2C_DMAMasterTransmitCplt()
6795 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterTransmitCplt()
6800 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterTransmitCplt()
6814 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveTransmitCplt() local
6815 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveTransmitCplt()
6820 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMASlaveTransmitCplt()
6824 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveTransmitCplt()
6843 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterReceiveCplt() local
6846 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMAMasterReceiveCplt()
6849 if (hi2c->XferCount == 0U) in I2C_DMAMasterReceiveCplt()
6852 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterReceiveCplt()
6858 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterReceiveCplt()
6861 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterReceiveCplt()
6863 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterReceiveCplt()
6867 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterReceiveCplt()
6871 if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, in I2C_DMAMasterReceiveCplt()
6872 hi2c->XferSize) != HAL_OK) in I2C_DMAMasterReceiveCplt()
6875 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterReceiveCplt()
6880 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterReceiveCplt()
6894 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveReceiveCplt() local
6895 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveReceiveCplt()
6897 if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ in I2C_DMASlaveReceiveCplt()
6901 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMASlaveReceiveCplt()
6904 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveReceiveCplt()
6924 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAError() local
6926 if (hi2c->hdmatx != NULL) in I2C_DMAError()
6928 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) in I2C_DMAError()
6934 if (hi2c->hdmarx != NULL) in I2C_DMAError()
6936 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) in I2C_DMAError()
6946 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_DMAError()
6949 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAError()
6963 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAAbort() local
6966 if (hi2c->hdmatx != NULL) in I2C_DMAAbort()
6968 hi2c->hdmatx->XferAbortCallback = NULL; in I2C_DMAAbort()
6970 if (hi2c->hdmarx != NULL) in I2C_DMAAbort()
6972 hi2c->hdmarx->XferAbortCallback = NULL; in I2C_DMAAbort()
6975 I2C_TreatErrorCallback(hi2c); in I2C_DMAAbort()
6990 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta… in I2C_WaitOnFlagUntilTimeout() argument
6993 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) in I2C_WaitOnFlagUntilTimeout()
6996 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnFlagUntilTimeout()
7006 if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) in I2C_WaitOnFlagUntilTimeout()
7008 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnFlagUntilTimeout()
7009 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnFlagUntilTimeout()
7010 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnFlagUntilTimeout()
7013 __HAL_UNLOCK(hi2c); in I2C_WaitOnFlagUntilTimeout()
7030 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnTXISFlagUntilTimeout() argument
7033 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) in I2C_WaitOnTXISFlagUntilTimeout()
7036 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnTXISFlagUntilTimeout()
7046 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) in I2C_WaitOnTXISFlagUntilTimeout()
7048 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnTXISFlagUntilTimeout()
7049 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnTXISFlagUntilTimeout()
7050 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnTXISFlagUntilTimeout()
7053 __HAL_UNLOCK(hi2c); in I2C_WaitOnTXISFlagUntilTimeout()
7071 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnSTOPFlagUntilTimeout() argument
7074 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_WaitOnSTOPFlagUntilTimeout()
7077 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnSTOPFlagUntilTimeout()
7085 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) in I2C_WaitOnSTOPFlagUntilTimeout()
7087 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnSTOPFlagUntilTimeout()
7088 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnSTOPFlagUntilTimeout()
7089 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnSTOPFlagUntilTimeout()
7092 __HAL_UNLOCK(hi2c); in I2C_WaitOnSTOPFlagUntilTimeout()
7109 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnRXNEFlagUntilTimeout() argument
7114 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) && (status == HAL_OK)) in I2C_WaitOnRXNEFlagUntilTimeout()
7117 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnRXNEFlagUntilTimeout()
7123 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) && (status == HAL_OK)) in I2C_WaitOnRXNEFlagUntilTimeout()
7127 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) in I2C_WaitOnRXNEFlagUntilTimeout()
7135 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_WaitOnRXNEFlagUntilTimeout()
7137 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_WaitOnRXNEFlagUntilTimeout()
7138 hi2c->ErrorCode = HAL_I2C_ERROR_AF; in I2C_WaitOnRXNEFlagUntilTimeout()
7141 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_WaitOnRXNEFlagUntilTimeout()
7144 I2C_RESET_CR2(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7146 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7147 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7150 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7156 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7163 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) in I2C_WaitOnRXNEFlagUntilTimeout()
7165 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnRXNEFlagUntilTimeout()
7166 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7169 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7186 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti… in I2C_IsErrorOccurred() argument
7189 uint32_t itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7198 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_IsErrorOccurred()
7202 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) in I2C_IsErrorOccurred()
7209 tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); in I2C_IsErrorOccurred()
7210 tmp2 = hi2c->Mode; in I2C_IsErrorOccurred()
7213 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ in I2C_IsErrorOccurred()
7218 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_IsErrorOccurred()
7224 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_IsErrorOccurred()
7244 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_IsErrorOccurred()
7253 itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7262 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in I2C_IsErrorOccurred()
7273 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in I2C_IsErrorOccurred()
7284 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in I2C_IsErrorOccurred()
7292 I2C_Flush_TXDR(hi2c); in I2C_IsErrorOccurred()
7295 I2C_RESET_CR2(hi2c); in I2C_IsErrorOccurred()
7297 hi2c->ErrorCode |= error_code; in I2C_IsErrorOccurred()
7298 hi2c->State = HAL_I2C_STATE_READY; in I2C_IsErrorOccurred()
7299 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_IsErrorOccurred()
7302 __HAL_UNLOCK(hi2c); in I2C_IsErrorOccurred()
7327 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t… in I2C_TransferConfig() argument
7333 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in I2C_TransferConfig()
7343 MODIFY_REG(hi2c->Instance->CR2, \ in I2C_TransferConfig()
7356 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Enable_IRQ() argument
7360 if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ in I2C_Enable_IRQ()
7361 (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ in I2C_Enable_IRQ()
7362 (hi2c->XferISR != I2C_Mem_ISR_DMA)) in I2C_Enable_IRQ()
7437 __HAL_I2C_ENABLE_IT(hi2c, tmpisr); in I2C_Enable_IRQ()
7447 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Disable_IRQ() argument
7456 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7468 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7502 __HAL_I2C_DISABLE_IT(hi2c, tmpisr); in I2C_Disable_IRQ()
7510 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) in I2C_ConvertOtherXferOptions() argument
7515 if (hi2c->XferOptions == I2C_OTHER_FRAME) in I2C_ConvertOtherXferOptions()
7517 hi2c->XferOptions = I2C_FIRST_FRAME; in I2C_ConvertOtherXferOptions()
7523 else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) in I2C_ConvertOtherXferOptions()
7525 hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; in I2C_ConvertOtherXferOptions()