Lines Matching refs:hi2c

433 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
434 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c);
435 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c);
436 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
437 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
438 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
439 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);
442 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
445 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
450 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
452 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
454 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
457 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
459 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
461 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
466 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta…
468 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
470 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
472 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
474 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
478 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
479 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
482 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c);
485 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c);
488 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t…
492 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c);
541 HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) in HAL_I2C_Init() argument
544 if (hi2c == NULL) in HAL_I2C_Init()
550 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_Init()
551 assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); in HAL_I2C_Init()
552 assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); in HAL_I2C_Init()
553 assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); in HAL_I2C_Init()
554 assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); in HAL_I2C_Init()
555 assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); in HAL_I2C_Init()
556 assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); in HAL_I2C_Init()
557 assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); in HAL_I2C_Init()
559 if (hi2c->State == HAL_I2C_STATE_RESET) in HAL_I2C_Init()
562 hi2c->Lock = HAL_UNLOCKED; in HAL_I2C_Init()
566hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_Init()
567hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_Init()
568hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_Init()
569hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_Init()
570hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_Init()
571hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_Init()
572hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_Init()
573hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_Init()
574hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_Init()
575hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_Init()
577 if (hi2c->MspInitCallback == NULL) in HAL_I2C_Init()
579 hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_Init()
583 hi2c->MspInitCallback(hi2c); in HAL_I2C_Init()
586 HAL_I2C_MspInit(hi2c); in HAL_I2C_Init()
590 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_Init()
593 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_Init()
597 hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; in HAL_I2C_Init()
601 hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; in HAL_I2C_Init()
604 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) in HAL_I2C_Init()
606 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
610 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
615 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Init()
617 SET_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); in HAL_I2C_Init()
622 CLEAR_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); in HAL_I2C_Init()
625 hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); in HAL_I2C_Init()
629 hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; in HAL_I2C_Init()
632 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ in HAL_I2C_Init()
633 (hi2c->Init.OwnAddress2Masks << 8)); in HAL_I2C_Init()
637 hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); in HAL_I2C_Init()
640 __HAL_I2C_ENABLE(hi2c); in HAL_I2C_Init()
642 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Init()
643 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Init()
644 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_Init()
645 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Init()
656 HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_DeInit() argument
659 if (hi2c == NULL) in HAL_I2C_DeInit()
665 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_DeInit()
667 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_DeInit()
670 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_DeInit()
673 if (hi2c->MspDeInitCallback == NULL) in HAL_I2C_DeInit()
675 hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_DeInit()
679 hi2c->MspDeInitCallback(hi2c); in HAL_I2C_DeInit()
682 HAL_I2C_MspDeInit(hi2c); in HAL_I2C_DeInit()
685 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_DeInit()
686 hi2c->State = HAL_I2C_STATE_RESET; in HAL_I2C_DeInit()
687 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_DeInit()
688 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DeInit()
691 __HAL_UNLOCK(hi2c); in HAL_I2C_DeInit()
702 __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspInit() argument
705 UNUSED(hi2c); in HAL_I2C_MspInit()
718 __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspDeInit() argument
721 UNUSED(hi2c); in HAL_I2C_MspDeInit()
752 HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb… in HAL_I2C_RegisterCallback() argument
760 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
765 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterCallback()
770 hi2c->MasterTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
774 hi2c->MasterRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
778 hi2c->SlaveTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
782 hi2c->SlaveRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
786 hi2c->ListenCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
790 hi2c->MemTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
794 hi2c->MemRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
798 hi2c->ErrorCallback = pCallback; in HAL_I2C_RegisterCallback()
802 hi2c->AbortCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
806 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
810 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
815 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
822 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_RegisterCallback()
827 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
831 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
836 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
846 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
878 HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal… in HAL_I2C_UnRegisterCallback() argument
882 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterCallback()
887hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
891hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
895hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
899hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
903hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_UnRegisterCallback()
907hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
911hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
915hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_UnRegisterCallback()
919hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_UnRegisterCallback()
923hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
927hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
932 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
939 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_UnRegisterCallback()
944hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
948hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
953 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
963 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
980 HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pC… in HAL_I2C_RegisterAddrCallback() argument
987 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
992 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterAddrCallback()
994 hi2c->AddrCallback = pCallback; in HAL_I2C_RegisterAddrCallback()
999 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
1015 HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_UnRegisterAddrCallback() argument
1019 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterAddrCallback()
1021 hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_UnRegisterAddrCallback()
1026 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterAddrCallback()
1125 HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD… in HAL_I2C_Master_Transmit() argument
1131 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit()
1134 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit()
1139 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1144 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit()
1145 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit()
1146 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit()
1149 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit()
1150 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit()
1151 hi2c->XferISR = NULL; in HAL_I2C_Master_Transmit()
1153 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1155 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1160 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1164 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit()
1168 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit()
1171 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit()
1173 hi2c->XferCount--; in HAL_I2C_Master_Transmit()
1174 hi2c->XferSize--; in HAL_I2C_Master_Transmit()
1178 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, in HAL_I2C_Master_Transmit()
1185 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, in HAL_I2C_Master_Transmit()
1189 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Transmit()
1192 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1197 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit()
1200 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit()
1202 hi2c->XferCount--; in HAL_I2C_Master_Transmit()
1203 hi2c->XferSize--; in HAL_I2C_Master_Transmit()
1205 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Transmit()
1208 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1213 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1215 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1216 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Transmit()
1221 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1222 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit()
1230 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1236 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Transmit()
1239 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Transmit()
1241 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit()
1242 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit()
1245 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit()
1266 HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa… in HAL_I2C_Master_Receive() argument
1271 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive()
1274 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive()
1279 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1284 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive()
1285 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive()
1286 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive()
1289 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive()
1290 hi2c->XferCount = Size; in HAL_I2C_Master_Receive()
1291 hi2c->XferISR = NULL; in HAL_I2C_Master_Receive()
1295 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1297 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1298 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1303 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1304 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1308 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Receive()
1311 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1317 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Master_Receive()
1320 hi2c->pBuffPtr++; in HAL_I2C_Master_Receive()
1322 hi2c->XferSize--; in HAL_I2C_Master_Receive()
1323 hi2c->XferCount--; in HAL_I2C_Master_Receive()
1325 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Receive()
1328 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1333 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1335 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1336 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1341 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1342 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1350 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1356 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Receive()
1359 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Receive()
1361 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive()
1362 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive()
1365 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive()
1384 HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Transmit() argument
1391 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit()
1395 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit()
1399 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit()
1404 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit()
1405 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit()
1406 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit()
1409 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit()
1410 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit()
1411 hi2c->XferISR = NULL; in HAL_I2C_Slave_Transmit()
1414 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1417 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit()
1421 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1424 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1426 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1430 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1433 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1436 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1442 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1445 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Slave_Transmit()
1448 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1451 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1454 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1460 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1464 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1467 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1470 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1475 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Transmit()
1478 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1481 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1486 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1489 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1491 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1495 error = I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart); in HAL_I2C_Slave_Transmit()
1503 tmpXferCount = hi2c->XferCount; in HAL_I2C_Slave_Transmit()
1504 if ((hi2c->ErrorCode == HAL_I2C_ERROR_AF) && (tmpXferCount == 0U)) in HAL_I2C_Slave_Transmit()
1507 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit()
1512 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1519 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1522 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_Slave_Transmit()
1525 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1528 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1534 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Transmit()
1538 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1541 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1546 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1548 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Transmit()
1549 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit()
1552 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit()
1571 HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Receive() argument
1576 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive()
1580 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive()
1584 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive()
1589 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive()
1590 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive()
1591 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive()
1594 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive()
1595 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive()
1596 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive()
1597 hi2c->XferISR = NULL; in HAL_I2C_Slave_Receive()
1600 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1603 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1606 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1611 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Receive()
1614 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1617 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1621 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Receive()
1624 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1627 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1630 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) in HAL_I2C_Slave_Receive()
1633 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1636 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1638 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1639 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1646 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1649 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1651 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1652 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1656 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1659 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1664 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Receive()
1667 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1670 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1675 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1677 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Receive()
1678 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive()
1681 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive()
1701 HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Transmit_IT() argument
1706 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_IT()
1708 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_IT()
1714 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1716 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_IT()
1717 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_IT()
1718 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_IT()
1721 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_IT()
1722 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_IT()
1723 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_IT()
1724 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_IT()
1726 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_IT()
1728 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_IT()
1733 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_IT()
1739 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_IT()
1743 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit_IT()
1746 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit_IT()
1748 hi2c->XferCount--; in HAL_I2C_Master_Transmit_IT()
1749 hi2c->XferSize--; in HAL_I2C_Master_Transmit_IT()
1751 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, in HAL_I2C_Master_Transmit_IT()
1756 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, in HAL_I2C_Master_Transmit_IT()
1761 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1771 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_IT()
1791 HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *… in HAL_I2C_Master_Receive_IT() argument
1796 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_IT()
1798 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_IT()
1804 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1806 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_IT()
1807 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_IT()
1808 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_IT()
1811 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_IT()
1812 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_IT()
1813 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_IT()
1814 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_IT()
1816 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_IT()
1818 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_IT()
1823 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_IT()
1829 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_IT()
1832 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1842 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_IT()
1860 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_IT() argument
1862 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_IT()
1865 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1867 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_IT()
1868 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_IT()
1869 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_IT()
1872 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_IT()
1875 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_IT()
1876 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_IT()
1877 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_IT()
1878 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_IT()
1879 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Transmit_IT()
1882 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_IT()
1886 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_IT()
1889 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_IT()
1891 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_IT()
1892 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_IT()
1896 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1906 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_IT()
1924 HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_IT() argument
1926 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_IT()
1929 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1931 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_IT()
1932 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_IT()
1933 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_IT()
1936 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_IT()
1939 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_IT()
1940 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_IT()
1941 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_IT()
1942 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_IT()
1943 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Receive_IT()
1946 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1956 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_IT()
1977 HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t… in HAL_I2C_Master_Transmit_DMA() argument
1984 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_DMA()
1986 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_DMA()
1992 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1994 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_DMA()
1995 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_DMA()
1996 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_DMA()
1999 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_DMA()
2000 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_DMA()
2001 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_DMA()
2002 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Transmit_DMA()
2004 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_DMA()
2006 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_DMA()
2011 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_DMA()
2015 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_DMA()
2019 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit_DMA()
2022 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit_DMA()
2024 sizetoxfer = hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
2025 hi2c->XferCount--; in HAL_I2C_Master_Transmit_DMA()
2026 hi2c->XferSize--; in HAL_I2C_Master_Transmit_DMA()
2029 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_DMA()
2031 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Transmit_DMA()
2034 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Transmit_DMA()
2037 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Transmit_DMA()
2040 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
2041 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
2044 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, in HAL_I2C_Master_Transmit_DMA()
2045 (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); in HAL_I2C_Master_Transmit_DMA()
2050 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2051 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2054 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Transmit_DMA()
2057 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2066 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), in HAL_I2C_Master_Transmit_DMA()
2070 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
2073 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2079 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Transmit_DMA()
2082 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Transmit_DMA()
2087 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2088 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2091 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Transmit_DMA()
2094 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2102 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_DMA()
2106 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit_DMA()
2110 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2119 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_DMA()
2140 HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Receive_DMA() argument
2146 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_DMA()
2148 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_DMA()
2154 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2156 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_DMA()
2157 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_DMA()
2158 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_DMA()
2161 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_DMA()
2162 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_DMA()
2163 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_DMA()
2164 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Receive_DMA()
2166 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_DMA()
2168 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_DMA()
2173 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_DMA()
2177 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Receive_DMA()
2179 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Receive_DMA()
2182 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Receive_DMA()
2185 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Receive_DMA()
2188 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2189 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2192 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Receive_DMA()
2193 hi2c->XferSize); in HAL_I2C_Master_Receive_DMA()
2198 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2199 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2202 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Receive_DMA()
2205 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2214 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_DMA()
2217 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Receive_DMA()
2220 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2226 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Receive_DMA()
2229 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Receive_DMA()
2234 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2235 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2238 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Receive_DMA()
2241 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2249 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_DMA()
2253 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive_DMA()
2257 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2266 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_DMA()
2285 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_DMA() argument
2289 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_DMA()
2293 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2297 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2299 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_DMA()
2300 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_DMA()
2301 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_DMA()
2304 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_DMA()
2305 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_DMA()
2306 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_DMA()
2307 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_DMA()
2308 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2311 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_DMA()
2315 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_DMA()
2318 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_DMA()
2320 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_DMA()
2321 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_DMA()
2324 if (hi2c->XferCount != 0U) in HAL_I2C_Slave_Transmit_DMA()
2326 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Transmit_DMA()
2329 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Transmit_DMA()
2332 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Transmit_DMA()
2335 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2336 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2339 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, in HAL_I2C_Slave_Transmit_DMA()
2340 (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Transmit_DMA()
2341 hi2c->XferSize); in HAL_I2C_Slave_Transmit_DMA()
2346 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2347 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2350 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2353 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2361 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2364 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2370 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2373 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Transmit_DMA()
2378 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2379 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2382 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2385 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2393 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2396 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2402 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2421 HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_DMA() argument
2425 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_DMA()
2429 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive_DMA()
2433 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2435 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_DMA()
2436 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_DMA()
2437 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_DMA()
2440 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_DMA()
2441 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_DMA()
2442 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_DMA()
2443 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_DMA()
2444 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Receive_DMA()
2446 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Receive_DMA()
2449 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Receive_DMA()
2452 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Receive_DMA()
2455 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2456 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2459 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Receive_DMA()
2460 hi2c->XferSize); in HAL_I2C_Slave_Receive_DMA()
2465 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2466 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2469 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Receive_DMA()
2472 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2480 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_DMA()
2483 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2489 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_DMA()
2492 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Receive_DMA()
2497 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2498 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2501 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Receive_DMA()
2504 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2531 HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre… in HAL_I2C_Mem_Write() argument
2539 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write()
2543 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write()
2548 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write()
2553 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2558 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write()
2559 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write()
2560 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write()
2563 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write()
2564 hi2c->XferCount = Size; in HAL_I2C_Mem_Write()
2565 hi2c->XferISR = NULL; in HAL_I2C_Mem_Write()
2568 …if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2571 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2576 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2578 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2579 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2583 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2584 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2590 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2596 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Mem_Write()
2599 hi2c->pBuffPtr++; in HAL_I2C_Mem_Write()
2601 hi2c->XferCount--; in HAL_I2C_Mem_Write()
2602 hi2c->XferSize--; in HAL_I2C_Mem_Write()
2604 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Write()
2607 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2612 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2614 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2615 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Write()
2620 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2621 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Write()
2626 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Write()
2630 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2636 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Write()
2639 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Write()
2641 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write()
2642 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write()
2645 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2668 HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres… in HAL_I2C_Mem_Read() argument
2676 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read()
2680 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read()
2685 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read()
2690 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2695 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read()
2696 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read()
2697 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read()
2700 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read()
2701 hi2c->XferCount = Size; in HAL_I2C_Mem_Read()
2702 hi2c->XferISR = NULL; in HAL_I2C_Mem_Read()
2705 … if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2708 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2714 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2716 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2717 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2722 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2723 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2730 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2736 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Mem_Read()
2739 hi2c->pBuffPtr++; in HAL_I2C_Mem_Read()
2741 hi2c->XferSize--; in HAL_I2C_Mem_Read()
2742 hi2c->XferCount--; in HAL_I2C_Mem_Read()
2744 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Read()
2747 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2752 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2754 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2755 I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2760 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2761 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2765 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Read()
2769 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2775 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Read()
2778 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Read()
2780 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read()
2781 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read()
2784 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2805 HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Write_IT() argument
2811 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_IT()
2815 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_IT()
2819 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_IT()
2825 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2827 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_IT()
2828 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_IT()
2829 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_IT()
2832 hi2c->XferSize = 0U; in HAL_I2C_Mem_Write_IT()
2833 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_IT()
2834 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_IT()
2835 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_IT()
2836 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Write_IT()
2837 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_IT()
2843 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2846 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_IT()
2852 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2855 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2858 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_IT()
2861 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2871 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_IT()
2893 HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd… in HAL_I2C_Mem_Read_IT() argument
2899 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_IT()
2903 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_IT()
2907 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_IT()
2913 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2915 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_IT()
2916 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_IT()
2917 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_IT()
2920 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_IT()
2921 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_IT()
2922 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_IT()
2923 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Read_IT()
2924 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_IT()
2930 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2933 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_IT()
2939 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2942 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2945 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_IT()
2948 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2958 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_IT()
2981 HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA… in HAL_I2C_Mem_Write_DMA() argument
2989 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_DMA()
2993 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_DMA()
2997 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_DMA()
3003 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3005 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_DMA()
3006 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_DMA()
3007 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_DMA()
3010 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_DMA()
3011 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_DMA()
3012 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_DMA()
3013 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Write_DMA()
3014 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_DMA()
3016 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write_DMA()
3018 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write_DMA()
3022 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write_DMA()
3029 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3032 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_DMA()
3038 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3041 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3044 if (hi2c->hdmatx != NULL) in HAL_I2C_Mem_Write_DMA()
3047 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Mem_Write_DMA()
3050 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Write_DMA()
3053 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3054 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3057 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Mem_Write_DMA()
3058 hi2c->XferSize); in HAL_I2C_Mem_Write_DMA()
3063 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3064 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3067 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Write_DMA()
3070 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3078 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_DMA()
3081 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3090 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_DMA()
3095 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3096 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3099 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Write_DMA()
3102 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3127 HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Read_DMA() argument
3135 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_DMA()
3139 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_DMA()
3143 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_DMA()
3149 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3151 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_DMA()
3152 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_DMA()
3153 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_DMA()
3156 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_DMA()
3157 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_DMA()
3158 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_DMA()
3159 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Read_DMA()
3160 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_DMA()
3162 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read_DMA()
3164 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read_DMA()
3168 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read_DMA()
3175 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3178 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_DMA()
3184 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3187 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3190 if (hi2c->hdmarx != NULL) in HAL_I2C_Mem_Read_DMA()
3193 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Mem_Read_DMA()
3196 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Read_DMA()
3199 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3200 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3203 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Mem_Read_DMA()
3204 hi2c->XferSize); in HAL_I2C_Mem_Read_DMA()
3209 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3210 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3213 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Read_DMA()
3216 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3224 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_DMA()
3227 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3236 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_DMA()
3241 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3242 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3245 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Read_DMA()
3248 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3273 HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria… in HAL_I2C_IsDeviceReady() argument
3283 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_IsDeviceReady()
3285 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_IsDeviceReady()
3291 __HAL_LOCK(hi2c); in HAL_I2C_IsDeviceReady()
3293 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_IsDeviceReady()
3294 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3299 hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); in HAL_I2C_IsDeviceReady()
3305 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3306 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3315 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3318 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3321 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3327 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3328 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3332 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) in HAL_I2C_IsDeviceReady()
3335 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3341 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3344 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3347 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3354 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3360 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3363 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3371 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3374 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3377 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3399 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Transmit_IT() argument
3409 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_IT()
3412 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3414 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_IT()
3415 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_IT()
3416 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_IT()
3419 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_IT()
3420 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_IT()
3421 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3422 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_IT()
3425 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3427 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_IT()
3432 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_IT()
3433 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3436 if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ in HAL_I2C_Master_Seq_Transmit_IT()
3441 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Seq_Transmit_IT()
3444 hi2c->pBuffPtr++; in HAL_I2C_Master_Seq_Transmit_IT()
3446 sizetoxfer = hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_IT()
3447 hi2c->XferCount--; in HAL_I2C_Master_Seq_Transmit_IT()
3448 hi2c->XferSize--; in HAL_I2C_Master_Seq_Transmit_IT()
3454 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_IT()
3462 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3465 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3467 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3474 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_IT()
3478 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_IT()
3482 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3491 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_IT()
3514 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin… in HAL_I2C_Master_Seq_Transmit_DMA() argument
3525 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_DMA()
3528 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3530 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_DMA()
3531 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_DMA()
3532 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3535 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_DMA()
3536 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_DMA()
3537 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3538 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3541 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3543 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_DMA()
3548 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_DMA()
3549 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3552 if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ in HAL_I2C_Master_Seq_Transmit_DMA()
3557 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Seq_Transmit_DMA()
3560 hi2c->pBuffPtr++; in HAL_I2C_Master_Seq_Transmit_DMA()
3562 sizetoxfer = hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3563 hi2c->XferCount--; in HAL_I2C_Master_Seq_Transmit_DMA()
3564 hi2c->XferSize--; in HAL_I2C_Master_Seq_Transmit_DMA()
3570 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_DMA()
3578 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3581 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3583 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3587 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Transmit_DMA()
3589 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3592 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Seq_Transmit_DMA()
3595 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Transmit_DMA()
3598 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3599 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3602 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, in HAL_I2C_Master_Seq_Transmit_DMA()
3603 (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); in HAL_I2C_Master_Seq_Transmit_DMA()
3608 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3609 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3612 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Transmit_DMA()
3615 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3625 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3629 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3633 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3636 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3642 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3645 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Seq_Transmit_DMA()
3650 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3651 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3654 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3657 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3665 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_DMA()
3671 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3675 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3679 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3688 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3712 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8… in HAL_I2C_Master_Seq_Receive_IT() argument
3721 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_IT()
3724 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3726 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_IT()
3727 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_IT()
3728 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_IT()
3731 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_IT()
3732 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_IT()
3733 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3734 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_IT()
3737 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3739 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_IT()
3744 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_IT()
3745 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3751 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_IT()
3759 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3762 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3764 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3769 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_IT()
3772 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3777 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_IT()
3800 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Receive_DMA() argument
3810 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_DMA()
3813 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3815 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_DMA()
3816 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_DMA()
3817 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3820 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_DMA()
3821 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_DMA()
3822 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3823 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3826 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3828 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_DMA()
3833 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_DMA()
3834 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3840 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_DMA()
3848 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3851 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3853 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3857 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Receive_DMA()
3859 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
3862 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Seq_Receive_DMA()
3865 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Receive_DMA()
3868 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3869 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3872 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Seq_Receive_DMA()
3873 hi2c->XferSize); in HAL_I2C_Master_Seq_Receive_DMA()
3878 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
3879 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3882 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Receive_DMA()
3885 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3893 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_DMA()
3896 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Receive_DMA()
3899 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3905 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Receive_DMA()
3908 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Seq_Receive_DMA()
3913 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
3914 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3917 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3920 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3928 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_DMA()
3932 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Receive_DMA()
3936 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3945 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_DMA()
3967 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
3976 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3980 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_IT()
3985 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
3988 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
3992 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3995 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
3999 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4001 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_IT()
4003 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_IT()
4007 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_IT()
4010 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_IT()
4013 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_IT()
4020 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_IT()
4021 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_IT()
4022 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_IT()
4025 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_IT()
4028 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_IT()
4029 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_IT()
4030 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_IT()
4031 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_IT()
4032 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Transmit_IT()
4034 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4035 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_IT()
4039 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4043 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
4049 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4070 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t … in HAL_I2C_Slave_Seq_Transmit_DMA() argument
4080 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4084 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4089 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4092 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4096 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4099 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4101 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4104 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4106 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4110 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4113 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4116 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4121 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4123 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4125 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4128 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4132 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4135 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4138 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4148 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4149 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4150 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4153 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_DMA()
4156 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_DMA()
4157 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_DMA()
4158 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_DMA()
4159 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_DMA()
4160 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4162 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4165 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Seq_Transmit_DMA()
4168 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Transmit_DMA()
4171 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4172 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4175 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Seq_Transmit_DMA()
4176 hi2c->XferSize); in HAL_I2C_Slave_Seq_Transmit_DMA()
4181 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4182 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4185 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4188 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4196 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Transmit_DMA()
4199 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Transmit_DMA()
4204 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4205 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4208 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4211 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4216 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4217 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_DMA()
4221 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4225 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4228 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4234 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4255 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
4264 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4268 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_IT()
4273 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4276 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4280 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4283 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4286 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_IT()
4288 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_IT()
4291 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_IT()
4295 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_IT()
4298 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_IT()
4301 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_IT()
4308 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_IT()
4309 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_IT()
4310 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_IT()
4313 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_IT()
4316 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_IT()
4317 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_IT()
4318 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_IT()
4319 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_IT()
4320 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Receive_IT()
4322 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4323 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_IT()
4327 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4331 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4337 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4358 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
4368 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4372 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4377 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4380 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4384 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4387 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4389 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4392 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4394 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4398 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4401 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4404 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_DMA()
4409 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4411 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4413 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4416 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4420 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4423 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4426 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4436 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4437 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_DMA()
4438 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4441 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_DMA()
4444 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_DMA()
4445 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_DMA()
4446 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_DMA()
4447 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_DMA()
4448 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4450 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4453 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Seq_Receive_DMA()
4456 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Receive_DMA()
4459 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4460 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4463 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, in HAL_I2C_Slave_Seq_Receive_DMA()
4464 (uint32_t)pData, hi2c->XferSize); in HAL_I2C_Slave_Seq_Receive_DMA()
4469 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4470 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4473 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4476 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4484 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Receive_DMA()
4487 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Receive_DMA()
4492 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4493 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4496 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4499 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4504 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4505 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_DMA()
4509 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4513 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4516 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4522 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4539 HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_EnableListen_IT() argument
4541 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_EnableListen_IT()
4543 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_EnableListen_IT()
4544 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_EnableListen_IT()
4547 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_EnableListen_IT()
4563 HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_DisableListen_IT() argument
4569 if (hi2c->State == HAL_I2C_STATE_LISTEN) in HAL_I2C_DisableListen_IT()
4571 tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; in HAL_I2C_DisableListen_IT()
4572 hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); in HAL_I2C_DisableListen_IT()
4573 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_DisableListen_IT()
4574 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DisableListen_IT()
4575 hi2c->XferISR = NULL; in HAL_I2C_DisableListen_IT()
4578 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_DisableListen_IT()
4596 HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) in HAL_I2C_Master_Abort_IT() argument
4598 HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; in HAL_I2C_Master_Abort_IT()
4603 __HAL_LOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4606 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in HAL_I2C_Master_Abort_IT()
4608 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Abort_IT()
4609 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in HAL_I2C_Master_Abort_IT()
4611 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in HAL_I2C_Master_Abort_IT()
4613 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Abort_IT()
4614 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in HAL_I2C_Master_Abort_IT()
4622 hi2c->State = HAL_I2C_STATE_ABORT; in HAL_I2C_Master_Abort_IT()
4626 I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); in HAL_I2C_Master_Abort_IT()
4629 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4634 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in HAL_I2C_Master_Abort_IT()
4660 void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_I2C_EV_IRQHandler() argument
4663 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_EV_IRQHandler()
4664 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_EV_IRQHandler()
4667 if (hi2c->XferISR != NULL) in HAL_I2C_EV_IRQHandler()
4669 hi2c->XferISR(hi2c, itflags, itsources); in HAL_I2C_EV_IRQHandler()
4679 void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) in HAL_I2C_ER_IRQHandler() argument
4681 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_ER_IRQHandler()
4682 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_ER_IRQHandler()
4689 hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; in HAL_I2C_ER_IRQHandler()
4692 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in HAL_I2C_ER_IRQHandler()
4699 hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; in HAL_I2C_ER_IRQHandler()
4702 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in HAL_I2C_ER_IRQHandler()
4709 hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; in HAL_I2C_ER_IRQHandler()
4712 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in HAL_I2C_ER_IRQHandler()
4716 tmperror = hi2c->ErrorCode; in HAL_I2C_ER_IRQHandler()
4721 I2C_ITError(hi2c, tmperror); in HAL_I2C_ER_IRQHandler()
4731 __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterTxCpltCallback() argument
4734 UNUSED(hi2c); in HAL_I2C_MasterTxCpltCallback()
4747 __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterRxCpltCallback() argument
4750 UNUSED(hi2c); in HAL_I2C_MasterRxCpltCallback()
4762 __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveTxCpltCallback() argument
4765 UNUSED(hi2c); in HAL_I2C_SlaveTxCpltCallback()
4778 __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveRxCpltCallback() argument
4781 UNUSED(hi2c); in HAL_I2C_SlaveRxCpltCallback()
4796 __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM… in HAL_I2C_AddrCallback() argument
4799 UNUSED(hi2c); in HAL_I2C_AddrCallback()
4814 __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ListenCpltCallback() argument
4817 UNUSED(hi2c); in HAL_I2C_ListenCpltCallback()
4830 __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemTxCpltCallback() argument
4833 UNUSED(hi2c); in HAL_I2C_MemTxCpltCallback()
4846 __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemRxCpltCallback() argument
4849 UNUSED(hi2c); in HAL_I2C_MemRxCpltCallback()
4862 __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ErrorCallback() argument
4865 UNUSED(hi2c); in HAL_I2C_ErrorCallback()
4878 __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_AbortCpltCallback() argument
4881 UNUSED(hi2c); in HAL_I2C_AbortCpltCallback()
4913 HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetState() argument
4916 return hi2c->State; in HAL_I2C_GetState()
4925 HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetMode() argument
4927 return hi2c->Mode; in HAL_I2C_GetMode()
4936 uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetError() argument
4938 return hi2c->ErrorCode; in HAL_I2C_GetError()
4961 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_IT() argument
4968 __HAL_LOCK(hi2c); in I2C_Master_ISR_IT()
4974 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_IT()
4979 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_IT()
4982 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_IT()
4991 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Master_ISR_IT()
4994 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
4996 hi2c->XferSize--; in I2C_Master_ISR_IT()
4997 hi2c->XferCount--; in I2C_Master_ISR_IT()
5004 if (hi2c->XferCount != 0U) in I2C_Master_ISR_IT()
5007 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Master_ISR_IT()
5010 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5012 hi2c->XferSize--; in I2C_Master_ISR_IT()
5013 hi2c->XferCount--; in I2C_Master_ISR_IT()
5019 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Master_ISR_IT()
5021 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_IT()
5023 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_IT()
5025 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_IT()
5026 … I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5030 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_IT()
5031 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5033 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5034 hi2c->XferOptions, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5038 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5046 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5049 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5055 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5062 if (hi2c->XferCount == 0U) in I2C_Master_ISR_IT()
5064 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5067 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5070 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_IT()
5075 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5083 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5095 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Master_ISR_IT()
5099 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_IT()
5112 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_IT() argument
5119 __HAL_LOCK(hi2c); in I2C_Mem_ISR_IT()
5125 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_IT()
5130 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_IT()
5133 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_IT()
5142 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Mem_ISR_IT()
5145 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5147 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5148 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5153 if (hi2c->Memaddress == 0xFFFFFFFFU) in I2C_Mem_ISR_IT()
5156 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Mem_ISR_IT()
5159 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5161 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5162 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5167 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_IT()
5170 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_IT()
5176 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Mem_ISR_IT()
5178 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5180 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5181 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5186 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5187 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5195 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_IT()
5202 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_IT()
5205 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_Mem_ISR_IT()
5207 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_IT()
5212 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5214 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5217 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5222 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5225 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5238 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Mem_ISR_IT()
5242 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_IT()
5255 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_IT() argument
5258 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_IT()
5262 __HAL_LOCK(hi2c); in I2C_Slave_ISR_IT()
5269 I2C_ITSlaveCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5278 if (hi2c->XferCount == 0U) in I2C_Slave_ISR_IT()
5280 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_IT()
5285 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5287 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_IT()
5290 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5293 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_IT()
5297 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5302 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5309 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5312 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_IT()
5317 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_IT()
5324 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5327 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Slave_ISR_IT()
5330 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5332 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5333 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5336 if ((hi2c->XferCount == 0U) && \ in I2C_Slave_ISR_IT()
5340 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5346 I2C_ITAddrCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5355 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5358 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Slave_ISR_IT()
5361 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5363 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5364 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5372 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5382 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_IT()
5396 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_DMA() argument
5403 __HAL_LOCK(hi2c); in I2C_Master_ISR_DMA()
5409 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_DMA()
5412 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_DMA()
5417 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Master_ISR_DMA()
5420 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_DMA()
5426 __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); in I2C_Master_ISR_DMA()
5428 if (hi2c->XferCount != 0U) in I2C_Master_ISR_DMA()
5431 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_DMA()
5434 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_DMA()
5436 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_DMA()
5441 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_DMA()
5442 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5444 xfermode = hi2c->XferOptions; in I2C_Master_ISR_DMA()
5453 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); in I2C_Master_ISR_DMA()
5456 hi2c->XferCount -= hi2c->XferSize; in I2C_Master_ISR_DMA()
5459 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Master_ISR_DMA()
5461 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Master_ISR_DMA()
5465 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Master_ISR_DMA()
5471 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5474 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5480 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5487 if (hi2c->XferCount == 0U) in I2C_Master_ISR_DMA()
5489 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5492 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5495 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_DMA()
5500 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5508 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5515 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Master_ISR_DMA()
5523 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_DMA()
5536 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_DMA() argument
5542 __HAL_LOCK(hi2c); in I2C_Mem_ISR_DMA()
5548 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_DMA()
5551 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_DMA()
5556 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Mem_ISR_DMA()
5559 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_DMA()
5565 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_DMA()
5568 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_DMA()
5574 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_DMA()
5577 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5579 if (hi2c->XferCount != 0U) in I2C_Mem_ISR_DMA()
5582 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5584 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5585 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5590 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5591 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5596 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5599 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5601 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5605 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5612 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_DMA()
5619 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_DMA()
5622 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5624 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5629 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5631 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5634 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5639 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5642 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5647 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5650 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5652 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5656 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5663 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Mem_ISR_DMA()
5671 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_DMA()
5684 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_DMA() argument
5687 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_DMA()
5692 __HAL_LOCK(hi2c); in I2C_Slave_ISR_DMA()
5699 I2C_ITSlaveCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5712 if (hi2c->hdmarx != NULL) in I2C_Slave_ISR_DMA()
5716 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) in I2C_Slave_ISR_DMA()
5724 if (hi2c->hdmatx != NULL) in I2C_Slave_ISR_DMA()
5728 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) in I2C_Slave_ISR_DMA()
5737 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_DMA()
5742 I2C_ITListenCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5744 … else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_DMA()
5747 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5750 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_DMA()
5754 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_DMA()
5759 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5766 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5769 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_DMA()
5772 tmpstate = hi2c->State; in I2C_Slave_ISR_DMA()
5778 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_Slave_ISR_DMA()
5782 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_Slave_ISR_DMA()
5790 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_DMA()
5797 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5803 I2C_ITAddrCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5811 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_DMA()
5829 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryWrite() argument
5833 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in I2C_RequestMemoryWrite()
5836 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5845 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
5851 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryWrite()
5854 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5860 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
5864 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5884 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryRead() argument
5888 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in I2C_RequestMemoryRead()
5891 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5900 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
5906 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryRead()
5909 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5915 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
5919 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5933 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITAddrCplt() argument
5944 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_ITAddrCplt()
5946 transferdirection = I2C_GET_DIR(hi2c); in I2C_ITAddrCplt()
5947 slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); in I2C_ITAddrCplt()
5948 ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); in I2C_ITAddrCplt()
5949 ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); in I2C_ITAddrCplt()
5952 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in I2C_ITAddrCplt()
5957 hi2c->AddrEventCount++; in I2C_ITAddrCplt()
5958 if (hi2c->AddrEventCount == 2U) in I2C_ITAddrCplt()
5961 hi2c->AddrEventCount = 0U; in I2C_ITAddrCplt()
5964 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
5967 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5971 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5973 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5982 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
5985 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5989 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5991 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5999 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
6002 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6006 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6008 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6016 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
6019 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6028 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITMasterSeqCplt() argument
6031 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterSeqCplt()
6035 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterSeqCplt()
6037 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
6038 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterSeqCplt()
6039 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
6042 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterSeqCplt()
6045 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
6049 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6051 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6057 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
6058 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterSeqCplt()
6059 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
6062 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterSeqCplt()
6065 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
6069 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6071 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6081 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITSlaveSeqCplt() argument
6083 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveSeqCplt()
6086 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveSeqCplt()
6093 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveSeqCplt()
6098 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveSeqCplt()
6106 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in I2C_ITSlaveSeqCplt()
6109 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
6110 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveSeqCplt()
6113 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITSlaveSeqCplt()
6116 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
6120 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6122 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6126 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in I2C_ITSlaveSeqCplt()
6129 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
6130 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveSeqCplt()
6133 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITSlaveSeqCplt()
6136 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
6140 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6142 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6157 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITMasterCplt() argument
6164 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITMasterCplt()
6167 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6169 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterCplt()
6170 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterCplt()
6172 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6174 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterCplt()
6175 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterCplt()
6183 I2C_RESET_CR2(hi2c); in I2C_ITMasterCplt()
6186 hi2c->XferISR = NULL; in I2C_ITMasterCplt()
6187 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITMasterCplt()
6192 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITMasterCplt()
6195 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITMasterCplt()
6199 if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) in I2C_ITMasterCplt()
6202 tmpreg = (uint8_t)hi2c->Instance->RXDR; in I2C_ITMasterCplt()
6207 I2C_Flush_TXDR(hi2c); in I2C_ITMasterCplt()
6210 tmperror = hi2c->ErrorCode; in I2C_ITMasterCplt()
6213 if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) in I2C_ITMasterCplt()
6216 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITMasterCplt()
6219 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6221 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6222 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6224 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6226 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6229 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6233 hi2c->MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6235 HAL_I2C_MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6240 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6243 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6247 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6249 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6254 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6256 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6257 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6259 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6261 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6264 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6268 hi2c->MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6270 HAL_I2C_MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6275 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6278 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6282 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6284 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6300 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITSlaveCplt() argument
6302 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveCplt()
6304 uint32_t tmpoptions = hi2c->XferOptions; in I2C_ITSlaveCplt()
6305 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITSlaveCplt()
6308 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITSlaveCplt()
6313 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in I2C_ITSlaveCplt()
6314 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveCplt()
6318 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6319 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveCplt()
6323 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6324 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6332 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_ITSlaveCplt()
6335 I2C_RESET_CR2(hi2c); in I2C_ITSlaveCplt()
6338 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6345 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveCplt()
6347 if (hi2c->hdmatx != NULL) in I2C_ITSlaveCplt()
6349 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); in I2C_ITSlaveCplt()
6355 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveCplt()
6357 if (hi2c->hdmarx != NULL) in I2C_ITSlaveCplt()
6359 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); in I2C_ITSlaveCplt()
6375 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITSlaveCplt()
6378 hi2c->pBuffPtr++; in I2C_ITSlaveCplt()
6380 if ((hi2c->XferSize > 0U)) in I2C_ITSlaveCplt()
6382 hi2c->XferSize--; in I2C_ITSlaveCplt()
6383 hi2c->XferCount--; in I2C_ITSlaveCplt()
6388 if (hi2c->XferCount != 0U) in I2C_ITSlaveCplt()
6391 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6401 if (hi2c->XferCount == 0U) in I2C_ITSlaveCplt()
6403 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_ITSlaveCplt()
6408 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6410 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_ITSlaveCplt()
6413 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6416 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6420 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6425 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6432 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6435 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6440 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6445 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveCplt()
6446 hi2c->XferISR = NULL; in I2C_ITSlaveCplt()
6448 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) in I2C_ITSlaveCplt()
6451 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6454 if (hi2c->State == HAL_I2C_STATE_LISTEN) in I2C_ITSlaveCplt()
6457 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6460 else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_ITSlaveCplt()
6463 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6465 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITSlaveCplt()
6466 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6467 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6470 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6474 hi2c->ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6476 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6480 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITSlaveCplt()
6482 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6483 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6486 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6490 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6492 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6497 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6498 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6501 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6505 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6507 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6518 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITListenCplt() argument
6521 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITListenCplt()
6522 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITListenCplt()
6523 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITListenCplt()
6524 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITListenCplt()
6525 hi2c->XferISR = NULL; in I2C_ITListenCplt()
6531 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITListenCplt()
6534 hi2c->pBuffPtr++; in I2C_ITListenCplt()
6536 if ((hi2c->XferSize > 0U)) in I2C_ITListenCplt()
6538 hi2c->XferSize--; in I2C_ITListenCplt()
6539 hi2c->XferCount--; in I2C_ITListenCplt()
6542 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITListenCplt()
6547 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITListenCplt()
6550 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITListenCplt()
6553 __HAL_UNLOCK(hi2c); in I2C_ITListenCplt()
6557 hi2c->ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6559 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6569 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) in I2C_ITError() argument
6571 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITError()
6578 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITError()
6579 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITError()
6580 hi2c->XferCount = 0U; in I2C_ITError()
6583 hi2c->ErrorCode |= ErrorCode; in I2C_ITError()
6591 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6594 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITError()
6595 hi2c->XferISR = I2C_Slave_ISR_IT; in I2C_ITError()
6600 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6603 I2C_Flush_TXDR(hi2c); in I2C_ITError()
6607 if (hi2c->State != HAL_I2C_STATE_ABORT) in I2C_ITError()
6610 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITError()
6613 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) in I2C_ITError()
6615 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_ITError()
6617 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITError()
6618 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITError()
6622 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITError()
6626 hi2c->XferISR = NULL; in I2C_ITError()
6631 tmppreviousstate = hi2c->PreviousState; in I2C_ITError()
6633 if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ in I2C_ITError()
6636 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in I2C_ITError()
6638 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITError()
6641 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) in I2C_ITError()
6645 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6648 __HAL_UNLOCK(hi2c); in I2C_ITError()
6651 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in I2C_ITError()
6654 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in I2C_ITError()
6659 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6663 else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ in I2C_ITError()
6666 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in I2C_ITError()
6668 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITError()
6671 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) in I2C_ITError()
6675 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6678 __HAL_UNLOCK(hi2c); in I2C_ITError()
6681 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in I2C_ITError()
6684 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in I2C_ITError()
6689 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6695 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6704 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) in I2C_TreatErrorCallback() argument
6706 if (hi2c->State == HAL_I2C_STATE_ABORT) in I2C_TreatErrorCallback()
6708 hi2c->State = HAL_I2C_STATE_READY; in I2C_TreatErrorCallback()
6709 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6712 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6716 hi2c->AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6718 HAL_I2C_AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6723 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6726 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6730 hi2c->ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6732 HAL_I2C_ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6742 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) in I2C_Flush_TXDR() argument
6746 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) in I2C_Flush_TXDR()
6748 hi2c->Instance->TXDR = 0x00U; in I2C_Flush_TXDR()
6752 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) in I2C_Flush_TXDR()
6754 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); in I2C_Flush_TXDR()
6767 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterTransmitCplt() local
6770 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMAMasterTransmitCplt()
6773 if (hi2c->XferCount == 0U) in I2C_DMAMasterTransmitCplt()
6776 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterTransmitCplt()
6782 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterTransmitCplt()
6785 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterTransmitCplt()
6787 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterTransmitCplt()
6791 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterTransmitCplt()
6795 if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in I2C_DMAMasterTransmitCplt()
6796 hi2c->XferSize) != HAL_OK) in I2C_DMAMasterTransmitCplt()
6799 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterTransmitCplt()
6804 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterTransmitCplt()
6818 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveTransmitCplt() local
6819 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveTransmitCplt()
6824 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMASlaveTransmitCplt()
6828 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveTransmitCplt()
6847 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterReceiveCplt() local
6850 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMAMasterReceiveCplt()
6853 if (hi2c->XferCount == 0U) in I2C_DMAMasterReceiveCplt()
6856 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterReceiveCplt()
6862 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterReceiveCplt()
6865 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterReceiveCplt()
6867 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterReceiveCplt()
6871 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterReceiveCplt()
6875 if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, in I2C_DMAMasterReceiveCplt()
6876 hi2c->XferSize) != HAL_OK) in I2C_DMAMasterReceiveCplt()
6879 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterReceiveCplt()
6884 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterReceiveCplt()
6898 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveReceiveCplt() local
6899 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveReceiveCplt()
6901 if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ in I2C_DMASlaveReceiveCplt()
6905 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMASlaveReceiveCplt()
6908 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveReceiveCplt()
6927 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAError() local
6930 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_DMAError()
6933 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAError()
6946 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAAbort() local
6949 if (hi2c->hdmatx != NULL) in I2C_DMAAbort()
6951 hi2c->hdmatx->XferAbortCallback = NULL; in I2C_DMAAbort()
6953 if (hi2c->hdmarx != NULL) in I2C_DMAAbort()
6955 hi2c->hdmarx->XferAbortCallback = NULL; in I2C_DMAAbort()
6958 I2C_TreatErrorCallback(hi2c); in I2C_DMAAbort()
6974 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta… in I2C_WaitOnFlagUntilTimeout() argument
6977 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) in I2C_WaitOnFlagUntilTimeout()
6980 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnFlagUntilTimeout()
6990 if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) in I2C_WaitOnFlagUntilTimeout()
6992 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnFlagUntilTimeout()
6993 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnFlagUntilTimeout()
6994 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnFlagUntilTimeout()
6997 __HAL_UNLOCK(hi2c); in I2C_WaitOnFlagUntilTimeout()
7014 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnTXISFlagUntilTimeout() argument
7017 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) in I2C_WaitOnTXISFlagUntilTimeout()
7020 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnTXISFlagUntilTimeout()
7030 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) in I2C_WaitOnTXISFlagUntilTimeout()
7032 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnTXISFlagUntilTimeout()
7033 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnTXISFlagUntilTimeout()
7034 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnTXISFlagUntilTimeout()
7037 __HAL_UNLOCK(hi2c); in I2C_WaitOnTXISFlagUntilTimeout()
7055 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnSTOPFlagUntilTimeout() argument
7058 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_WaitOnSTOPFlagUntilTimeout()
7061 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnSTOPFlagUntilTimeout()
7069 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) in I2C_WaitOnSTOPFlagUntilTimeout()
7071 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnSTOPFlagUntilTimeout()
7072 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnSTOPFlagUntilTimeout()
7073 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnSTOPFlagUntilTimeout()
7076 __HAL_UNLOCK(hi2c); in I2C_WaitOnSTOPFlagUntilTimeout()
7093 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnRXNEFlagUntilTimeout() argument
7098 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) && (status == HAL_OK)) in I2C_WaitOnRXNEFlagUntilTimeout()
7101 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnRXNEFlagUntilTimeout()
7107 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) && (status == HAL_OK)) in I2C_WaitOnRXNEFlagUntilTimeout()
7111 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) in I2C_WaitOnRXNEFlagUntilTimeout()
7119 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_WaitOnRXNEFlagUntilTimeout()
7121 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_WaitOnRXNEFlagUntilTimeout()
7122 hi2c->ErrorCode = HAL_I2C_ERROR_AF; in I2C_WaitOnRXNEFlagUntilTimeout()
7125 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_WaitOnRXNEFlagUntilTimeout()
7128 I2C_RESET_CR2(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7130 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7131 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7134 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7140 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7147 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) in I2C_WaitOnRXNEFlagUntilTimeout()
7149 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnRXNEFlagUntilTimeout()
7150 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7153 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7170 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti… in I2C_IsErrorOccurred() argument
7173 uint32_t itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7182 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_IsErrorOccurred()
7186 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) in I2C_IsErrorOccurred()
7193 tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); in I2C_IsErrorOccurred()
7194 tmp2 = hi2c->Mode; in I2C_IsErrorOccurred()
7197 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ in I2C_IsErrorOccurred()
7202 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_IsErrorOccurred()
7208 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_IsErrorOccurred()
7228 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_IsErrorOccurred()
7237 itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7246 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in I2C_IsErrorOccurred()
7257 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in I2C_IsErrorOccurred()
7268 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in I2C_IsErrorOccurred()
7276 I2C_Flush_TXDR(hi2c); in I2C_IsErrorOccurred()
7279 I2C_RESET_CR2(hi2c); in I2C_IsErrorOccurred()
7281 hi2c->ErrorCode |= error_code; in I2C_IsErrorOccurred()
7282 hi2c->State = HAL_I2C_STATE_READY; in I2C_IsErrorOccurred()
7283 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_IsErrorOccurred()
7286 __HAL_UNLOCK(hi2c); in I2C_IsErrorOccurred()
7311 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t… in I2C_TransferConfig() argument
7315 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in I2C_TransferConfig()
7325 MODIFY_REG(hi2c->Instance->CR2, \ in I2C_TransferConfig()
7338 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Enable_IRQ() argument
7343 if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ in I2C_Enable_IRQ()
7344 (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ in I2C_Enable_IRQ()
7345 (hi2c->XferISR != I2C_Mem_ISR_DMA)) in I2C_Enable_IRQ()
7423 __HAL_I2C_ENABLE_IT(hi2c, tmpisr); in I2C_Enable_IRQ()
7433 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Disable_IRQ() argument
7442 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7454 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7488 __HAL_I2C_DISABLE_IT(hi2c, tmpisr); in I2C_Disable_IRQ()
7496 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) in I2C_ConvertOtherXferOptions() argument
7501 if (hi2c->XferOptions == I2C_OTHER_FRAME) in I2C_ConvertOtherXferOptions()
7503 hi2c->XferOptions = I2C_FIRST_FRAME; in I2C_ConvertOtherXferOptions()
7509 else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) in I2C_ConvertOtherXferOptions()
7511 hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; in I2C_ConvertOtherXferOptions()