Lines Matching refs:hi2c
429 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
430 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c);
431 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c);
432 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
433 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
434 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
435 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);
438 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
441 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
446 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
448 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
450 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
452 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
454 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
456 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
460 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta…
462 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
464 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
466 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
468 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
472 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
473 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
476 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c);
479 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c);
482 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t…
486 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c);
535 HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) in HAL_I2C_Init() argument
538 if (hi2c == NULL) in HAL_I2C_Init()
544 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_Init()
545 assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); in HAL_I2C_Init()
546 assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); in HAL_I2C_Init()
547 assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); in HAL_I2C_Init()
548 assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); in HAL_I2C_Init()
549 assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); in HAL_I2C_Init()
550 assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); in HAL_I2C_Init()
551 assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); in HAL_I2C_Init()
553 if (hi2c->State == HAL_I2C_STATE_RESET) in HAL_I2C_Init()
556 hi2c->Lock = HAL_UNLOCKED; in HAL_I2C_Init()
560 … hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_Init()
561 … hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_Init()
562 … hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_Init()
563 … hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_Init()
564 … hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_Init()
565 … hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_Init()
566 … hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_Init()
567 … hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_Init()
568 … hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_Init()
569 … hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_Init()
571 if (hi2c->MspInitCallback == NULL) in HAL_I2C_Init()
573 hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_Init()
577 hi2c->MspInitCallback(hi2c); in HAL_I2C_Init()
580 HAL_I2C_MspInit(hi2c); in HAL_I2C_Init()
584 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_Init()
587 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_Init()
591 hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; in HAL_I2C_Init()
595 hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; in HAL_I2C_Init()
598 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) in HAL_I2C_Init()
600 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
604 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
609 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Init()
611 hi2c->Instance->CR2 = (I2C_CR2_ADD10); in HAL_I2C_Init()
614 hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); in HAL_I2C_Init()
618 hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; in HAL_I2C_Init()
621 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ in HAL_I2C_Init()
622 (hi2c->Init.OwnAddress2Masks << 8)); in HAL_I2C_Init()
626 hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); in HAL_I2C_Init()
629 __HAL_I2C_ENABLE(hi2c); in HAL_I2C_Init()
631 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Init()
632 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Init()
633 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_Init()
634 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Init()
645 HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_DeInit() argument
648 if (hi2c == NULL) in HAL_I2C_DeInit()
654 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_DeInit()
656 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_DeInit()
659 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_DeInit()
662 if (hi2c->MspDeInitCallback == NULL) in HAL_I2C_DeInit()
664 hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_DeInit()
668 hi2c->MspDeInitCallback(hi2c); in HAL_I2C_DeInit()
671 HAL_I2C_MspDeInit(hi2c); in HAL_I2C_DeInit()
674 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_DeInit()
675 hi2c->State = HAL_I2C_STATE_RESET; in HAL_I2C_DeInit()
676 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_DeInit()
677 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DeInit()
680 __HAL_UNLOCK(hi2c); in HAL_I2C_DeInit()
691 __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspInit() argument
694 UNUSED(hi2c); in HAL_I2C_MspInit()
707 __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspDeInit() argument
710 UNUSED(hi2c); in HAL_I2C_MspDeInit()
741 HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb… in HAL_I2C_RegisterCallback() argument
749 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
754 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterCallback()
759 hi2c->MasterTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
763 hi2c->MasterRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
767 hi2c->SlaveTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
771 hi2c->SlaveRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
775 hi2c->ListenCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
779 hi2c->MemTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
783 hi2c->MemRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
787 hi2c->ErrorCallback = pCallback; in HAL_I2C_RegisterCallback()
791 hi2c->AbortCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
795 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
799 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
804 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
811 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_RegisterCallback()
816 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
820 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
825 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
835 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
867 HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal… in HAL_I2C_UnRegisterCallback() argument
871 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterCallback()
876 … hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
880 … hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
884 … hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
888 … hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
892 … hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_UnRegisterCallback()
896 … hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
900 … hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
904 … hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_UnRegisterCallback()
908 … hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_UnRegisterCallback()
912 … hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
916 … hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
921 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
928 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_UnRegisterCallback()
933 … hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
937 … hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
942 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
952 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
969 HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pC… in HAL_I2C_RegisterAddrCallback() argument
976 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
981 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterAddrCallback()
983 hi2c->AddrCallback = pCallback; in HAL_I2C_RegisterAddrCallback()
988 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
1004 HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_UnRegisterAddrCallback() argument
1008 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterAddrCallback()
1010 hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_UnRegisterAddrCallback()
1015 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterAddrCallback()
1114 HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD… in HAL_I2C_Master_Transmit() argument
1119 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit()
1122 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit()
1127 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1132 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit()
1133 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit()
1134 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit()
1137 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit()
1138 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit()
1139 hi2c->XferISR = NULL; in HAL_I2C_Master_Transmit()
1143 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1145 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1146 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Transmit()
1151 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1152 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit()
1156 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Transmit()
1159 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1164 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit()
1167 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit()
1169 hi2c->XferCount--; in HAL_I2C_Master_Transmit()
1170 hi2c->XferSize--; in HAL_I2C_Master_Transmit()
1172 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Transmit()
1175 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1180 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1182 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1183 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Transmit()
1188 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1189 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit()
1197 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1203 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Transmit()
1206 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Transmit()
1208 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit()
1209 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit()
1212 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit()
1233 HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa… in HAL_I2C_Master_Receive() argument
1238 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive()
1241 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive()
1246 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1251 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive()
1252 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive()
1253 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive()
1256 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive()
1257 hi2c->XferCount = Size; in HAL_I2C_Master_Receive()
1258 hi2c->XferISR = NULL; in HAL_I2C_Master_Receive()
1262 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1264 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1265 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1270 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1271 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1275 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Receive()
1278 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1284 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Master_Receive()
1287 hi2c->pBuffPtr++; in HAL_I2C_Master_Receive()
1289 hi2c->XferSize--; in HAL_I2C_Master_Receive()
1290 hi2c->XferCount--; in HAL_I2C_Master_Receive()
1292 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Receive()
1295 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1300 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1302 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1303 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1308 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1309 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1317 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1323 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Receive()
1326 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Receive()
1328 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive()
1329 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive()
1332 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive()
1351 HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Transmit() argument
1356 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit()
1360 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit()
1364 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit()
1369 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit()
1370 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit()
1371 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit()
1374 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit()
1375 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit()
1376 hi2c->XferISR = NULL; in HAL_I2C_Slave_Transmit()
1379 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1382 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1385 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1390 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit()
1394 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1397 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1399 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1403 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1406 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Slave_Transmit()
1409 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1412 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1417 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1421 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1424 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1428 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Transmit()
1431 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1434 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1439 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1442 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1444 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1448 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1451 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1456 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1459 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_Slave_Transmit()
1462 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1465 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1471 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Transmit()
1474 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1477 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1482 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1484 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Transmit()
1485 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit()
1488 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit()
1507 HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Receive() argument
1512 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive()
1516 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive()
1520 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive()
1525 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive()
1526 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive()
1527 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive()
1530 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive()
1531 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive()
1532 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive()
1533 hi2c->XferISR = NULL; in HAL_I2C_Slave_Receive()
1536 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1539 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1542 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1547 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Receive()
1550 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1553 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1557 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Receive()
1560 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1563 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1566 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) in HAL_I2C_Slave_Receive()
1569 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1572 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1574 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1575 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1582 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1585 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1587 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1588 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1592 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1595 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1600 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Receive()
1603 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1606 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1611 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1613 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Receive()
1614 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive()
1617 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive()
1637 HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Transmit_IT() argument
1642 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_IT()
1644 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_IT()
1650 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1652 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_IT()
1653 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_IT()
1654 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_IT()
1657 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_IT()
1658 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_IT()
1659 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_IT()
1660 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_IT()
1662 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_IT()
1664 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_IT()
1669 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_IT()
1675 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); in HAL_I2C_Master_Transmit_IT()
1678 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1688 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_IT()
1708 HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *… in HAL_I2C_Master_Receive_IT() argument
1713 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_IT()
1715 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_IT()
1721 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1723 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_IT()
1724 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_IT()
1725 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_IT()
1728 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_IT()
1729 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_IT()
1730 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_IT()
1731 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_IT()
1733 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_IT()
1735 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_IT()
1740 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_IT()
1746 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_IT()
1749 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1759 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_IT()
1777 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_IT() argument
1779 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_IT()
1782 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1784 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_IT()
1785 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_IT()
1786 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_IT()
1789 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_IT()
1792 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_IT()
1793 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_IT()
1794 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_IT()
1795 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_IT()
1796 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Transmit_IT()
1799 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_IT()
1803 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_IT()
1806 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_IT()
1808 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_IT()
1809 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_IT()
1813 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1823 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_IT()
1841 HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_IT() argument
1843 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_IT()
1846 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1848 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_IT()
1849 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_IT()
1850 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_IT()
1853 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_IT()
1856 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_IT()
1857 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_IT()
1858 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_IT()
1859 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_IT()
1860 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Receive_IT()
1863 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1873 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_IT()
1893 HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t… in HAL_I2C_Master_Transmit_DMA() argument
1899 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_DMA()
1901 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_DMA()
1907 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1909 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_DMA()
1910 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_DMA()
1911 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_DMA()
1914 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_DMA()
1915 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_DMA()
1916 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_DMA()
1917 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Transmit_DMA()
1919 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_DMA()
1921 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_DMA()
1926 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_DMA()
1930 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_DMA()
1932 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Transmit_DMA()
1935 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Transmit_DMA()
1938 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Transmit_DMA()
1941 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
1942 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
1945 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Transmit_DMA()
1946 hi2c->XferSize); in HAL_I2C_Master_Transmit_DMA()
1951 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
1952 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
1955 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Transmit_DMA()
1958 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1967 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); in HAL_I2C_Master_Transmit_DMA()
1970 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
1973 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1979 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Transmit_DMA()
1982 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Transmit_DMA()
1987 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
1988 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
1991 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Transmit_DMA()
1994 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2002 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_DMA()
2006 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit_DMA()
2010 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2019 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_DMA()
2040 HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Receive_DMA() argument
2046 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_DMA()
2048 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_DMA()
2054 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2056 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_DMA()
2057 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_DMA()
2058 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_DMA()
2061 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_DMA()
2062 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_DMA()
2063 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_DMA()
2064 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Receive_DMA()
2066 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_DMA()
2068 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_DMA()
2073 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_DMA()
2077 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Receive_DMA()
2079 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Receive_DMA()
2082 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Receive_DMA()
2085 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Receive_DMA()
2088 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2089 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2092 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Receive_DMA()
2093 hi2c->XferSize); in HAL_I2C_Master_Receive_DMA()
2098 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2099 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2102 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Receive_DMA()
2105 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2114 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_DMA()
2117 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Receive_DMA()
2120 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2126 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Receive_DMA()
2129 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Receive_DMA()
2134 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2135 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2138 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Receive_DMA()
2141 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2149 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_DMA()
2153 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive_DMA()
2157 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2166 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Receive_DMA()
2185 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_DMA() argument
2189 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_DMA()
2193 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2197 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2199 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_DMA()
2200 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_DMA()
2201 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_DMA()
2204 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_DMA()
2205 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_DMA()
2206 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_DMA()
2207 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_DMA()
2208 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2211 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_DMA()
2215 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_DMA()
2218 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_DMA()
2220 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_DMA()
2221 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_DMA()
2224 if (hi2c->XferCount != 0U) in HAL_I2C_Slave_Transmit_DMA()
2226 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Transmit_DMA()
2229 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Transmit_DMA()
2232 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Transmit_DMA()
2235 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2236 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2239 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, in HAL_I2C_Slave_Transmit_DMA()
2240 (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Transmit_DMA()
2241 hi2c->XferSize); in HAL_I2C_Slave_Transmit_DMA()
2246 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2247 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2250 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2253 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2261 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2264 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2270 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2273 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Transmit_DMA()
2278 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2279 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2282 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2285 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2293 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2296 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2302 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2321 HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_DMA() argument
2325 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_DMA()
2329 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive_DMA()
2333 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2335 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_DMA()
2336 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_DMA()
2337 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_DMA()
2340 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_DMA()
2341 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_DMA()
2342 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_DMA()
2343 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_DMA()
2344 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Receive_DMA()
2346 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Receive_DMA()
2349 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Receive_DMA()
2352 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Receive_DMA()
2355 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2356 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2359 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Receive_DMA()
2360 hi2c->XferSize); in HAL_I2C_Slave_Receive_DMA()
2365 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2366 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2369 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Receive_DMA()
2372 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2380 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_DMA()
2383 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2389 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_DMA()
2392 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Receive_DMA()
2397 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2398 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2401 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Receive_DMA()
2404 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2430 HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre… in HAL_I2C_Mem_Write() argument
2438 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write()
2442 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write()
2447 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write()
2452 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2457 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write()
2458 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write()
2459 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write()
2462 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write()
2463 hi2c->XferCount = Size; in HAL_I2C_Mem_Write()
2464 hi2c->XferISR = NULL; in HAL_I2C_Mem_Write()
2467 …if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2470 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2475 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2477 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2478 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2482 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2483 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2489 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2495 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Mem_Write()
2498 hi2c->pBuffPtr++; in HAL_I2C_Mem_Write()
2500 hi2c->XferCount--; in HAL_I2C_Mem_Write()
2501 hi2c->XferSize--; in HAL_I2C_Mem_Write()
2503 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Write()
2506 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2511 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2513 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2514 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Write()
2519 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2520 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Write()
2525 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Write()
2529 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2535 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Write()
2538 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Write()
2540 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write()
2541 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write()
2544 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2567 HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres… in HAL_I2C_Mem_Read() argument
2575 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read()
2579 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read()
2584 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read()
2589 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2594 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read()
2595 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read()
2596 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read()
2599 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read()
2600 hi2c->XferCount = Size; in HAL_I2C_Mem_Read()
2601 hi2c->XferISR = NULL; in HAL_I2C_Mem_Read()
2604 … if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2607 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2613 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2615 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2616 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2621 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2622 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2629 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2635 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Mem_Read()
2638 hi2c->pBuffPtr++; in HAL_I2C_Mem_Read()
2640 hi2c->XferSize--; in HAL_I2C_Mem_Read()
2641 hi2c->XferCount--; in HAL_I2C_Mem_Read()
2643 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Read()
2646 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2651 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2653 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2654 I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2659 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2660 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2664 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Read()
2668 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2674 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Read()
2677 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Read()
2679 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read()
2680 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read()
2683 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2704 HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Write_IT() argument
2710 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_IT()
2714 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_IT()
2718 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_IT()
2724 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2726 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_IT()
2727 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_IT()
2728 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_IT()
2731 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_IT()
2732 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_IT()
2733 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_IT()
2734 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Write_IT()
2735 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_IT()
2741 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2744 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_IT()
2750 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2753 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2756 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_IT()
2759 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2769 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_IT()
2791 HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd… in HAL_I2C_Mem_Read_IT() argument
2797 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_IT()
2801 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_IT()
2805 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_IT()
2811 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2813 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_IT()
2814 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_IT()
2815 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_IT()
2818 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_IT()
2819 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_IT()
2820 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_IT()
2821 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Read_IT()
2822 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_IT()
2828 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2831 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_IT()
2837 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2840 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
2843 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_IT()
2846 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2856 I2C_Enable_IRQ(hi2c, (I2C_XFER_TX_IT | I2C_XFER_RX_IT)); in HAL_I2C_Mem_Read_IT()
2878 HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA… in HAL_I2C_Mem_Write_DMA() argument
2886 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_DMA()
2890 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_DMA()
2894 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_DMA()
2900 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
2902 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_DMA()
2903 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_DMA()
2904 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_DMA()
2907 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_DMA()
2908 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_DMA()
2909 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_DMA()
2910 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Write_DMA()
2911 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_DMA()
2913 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write_DMA()
2915 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write_DMA()
2919 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write_DMA()
2926 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
2929 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_DMA()
2935 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
2938 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
2941 if (hi2c->hdmatx != NULL) in HAL_I2C_Mem_Write_DMA()
2944 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Mem_Write_DMA()
2947 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Write_DMA()
2950 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Write_DMA()
2951 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Mem_Write_DMA()
2954 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Mem_Write_DMA()
2955 hi2c->XferSize); in HAL_I2C_Mem_Write_DMA()
2960 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
2961 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
2964 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Write_DMA()
2967 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
2975 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_DMA()
2978 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
2987 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_DMA()
2992 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
2993 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
2996 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Write_DMA()
2999 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3024 HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Read_DMA() argument
3032 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_DMA()
3036 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_DMA()
3040 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_DMA()
3046 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3048 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_DMA()
3049 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_DMA()
3050 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_DMA()
3053 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_DMA()
3054 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_DMA()
3055 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_DMA()
3056 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Read_DMA()
3057 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_DMA()
3059 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read_DMA()
3061 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read_DMA()
3065 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read_DMA()
3072 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3075 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_DMA()
3081 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3084 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3087 if (hi2c->hdmarx != NULL) in HAL_I2C_Mem_Read_DMA()
3090 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Mem_Read_DMA()
3093 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Read_DMA()
3096 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3097 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3100 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Mem_Read_DMA()
3101 hi2c->XferSize); in HAL_I2C_Mem_Read_DMA()
3106 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3107 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3110 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Read_DMA()
3113 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3121 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_DMA()
3124 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3133 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_DMA()
3138 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3139 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3142 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Read_DMA()
3145 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3169 HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria… in HAL_I2C_IsDeviceReady() argument
3179 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_IsDeviceReady()
3181 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_IsDeviceReady()
3187 __HAL_LOCK(hi2c); in HAL_I2C_IsDeviceReady()
3189 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_IsDeviceReady()
3190 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3195 hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); in HAL_I2C_IsDeviceReady()
3201 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3202 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3211 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3214 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3217 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3223 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3224 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3228 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) in HAL_I2C_IsDeviceReady()
3231 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3237 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3240 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3243 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3250 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3256 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3259 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3266 hi2c->Instance->CR2 |= I2C_CR2_STOP; in HAL_I2C_IsDeviceReady()
3269 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3275 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3283 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3286 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3289 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3311 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Transmit_IT() argument
3320 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_IT()
3323 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3325 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_IT()
3326 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_IT()
3327 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_IT()
3330 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_IT()
3331 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_IT()
3332 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3333 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_IT()
3336 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3338 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_IT()
3343 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_IT()
3344 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3350 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_IT()
3358 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3361 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3363 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3368 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_IT()
3371 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3380 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_IT()
3402 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin… in HAL_I2C_Master_Seq_Transmit_DMA() argument
3412 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_DMA()
3415 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3417 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_DMA()
3418 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_DMA()
3419 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3422 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_DMA()
3423 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_DMA()
3424 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3425 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3428 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3430 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_DMA()
3435 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_DMA()
3436 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3442 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_DMA()
3450 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3453 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3455 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3459 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Transmit_DMA()
3461 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3464 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Seq_Transmit_DMA()
3467 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Transmit_DMA()
3470 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3471 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3474 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Seq_Transmit_DMA()
3475 hi2c->XferSize); in HAL_I2C_Master_Seq_Transmit_DMA()
3480 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3481 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3484 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Transmit_DMA()
3487 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3495 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3498 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3501 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3507 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3510 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Seq_Transmit_DMA()
3515 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3516 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3519 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3522 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3530 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_DMA()
3534 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Transmit_DMA()
3538 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3547 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3570 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8… in HAL_I2C_Master_Seq_Receive_IT() argument
3579 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_IT()
3582 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3584 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_IT()
3585 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_IT()
3586 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_IT()
3589 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_IT()
3590 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_IT()
3591 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3592 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_IT()
3595 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3597 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_IT()
3602 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_IT()
3603 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3609 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_IT()
3617 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3620 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3622 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3627 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_IT()
3630 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3635 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_IT()
3657 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Receive_DMA() argument
3667 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_DMA()
3670 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3672 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_DMA()
3673 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_DMA()
3674 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3677 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_DMA()
3678 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_DMA()
3679 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3680 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3683 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3685 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_DMA()
3690 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_DMA()
3691 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3697 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_DMA()
3705 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3708 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3710 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3714 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Receive_DMA()
3716 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
3719 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Seq_Receive_DMA()
3722 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Receive_DMA()
3725 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3726 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3729 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Seq_Receive_DMA()
3730 hi2c->XferSize); in HAL_I2C_Master_Seq_Receive_DMA()
3735 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
3736 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3739 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Receive_DMA()
3742 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3750 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_DMA()
3753 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Receive_DMA()
3756 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3762 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Receive_DMA()
3765 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Seq_Receive_DMA()
3770 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
3771 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3774 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3777 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3785 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_DMA()
3789 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Receive_DMA()
3793 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3802 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Receive_DMA()
3823 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
3832 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3836 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_IT()
3841 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
3844 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
3848 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3851 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
3854 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3856 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_IT()
3858 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_IT()
3862 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_IT()
3865 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_IT()
3868 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_IT()
3874 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_IT()
3875 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_IT()
3876 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_IT()
3879 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_IT()
3882 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_IT()
3883 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_IT()
3884 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_IT()
3885 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_IT()
3886 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Transmit_IT()
3888 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
3889 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_IT()
3893 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
3897 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
3903 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
3923 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t … in HAL_I2C_Slave_Seq_Transmit_DMA() argument
3933 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
3937 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
3942 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
3945 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
3949 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
3952 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
3954 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
3957 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
3959 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
3963 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
3966 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
3969 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_DMA()
3974 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
3976 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
3978 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
3981 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
3985 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
3988 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
3991 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4001 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4002 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4003 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4006 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_DMA()
4009 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_DMA()
4010 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_DMA()
4011 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_DMA()
4012 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_DMA()
4013 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4015 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4018 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Seq_Transmit_DMA()
4021 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Transmit_DMA()
4024 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4025 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4028 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Seq_Transmit_DMA()
4029 hi2c->XferSize); in HAL_I2C_Slave_Seq_Transmit_DMA()
4034 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4035 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4038 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4041 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4049 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Transmit_DMA()
4052 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Transmit_DMA()
4057 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4058 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4061 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4064 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4069 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4070 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_DMA()
4074 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4078 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4081 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4087 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4107 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
4116 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4120 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_IT()
4125 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4128 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4132 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4135 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4137 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_IT()
4139 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_IT()
4142 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_IT()
4146 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_IT()
4149 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_IT()
4152 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_IT()
4158 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_IT()
4159 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_IT()
4160 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_IT()
4163 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_IT()
4166 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_IT()
4167 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_IT()
4168 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_IT()
4169 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_IT()
4170 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Receive_IT()
4172 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4173 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_IT()
4177 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4181 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4187 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4207 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
4217 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4221 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4226 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4229 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4233 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4236 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4238 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4241 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4243 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4247 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4250 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4253 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_DMA()
4258 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4260 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4262 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4265 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4269 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4272 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4275 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4285 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4286 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_DMA()
4287 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4290 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_DMA()
4293 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_DMA()
4294 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_DMA()
4295 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_DMA()
4296 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_DMA()
4297 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4299 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4302 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Seq_Receive_DMA()
4305 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Receive_DMA()
4308 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4309 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4312 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, in HAL_I2C_Slave_Seq_Receive_DMA()
4313 (uint32_t)pData, hi2c->XferSize); in HAL_I2C_Slave_Seq_Receive_DMA()
4318 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4319 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4322 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4325 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4333 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Receive_DMA()
4336 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Receive_DMA()
4341 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4342 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4345 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4348 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4353 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4354 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_DMA()
4358 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4362 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4365 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4371 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4387 HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_EnableListen_IT() argument
4389 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_EnableListen_IT()
4391 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_EnableListen_IT()
4392 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_EnableListen_IT()
4395 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_EnableListen_IT()
4411 HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_DisableListen_IT() argument
4417 if (hi2c->State == HAL_I2C_STATE_LISTEN) in HAL_I2C_DisableListen_IT()
4419 tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; in HAL_I2C_DisableListen_IT()
4420 hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); in HAL_I2C_DisableListen_IT()
4421 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_DisableListen_IT()
4422 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DisableListen_IT()
4423 hi2c->XferISR = NULL; in HAL_I2C_DisableListen_IT()
4426 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_DisableListen_IT()
4444 HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) in HAL_I2C_Master_Abort_IT() argument
4446 if (hi2c->Mode == HAL_I2C_MODE_MASTER) in HAL_I2C_Master_Abort_IT()
4449 __HAL_LOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4452 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in HAL_I2C_Master_Abort_IT()
4454 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Abort_IT()
4455 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in HAL_I2C_Master_Abort_IT()
4457 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in HAL_I2C_Master_Abort_IT()
4459 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Abort_IT()
4460 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in HAL_I2C_Master_Abort_IT()
4468 hi2c->State = HAL_I2C_STATE_ABORT; in HAL_I2C_Master_Abort_IT()
4472 I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); in HAL_I2C_Master_Abort_IT()
4475 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4480 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in HAL_I2C_Master_Abort_IT()
4506 void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_I2C_EV_IRQHandler() argument
4509 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_EV_IRQHandler()
4510 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_EV_IRQHandler()
4513 if (hi2c->XferISR != NULL) in HAL_I2C_EV_IRQHandler()
4515 hi2c->XferISR(hi2c, itflags, itsources); in HAL_I2C_EV_IRQHandler()
4525 void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) in HAL_I2C_ER_IRQHandler() argument
4527 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_ER_IRQHandler()
4528 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_ER_IRQHandler()
4535 hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; in HAL_I2C_ER_IRQHandler()
4538 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in HAL_I2C_ER_IRQHandler()
4545 hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; in HAL_I2C_ER_IRQHandler()
4548 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in HAL_I2C_ER_IRQHandler()
4555 hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; in HAL_I2C_ER_IRQHandler()
4558 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in HAL_I2C_ER_IRQHandler()
4562 tmperror = hi2c->ErrorCode; in HAL_I2C_ER_IRQHandler()
4567 I2C_ITError(hi2c, tmperror); in HAL_I2C_ER_IRQHandler()
4577 __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterTxCpltCallback() argument
4580 UNUSED(hi2c); in HAL_I2C_MasterTxCpltCallback()
4593 __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterRxCpltCallback() argument
4596 UNUSED(hi2c); in HAL_I2C_MasterRxCpltCallback()
4608 __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveTxCpltCallback() argument
4611 UNUSED(hi2c); in HAL_I2C_SlaveTxCpltCallback()
4624 __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveRxCpltCallback() argument
4627 UNUSED(hi2c); in HAL_I2C_SlaveRxCpltCallback()
4642 __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM… in HAL_I2C_AddrCallback() argument
4645 UNUSED(hi2c); in HAL_I2C_AddrCallback()
4660 __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ListenCpltCallback() argument
4663 UNUSED(hi2c); in HAL_I2C_ListenCpltCallback()
4676 __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemTxCpltCallback() argument
4679 UNUSED(hi2c); in HAL_I2C_MemTxCpltCallback()
4692 __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemRxCpltCallback() argument
4695 UNUSED(hi2c); in HAL_I2C_MemRxCpltCallback()
4708 __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ErrorCallback() argument
4711 UNUSED(hi2c); in HAL_I2C_ErrorCallback()
4724 __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_AbortCpltCallback() argument
4727 UNUSED(hi2c); in HAL_I2C_AbortCpltCallback()
4759 HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetState() argument
4762 return hi2c->State; in HAL_I2C_GetState()
4771 HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetMode() argument
4773 return hi2c->Mode; in HAL_I2C_GetMode()
4782 uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetError() argument
4784 return hi2c->ErrorCode; in HAL_I2C_GetError()
4807 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_IT() argument
4814 __HAL_LOCK(hi2c); in I2C_Master_ISR_IT()
4820 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_IT()
4825 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_IT()
4828 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_IT()
4837 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Master_ISR_IT()
4840 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
4842 hi2c->XferSize--; in I2C_Master_ISR_IT()
4843 hi2c->XferCount--; in I2C_Master_ISR_IT()
4849 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Master_ISR_IT()
4852 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
4854 hi2c->XferSize--; in I2C_Master_ISR_IT()
4855 hi2c->XferCount--; in I2C_Master_ISR_IT()
4860 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Master_ISR_IT()
4862 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_IT()
4864 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_IT()
4866 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_IT()
4867 … I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
4871 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_IT()
4872 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
4874 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
4875 hi2c->XferOptions, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
4879 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
4887 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
4890 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
4896 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
4903 if (hi2c->XferCount == 0U) in I2C_Master_ISR_IT()
4905 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
4908 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
4911 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_IT()
4916 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
4924 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
4936 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Master_ISR_IT()
4940 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_IT()
4953 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_IT() argument
4960 __HAL_LOCK(hi2c); in I2C_Mem_ISR_IT()
4966 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_IT()
4971 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_IT()
4974 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_IT()
4983 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Mem_ISR_IT()
4986 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
4988 hi2c->XferSize--; in I2C_Mem_ISR_IT()
4989 hi2c->XferCount--; in I2C_Mem_ISR_IT()
4994 if (hi2c->Memaddress == 0xFFFFFFFFU) in I2C_Mem_ISR_IT()
4997 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Mem_ISR_IT()
5000 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5002 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5003 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5008 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_IT()
5011 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_IT()
5017 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Mem_ISR_IT()
5019 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5021 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5022 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5027 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5028 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5036 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_IT()
5042 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_IT()
5047 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5049 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5052 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5057 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5060 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5073 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Mem_ISR_IT()
5077 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_IT()
5090 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_IT() argument
5093 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_IT()
5097 __HAL_LOCK(hi2c); in I2C_Slave_ISR_IT()
5104 I2C_ITSlaveCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5114 if (hi2c->XferCount == 0U) in I2C_Slave_ISR_IT()
5116 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_IT()
5121 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5123 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_IT()
5126 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5129 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_IT()
5133 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5138 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5145 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5148 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_IT()
5153 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_IT()
5160 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5163 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Slave_ISR_IT()
5166 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5168 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5169 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5172 if ((hi2c->XferCount == 0U) && \ in I2C_Slave_ISR_IT()
5176 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5182 I2C_ITAddrCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5191 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5194 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Slave_ISR_IT()
5197 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5199 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5200 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5208 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5218 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_IT()
5231 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_DMA() argument
5238 __HAL_LOCK(hi2c); in I2C_Master_ISR_DMA()
5244 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_DMA()
5247 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_DMA()
5252 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Master_ISR_DMA()
5255 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_DMA()
5261 __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); in I2C_Master_ISR_DMA()
5263 if (hi2c->XferCount != 0U) in I2C_Master_ISR_DMA()
5266 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_DMA()
5269 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_DMA()
5271 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_DMA()
5276 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_DMA()
5277 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5279 xfermode = hi2c->XferOptions; in I2C_Master_ISR_DMA()
5288 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); in I2C_Master_ISR_DMA()
5291 hi2c->XferCount -= hi2c->XferSize; in I2C_Master_ISR_DMA()
5294 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Master_ISR_DMA()
5296 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Master_ISR_DMA()
5300 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Master_ISR_DMA()
5306 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5309 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5315 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5322 if (hi2c->XferCount == 0U) in I2C_Master_ISR_DMA()
5324 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5327 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5330 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_DMA()
5335 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5343 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5350 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Master_ISR_DMA()
5358 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_DMA()
5371 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_DMA() argument
5377 __HAL_LOCK(hi2c); in I2C_Mem_ISR_DMA()
5383 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_DMA()
5386 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_DMA()
5391 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Mem_ISR_DMA()
5394 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_DMA()
5400 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_DMA()
5403 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_DMA()
5409 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5411 if (hi2c->XferCount != 0U) in I2C_Mem_ISR_DMA()
5414 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5416 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5417 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5422 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5423 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5428 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5431 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5433 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5437 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5444 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_DMA()
5450 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5455 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5457 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5460 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5465 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5468 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5473 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5476 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5478 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5482 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5489 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Mem_ISR_DMA()
5497 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_DMA()
5510 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_DMA() argument
5513 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_DMA()
5518 __HAL_LOCK(hi2c); in I2C_Slave_ISR_DMA()
5525 I2C_ITSlaveCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5539 if (hi2c->hdmarx != NULL) in I2C_Slave_ISR_DMA()
5543 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) in I2C_Slave_ISR_DMA()
5551 if (hi2c->hdmatx != NULL) in I2C_Slave_ISR_DMA()
5555 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) in I2C_Slave_ISR_DMA()
5564 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_DMA()
5569 I2C_ITListenCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5571 … else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_DMA()
5574 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5577 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_DMA()
5581 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_DMA()
5586 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5593 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5596 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_DMA()
5599 tmpstate = hi2c->State; in I2C_Slave_ISR_DMA()
5605 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_Slave_ISR_DMA()
5609 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_Slave_ISR_DMA()
5617 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_DMA()
5624 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5630 I2C_ITAddrCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5638 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_DMA()
5655 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryWrite() argument
5659 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in I2C_RequestMemoryWrite()
5662 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5671 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
5677 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryWrite()
5680 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5686 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
5690 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5710 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryRead() argument
5714 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in I2C_RequestMemoryRead()
5717 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5726 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
5732 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryRead()
5735 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5741 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
5745 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5759 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITAddrCplt() argument
5770 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_ITAddrCplt()
5772 transferdirection = I2C_GET_DIR(hi2c); in I2C_ITAddrCplt()
5773 slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); in I2C_ITAddrCplt()
5774 ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); in I2C_ITAddrCplt()
5775 ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); in I2C_ITAddrCplt()
5778 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in I2C_ITAddrCplt()
5783 hi2c->AddrEventCount++; in I2C_ITAddrCplt()
5784 if (hi2c->AddrEventCount == 2U) in I2C_ITAddrCplt()
5787 hi2c->AddrEventCount = 0U; in I2C_ITAddrCplt()
5790 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
5793 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5797 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5799 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5808 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
5811 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5815 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5817 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5825 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
5828 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5832 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5834 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5842 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
5845 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5854 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITMasterSeqCplt() argument
5857 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterSeqCplt()
5861 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterSeqCplt()
5863 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
5864 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterSeqCplt()
5865 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
5868 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterSeqCplt()
5871 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
5875 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
5877 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
5883 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
5884 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterSeqCplt()
5885 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
5888 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterSeqCplt()
5891 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
5895 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
5897 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
5907 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITSlaveSeqCplt() argument
5909 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveSeqCplt()
5912 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveSeqCplt()
5918 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveSeqCplt()
5923 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveSeqCplt()
5930 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in I2C_ITSlaveSeqCplt()
5933 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
5934 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveSeqCplt()
5937 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITSlaveSeqCplt()
5940 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
5944 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
5946 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
5950 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in I2C_ITSlaveSeqCplt()
5953 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
5954 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveSeqCplt()
5957 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITSlaveSeqCplt()
5960 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
5964 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
5966 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
5981 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITMasterCplt() argument
5988 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITMasterCplt()
5991 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
5993 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterCplt()
5994 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterCplt()
5996 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
5998 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterCplt()
5999 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterCplt()
6007 I2C_RESET_CR2(hi2c); in I2C_ITMasterCplt()
6010 hi2c->XferISR = NULL; in I2C_ITMasterCplt()
6011 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITMasterCplt()
6016 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITMasterCplt()
6019 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITMasterCplt()
6023 if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) in I2C_ITMasterCplt()
6026 tmpreg = (uint8_t)hi2c->Instance->RXDR; in I2C_ITMasterCplt()
6031 I2C_Flush_TXDR(hi2c); in I2C_ITMasterCplt()
6034 tmperror = hi2c->ErrorCode; in I2C_ITMasterCplt()
6037 if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) in I2C_ITMasterCplt()
6040 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITMasterCplt()
6043 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6045 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6046 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6048 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6050 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6053 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6057 hi2c->MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6059 HAL_I2C_MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6064 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6067 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6071 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6073 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6078 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6080 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6081 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6083 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6085 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6088 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6092 hi2c->MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6094 HAL_I2C_MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6099 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6102 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6106 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6108 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6124 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITSlaveCplt() argument
6126 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveCplt()
6128 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITSlaveCplt()
6131 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITSlaveCplt()
6136 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in I2C_ITSlaveCplt()
6137 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveCplt()
6141 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6142 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveCplt()
6150 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_ITSlaveCplt()
6153 I2C_RESET_CR2(hi2c); in I2C_ITSlaveCplt()
6156 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6162 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveCplt()
6164 if (hi2c->hdmatx != NULL) in I2C_ITSlaveCplt()
6166 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); in I2C_ITSlaveCplt()
6172 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveCplt()
6174 if (hi2c->hdmarx != NULL) in I2C_ITSlaveCplt()
6176 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); in I2C_ITSlaveCplt()
6191 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITSlaveCplt()
6194 hi2c->pBuffPtr++; in I2C_ITSlaveCplt()
6196 if ((hi2c->XferSize > 0U)) in I2C_ITSlaveCplt()
6198 hi2c->XferSize--; in I2C_ITSlaveCplt()
6199 hi2c->XferCount--; in I2C_ITSlaveCplt()
6204 if (hi2c->XferCount != 0U) in I2C_ITSlaveCplt()
6207 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6210 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveCplt()
6211 hi2c->XferISR = NULL; in I2C_ITSlaveCplt()
6213 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) in I2C_ITSlaveCplt()
6216 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6219 if (hi2c->State == HAL_I2C_STATE_LISTEN) in I2C_ITSlaveCplt()
6222 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6225 else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_ITSlaveCplt()
6228 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6230 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITSlaveCplt()
6231 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6232 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6235 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6239 hi2c->ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6241 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6245 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITSlaveCplt()
6247 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6248 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6251 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6255 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6257 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6262 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6263 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6266 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6270 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6272 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6283 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITListenCplt() argument
6286 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITListenCplt()
6287 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITListenCplt()
6288 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITListenCplt()
6289 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITListenCplt()
6290 hi2c->XferISR = NULL; in I2C_ITListenCplt()
6296 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITListenCplt()
6299 hi2c->pBuffPtr++; in I2C_ITListenCplt()
6301 if ((hi2c->XferSize > 0U)) in I2C_ITListenCplt()
6303 hi2c->XferSize--; in I2C_ITListenCplt()
6304 hi2c->XferCount--; in I2C_ITListenCplt()
6307 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITListenCplt()
6312 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITListenCplt()
6315 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITListenCplt()
6318 __HAL_UNLOCK(hi2c); in I2C_ITListenCplt()
6322 hi2c->ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6324 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6334 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) in I2C_ITError() argument
6336 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITError()
6341 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITError()
6342 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITError()
6343 hi2c->XferCount = 0U; in I2C_ITError()
6346 hi2c->ErrorCode |= ErrorCode; in I2C_ITError()
6354 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6357 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITError()
6358 hi2c->XferISR = I2C_Slave_ISR_IT; in I2C_ITError()
6363 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6366 I2C_Flush_TXDR(hi2c); in I2C_ITError()
6370 if (hi2c->State != HAL_I2C_STATE_ABORT) in I2C_ITError()
6373 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITError()
6376 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) in I2C_ITError()
6378 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_ITError()
6380 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITError()
6381 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITError()
6385 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITError()
6389 hi2c->XferISR = NULL; in I2C_ITError()
6393 tmppreviousstate = hi2c->PreviousState; in I2C_ITError()
6395 if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ in I2C_ITError()
6398 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in I2C_ITError()
6400 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITError()
6403 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) in I2C_ITError()
6407 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6410 __HAL_UNLOCK(hi2c); in I2C_ITError()
6413 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in I2C_ITError()
6416 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in I2C_ITError()
6421 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6425 else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ in I2C_ITError()
6428 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in I2C_ITError()
6430 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITError()
6433 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) in I2C_ITError()
6437 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6440 __HAL_UNLOCK(hi2c); in I2C_ITError()
6443 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in I2C_ITError()
6446 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in I2C_ITError()
6451 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6456 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6465 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) in I2C_TreatErrorCallback() argument
6467 if (hi2c->State == HAL_I2C_STATE_ABORT) in I2C_TreatErrorCallback()
6469 hi2c->State = HAL_I2C_STATE_READY; in I2C_TreatErrorCallback()
6470 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6473 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6477 hi2c->AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6479 HAL_I2C_AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6484 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6487 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6491 hi2c->ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6493 HAL_I2C_ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6503 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) in I2C_Flush_TXDR() argument
6507 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) in I2C_Flush_TXDR()
6509 hi2c->Instance->TXDR = 0x00U; in I2C_Flush_TXDR()
6513 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) in I2C_Flush_TXDR()
6515 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); in I2C_Flush_TXDR()
6527 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterTransmitCplt() local
6530 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMAMasterTransmitCplt()
6533 if (hi2c->XferCount == 0U) in I2C_DMAMasterTransmitCplt()
6536 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterTransmitCplt()
6542 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterTransmitCplt()
6545 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterTransmitCplt()
6547 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterTransmitCplt()
6551 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterTransmitCplt()
6555 if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in I2C_DMAMasterTransmitCplt()
6556 hi2c->XferSize) != HAL_OK) in I2C_DMAMasterTransmitCplt()
6559 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterTransmitCplt()
6564 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterTransmitCplt()
6578 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveTransmitCplt() local
6579 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveTransmitCplt()
6584 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMASlaveTransmitCplt()
6588 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveTransmitCplt()
6607 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterReceiveCplt() local
6610 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMAMasterReceiveCplt()
6613 if (hi2c->XferCount == 0U) in I2C_DMAMasterReceiveCplt()
6616 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterReceiveCplt()
6622 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterReceiveCplt()
6625 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterReceiveCplt()
6627 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterReceiveCplt()
6631 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterReceiveCplt()
6635 if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, in I2C_DMAMasterReceiveCplt()
6636 hi2c->XferSize) != HAL_OK) in I2C_DMAMasterReceiveCplt()
6639 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterReceiveCplt()
6644 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterReceiveCplt()
6658 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveReceiveCplt() local
6659 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveReceiveCplt()
6661 if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ in I2C_DMASlaveReceiveCplt()
6665 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMASlaveReceiveCplt()
6668 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveReceiveCplt()
6687 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAError() local
6690 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_DMAError()
6693 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAError()
6706 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAAbort() local
6709 if (hi2c->hdmatx != NULL) in I2C_DMAAbort()
6711 hi2c->hdmatx->XferAbortCallback = NULL; in I2C_DMAAbort()
6713 if (hi2c->hdmarx != NULL) in I2C_DMAAbort()
6715 hi2c->hdmarx->XferAbortCallback = NULL; in I2C_DMAAbort()
6718 I2C_TreatErrorCallback(hi2c); in I2C_DMAAbort()
6733 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta… in I2C_WaitOnFlagUntilTimeout() argument
6736 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) in I2C_WaitOnFlagUntilTimeout()
6743 if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) in I2C_WaitOnFlagUntilTimeout()
6745 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnFlagUntilTimeout()
6746 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnFlagUntilTimeout()
6747 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnFlagUntilTimeout()
6750 __HAL_UNLOCK(hi2c); in I2C_WaitOnFlagUntilTimeout()
6767 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnTXISFlagUntilTimeout() argument
6770 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) in I2C_WaitOnTXISFlagUntilTimeout()
6773 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnTXISFlagUntilTimeout()
6783 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) in I2C_WaitOnTXISFlagUntilTimeout()
6785 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnTXISFlagUntilTimeout()
6786 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnTXISFlagUntilTimeout()
6787 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnTXISFlagUntilTimeout()
6790 __HAL_UNLOCK(hi2c); in I2C_WaitOnTXISFlagUntilTimeout()
6808 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnSTOPFlagUntilTimeout() argument
6811 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_WaitOnSTOPFlagUntilTimeout()
6814 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnSTOPFlagUntilTimeout()
6822 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) in I2C_WaitOnSTOPFlagUntilTimeout()
6824 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnSTOPFlagUntilTimeout()
6825 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnSTOPFlagUntilTimeout()
6826 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnSTOPFlagUntilTimeout()
6829 __HAL_UNLOCK(hi2c); in I2C_WaitOnSTOPFlagUntilTimeout()
6846 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnRXNEFlagUntilTimeout() argument
6849 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) in I2C_WaitOnRXNEFlagUntilTimeout()
6852 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnRXNEFlagUntilTimeout()
6858 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) in I2C_WaitOnRXNEFlagUntilTimeout()
6862 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) in I2C_WaitOnRXNEFlagUntilTimeout()
6870 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_WaitOnRXNEFlagUntilTimeout()
6872 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_WaitOnRXNEFlagUntilTimeout()
6873 hi2c->ErrorCode = HAL_I2C_ERROR_AF; in I2C_WaitOnRXNEFlagUntilTimeout()
6877 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
6881 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_WaitOnRXNEFlagUntilTimeout()
6884 I2C_RESET_CR2(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
6886 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
6887 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
6890 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
6899 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) in I2C_WaitOnRXNEFlagUntilTimeout()
6901 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnRXNEFlagUntilTimeout()
6902 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
6905 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
6922 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti… in I2C_IsErrorOccurred() argument
6925 uint32_t itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
6934 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_IsErrorOccurred()
6938 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) in I2C_IsErrorOccurred()
6945 tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); in I2C_IsErrorOccurred()
6946 tmp2 = hi2c->Mode; in I2C_IsErrorOccurred()
6949 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ in I2C_IsErrorOccurred()
6954 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_IsErrorOccurred()
6960 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_IsErrorOccurred()
6980 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_IsErrorOccurred()
6989 itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
6998 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in I2C_IsErrorOccurred()
7009 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in I2C_IsErrorOccurred()
7020 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in I2C_IsErrorOccurred()
7028 I2C_Flush_TXDR(hi2c); in I2C_IsErrorOccurred()
7031 I2C_RESET_CR2(hi2c); in I2C_IsErrorOccurred()
7033 hi2c->ErrorCode |= error_code; in I2C_IsErrorOccurred()
7034 hi2c->State = HAL_I2C_STATE_READY; in I2C_IsErrorOccurred()
7035 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_IsErrorOccurred()
7038 __HAL_UNLOCK(hi2c); in I2C_IsErrorOccurred()
7063 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t… in I2C_TransferConfig() argument
7067 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in I2C_TransferConfig()
7077 MODIFY_REG(hi2c->Instance->CR2, \ in I2C_TransferConfig()
7090 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Enable_IRQ() argument
7094 if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ in I2C_Enable_IRQ()
7095 (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ in I2C_Enable_IRQ()
7096 (hi2c->XferISR != I2C_Mem_ISR_DMA)) in I2C_Enable_IRQ()
7161 if ((hi2c->XferISR != I2C_Mem_ISR_DMA) && (InterruptRequest == I2C_XFER_RELOAD_IT)) in I2C_Enable_IRQ()
7171 __HAL_I2C_ENABLE_IT(hi2c, tmpisr); in I2C_Enable_IRQ()
7181 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Disable_IRQ() argument
7190 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7202 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7236 __HAL_I2C_DISABLE_IT(hi2c, tmpisr); in I2C_Disable_IRQ()
7244 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) in I2C_ConvertOtherXferOptions() argument
7249 if (hi2c->XferOptions == I2C_OTHER_FRAME) in I2C_ConvertOtherXferOptions()
7251 hi2c->XferOptions = I2C_FIRST_FRAME; in I2C_ConvertOtherXferOptions()
7257 else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) in I2C_ConvertOtherXferOptions()
7259 hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; in I2C_ConvertOtherXferOptions()