Lines Matching refs:hi2c

433 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
434 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c);
435 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c);
436 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
437 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
438 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
439 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);
442 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
445 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
450 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
452 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
454 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
457 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
459 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
461 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
466 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta…
468 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
470 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
472 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
474 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
478 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
479 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
482 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c);
485 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c);
488 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t…
492 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c);
541 HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) in HAL_I2C_Init() argument
544 if (hi2c == NULL) in HAL_I2C_Init()
550 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_Init()
551 assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); in HAL_I2C_Init()
552 assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); in HAL_I2C_Init()
553 assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); in HAL_I2C_Init()
554 assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); in HAL_I2C_Init()
555 assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); in HAL_I2C_Init()
556 assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); in HAL_I2C_Init()
557 assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); in HAL_I2C_Init()
559 if (hi2c->State == HAL_I2C_STATE_RESET) in HAL_I2C_Init()
562 hi2c->Lock = HAL_UNLOCKED; in HAL_I2C_Init()
566hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_Init()
567hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_Init()
568hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_Init()
569hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_Init()
570hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_Init()
571hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_Init()
572hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_Init()
573hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_Init()
574hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_Init()
575hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_Init()
577 if (hi2c->MspInitCallback == NULL) in HAL_I2C_Init()
579 hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_Init()
583 hi2c->MspInitCallback(hi2c); in HAL_I2C_Init()
586 HAL_I2C_MspInit(hi2c); in HAL_I2C_Init()
590 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_Init()
593 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_Init()
597 hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; in HAL_I2C_Init()
601 hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; in HAL_I2C_Init()
604 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) in HAL_I2C_Init()
606 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
610 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
615 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Init()
617 SET_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); in HAL_I2C_Init()
622 CLEAR_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); in HAL_I2C_Init()
625 hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); in HAL_I2C_Init()
629 hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; in HAL_I2C_Init()
632 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ in HAL_I2C_Init()
633 (hi2c->Init.OwnAddress2Masks << 8)); in HAL_I2C_Init()
637 hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); in HAL_I2C_Init()
640 __HAL_I2C_ENABLE(hi2c); in HAL_I2C_Init()
642 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Init()
643 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Init()
644 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_Init()
645 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Init()
656 HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_DeInit() argument
659 if (hi2c == NULL) in HAL_I2C_DeInit()
665 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_DeInit()
667 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_DeInit()
670 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_DeInit()
673 if (hi2c->MspDeInitCallback == NULL) in HAL_I2C_DeInit()
675 hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_DeInit()
679 hi2c->MspDeInitCallback(hi2c); in HAL_I2C_DeInit()
682 HAL_I2C_MspDeInit(hi2c); in HAL_I2C_DeInit()
685 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_DeInit()
686 hi2c->State = HAL_I2C_STATE_RESET; in HAL_I2C_DeInit()
687 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_DeInit()
688 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DeInit()
691 __HAL_UNLOCK(hi2c); in HAL_I2C_DeInit()
702 __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspInit() argument
705 UNUSED(hi2c); in HAL_I2C_MspInit()
718 __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspDeInit() argument
721 UNUSED(hi2c); in HAL_I2C_MspDeInit()
752 HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb… in HAL_I2C_RegisterCallback() argument
760 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
765 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterCallback()
770 hi2c->MasterTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
774 hi2c->MasterRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
778 hi2c->SlaveTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
782 hi2c->SlaveRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
786 hi2c->ListenCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
790 hi2c->MemTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
794 hi2c->MemRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
798 hi2c->ErrorCallback = pCallback; in HAL_I2C_RegisterCallback()
802 hi2c->AbortCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
806 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
810 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
815 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
822 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_RegisterCallback()
827 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
831 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
836 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
846 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
878 HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal… in HAL_I2C_UnRegisterCallback() argument
882 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterCallback()
887hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
891hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
895hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
899hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
903hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_UnRegisterCallback()
907hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
911hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
915hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_UnRegisterCallback()
919hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_UnRegisterCallback()
923hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
927hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
932 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
939 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_UnRegisterCallback()
944hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
948hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
953 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
963 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
980 HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pC… in HAL_I2C_RegisterAddrCallback() argument
987 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
992 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterAddrCallback()
994 hi2c->AddrCallback = pCallback; in HAL_I2C_RegisterAddrCallback()
999 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
1015 HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_UnRegisterAddrCallback() argument
1019 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterAddrCallback()
1021 hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_UnRegisterAddrCallback()
1026 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterAddrCallback()
1125 HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD… in HAL_I2C_Master_Transmit() argument
1130 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit()
1133 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit()
1138 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1143 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit()
1144 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit()
1145 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit()
1148 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit()
1149 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit()
1150 hi2c->XferISR = NULL; in HAL_I2C_Master_Transmit()
1154 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1156 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1157 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Transmit()
1162 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1163 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit()
1167 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Transmit()
1170 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1175 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit()
1178 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit()
1180 hi2c->XferCount--; in HAL_I2C_Master_Transmit()
1181 hi2c->XferSize--; in HAL_I2C_Master_Transmit()
1183 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Transmit()
1186 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1191 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1193 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1194 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Transmit()
1199 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1200 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit()
1208 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1214 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Transmit()
1217 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Transmit()
1219 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit()
1220 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit()
1223 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit()
1244 HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa… in HAL_I2C_Master_Receive() argument
1249 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive()
1252 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive()
1257 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1262 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive()
1263 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive()
1264 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive()
1267 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive()
1268 hi2c->XferCount = Size; in HAL_I2C_Master_Receive()
1269 hi2c->XferISR = NULL; in HAL_I2C_Master_Receive()
1273 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1275 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1276 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1281 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1282 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1286 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Receive()
1289 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1295 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Master_Receive()
1298 hi2c->pBuffPtr++; in HAL_I2C_Master_Receive()
1300 hi2c->XferSize--; in HAL_I2C_Master_Receive()
1301 hi2c->XferCount--; in HAL_I2C_Master_Receive()
1303 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Receive()
1306 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1311 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1313 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1314 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1319 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1320 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1328 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1334 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Receive()
1337 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Receive()
1339 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive()
1340 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive()
1343 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive()
1362 HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Transmit() argument
1369 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit()
1373 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit()
1377 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit()
1382 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit()
1383 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit()
1384 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit()
1387 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit()
1388 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit()
1389 hi2c->XferISR = NULL; in HAL_I2C_Slave_Transmit()
1392 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1395 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit()
1399 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1402 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1404 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1408 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1411 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1414 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1420 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1423 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Slave_Transmit()
1426 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1429 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1432 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1438 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1442 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1445 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1448 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1453 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Transmit()
1456 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1459 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1464 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1467 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1469 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1473 error = I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart); in HAL_I2C_Slave_Transmit()
1481 tmpXferCount = hi2c->XferCount; in HAL_I2C_Slave_Transmit()
1482 if ((hi2c->ErrorCode == HAL_I2C_ERROR_AF) && (tmpXferCount == 0U)) in HAL_I2C_Slave_Transmit()
1485 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit()
1490 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1497 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1500 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_Slave_Transmit()
1503 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1506 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1512 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Transmit()
1516 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1519 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1524 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1526 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Transmit()
1527 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit()
1530 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit()
1549 HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Receive() argument
1554 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive()
1558 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive()
1562 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive()
1567 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive()
1568 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive()
1569 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive()
1572 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive()
1573 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive()
1574 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive()
1575 hi2c->XferISR = NULL; in HAL_I2C_Slave_Receive()
1578 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1581 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1584 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1589 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Receive()
1592 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1595 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1599 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Receive()
1602 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1605 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1608 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) in HAL_I2C_Slave_Receive()
1611 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1614 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1616 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1617 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1624 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1627 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1629 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1630 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1634 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1637 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1642 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Receive()
1645 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1648 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1653 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1655 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Receive()
1656 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive()
1659 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive()
1679 HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Transmit_IT() argument
1684 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_IT()
1686 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_IT()
1692 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1694 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_IT()
1695 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_IT()
1696 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_IT()
1699 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_IT()
1700 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_IT()
1701 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_IT()
1702 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_IT()
1704 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_IT()
1706 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_IT()
1711 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_IT()
1717 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); in HAL_I2C_Master_Transmit_IT()
1720 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1730 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_IT()
1750 HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *… in HAL_I2C_Master_Receive_IT() argument
1755 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_IT()
1757 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_IT()
1763 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1765 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_IT()
1766 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_IT()
1767 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_IT()
1770 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_IT()
1771 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_IT()
1772 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_IT()
1773 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_IT()
1775 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_IT()
1777 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_IT()
1782 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_IT()
1788 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_IT()
1791 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1801 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_IT()
1819 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_IT() argument
1821 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_IT()
1824 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1826 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_IT()
1827 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_IT()
1828 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_IT()
1831 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_IT()
1834 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_IT()
1835 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_IT()
1836 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_IT()
1837 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_IT()
1838 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Transmit_IT()
1841 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_IT()
1845 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_IT()
1848 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_IT()
1850 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_IT()
1851 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_IT()
1855 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1865 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_IT()
1883 HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_IT() argument
1885 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_IT()
1888 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1890 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_IT()
1891 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_IT()
1892 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_IT()
1895 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_IT()
1898 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_IT()
1899 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_IT()
1900 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_IT()
1901 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_IT()
1902 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Receive_IT()
1905 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1915 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_IT()
1936 HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t… in HAL_I2C_Master_Transmit_DMA() argument
1942 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_DMA()
1944 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_DMA()
1950 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1952 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_DMA()
1953 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_DMA()
1954 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_DMA()
1957 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_DMA()
1958 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_DMA()
1959 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_DMA()
1960 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Transmit_DMA()
1962 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_DMA()
1964 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_DMA()
1969 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_DMA()
1973 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_DMA()
1975 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Transmit_DMA()
1978 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Transmit_DMA()
1981 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Transmit_DMA()
1984 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
1985 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
1988 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Master_Transmit_DMA()
1990 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Master_Transmit_DMA()
1993hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
1996hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Master_Transmit_DMA()
1999 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Master_Transmit_DMA()
2000 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Master_Transmit_DMA()
2002 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Master_Transmit_DMA()
2007 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2008 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2011 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Transmit_DMA()
2014 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2021 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Transmit_DMA()
2022 hi2c->XferSize); in HAL_I2C_Master_Transmit_DMA()
2028 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2029 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2032 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Transmit_DMA()
2035 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2044 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); in HAL_I2C_Master_Transmit_DMA()
2047 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
2050 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2056 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Transmit_DMA()
2059 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Transmit_DMA()
2064 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2065 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2068 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Transmit_DMA()
2071 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2079 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_DMA()
2083 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit_DMA()
2087 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2096 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_DMA()
2117 HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Receive_DMA() argument
2123 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_DMA()
2125 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_DMA()
2131 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2133 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_DMA()
2134 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_DMA()
2135 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_DMA()
2138 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_DMA()
2139 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_DMA()
2140 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_DMA()
2141 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Receive_DMA()
2143 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_DMA()
2145 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_DMA()
2150 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_DMA()
2154 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Receive_DMA()
2156 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Receive_DMA()
2159 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Receive_DMA()
2162 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Receive_DMA()
2165 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2166 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2169 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Master_Receive_DMA()
2171 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Master_Receive_DMA()
2174hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Master_Receive_DMA()
2177 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Master_Receive_DMA()
2178 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Master_Receive_DMA()
2181hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Master_Receive_DMA()
2183 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Master_Receive_DMA()
2188 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2189 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2192 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Receive_DMA()
2195 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2202 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Receive_DMA()
2203 hi2c->XferSize); in HAL_I2C_Master_Receive_DMA()
2209 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2210 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2213 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Receive_DMA()
2216 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2225 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_DMA()
2228 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Receive_DMA()
2231 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2237 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Receive_DMA()
2240 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Receive_DMA()
2245 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2246 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2249 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Receive_DMA()
2252 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2260 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_DMA()
2264 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive_DMA()
2268 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2277 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_DMA()
2296 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_DMA() argument
2300 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_DMA()
2304 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2308 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2310 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_DMA()
2311 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_DMA()
2312 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_DMA()
2315 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_DMA()
2316 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_DMA()
2317 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_DMA()
2318 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_DMA()
2319 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2322 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_DMA()
2326 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_DMA()
2329 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_DMA()
2331 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_DMA()
2332 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_DMA()
2335 if (hi2c->XferCount != 0U) in HAL_I2C_Slave_Transmit_DMA()
2337 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Transmit_DMA()
2340 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Transmit_DMA()
2343 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Transmit_DMA()
2346 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2347 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2350 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Slave_Transmit_DMA()
2352 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Slave_Transmit_DMA()
2355hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Slave_Transmit_DMA()
2358hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)hi2c->pBu… in HAL_I2C_Slave_Transmit_DMA()
2361 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Slave_Transmit_DMA()
2362 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Slave_Transmit_DMA()
2364 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Slave_Transmit_DMA()
2369 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2370 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2373 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2376 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2383 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, in HAL_I2C_Slave_Transmit_DMA()
2384 … (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Transmit_DMA()
2385 hi2c->XferSize); in HAL_I2C_Slave_Transmit_DMA()
2391 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2392 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2395 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2398 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2406 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2409 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2415 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2418 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Transmit_DMA()
2423 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2424 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2427 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2430 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2438 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2441 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2447 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2466 HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_DMA() argument
2470 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_DMA()
2474 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive_DMA()
2478 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2480 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_DMA()
2481 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_DMA()
2482 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_DMA()
2485 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_DMA()
2486 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_DMA()
2487 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_DMA()
2488 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_DMA()
2489 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Receive_DMA()
2491 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Receive_DMA()
2494 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Receive_DMA()
2497 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Receive_DMA()
2500 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2501 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2504 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Slave_Receive_DMA()
2506 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Slave_Receive_DMA()
2509hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Slave_Receive_DMA()
2512 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Slave_Receive_DMA()
2513 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive_DMA()
2516hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Slave_Receive_DMA()
2518 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Slave_Receive_DMA()
2523 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2524 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2527 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Receive_DMA()
2530 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2537 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Receive_DMA()
2538 hi2c->XferSize); in HAL_I2C_Slave_Receive_DMA()
2544 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2545 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2548 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Receive_DMA()
2551 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2559 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_DMA()
2562 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2568 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_DMA()
2571 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Receive_DMA()
2576 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2577 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2580 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Receive_DMA()
2583 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2610 HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre… in HAL_I2C_Mem_Write() argument
2618 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write()
2622 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write()
2627 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write()
2632 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2637 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write()
2638 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write()
2639 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write()
2642 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write()
2643 hi2c->XferCount = Size; in HAL_I2C_Mem_Write()
2644 hi2c->XferISR = NULL; in HAL_I2C_Mem_Write()
2647 …if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2650 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2655 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2657 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2658 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2662 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2663 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2669 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2675 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Mem_Write()
2678 hi2c->pBuffPtr++; in HAL_I2C_Mem_Write()
2680 hi2c->XferCount--; in HAL_I2C_Mem_Write()
2681 hi2c->XferSize--; in HAL_I2C_Mem_Write()
2683 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Write()
2686 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2691 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2693 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2694 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Write()
2699 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2700 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Write()
2705 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Write()
2709 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2715 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Write()
2718 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Write()
2720 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write()
2721 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write()
2724 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2747 HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres… in HAL_I2C_Mem_Read() argument
2755 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read()
2759 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read()
2764 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read()
2769 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2774 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read()
2775 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read()
2776 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read()
2779 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read()
2780 hi2c->XferCount = Size; in HAL_I2C_Mem_Read()
2781 hi2c->XferISR = NULL; in HAL_I2C_Mem_Read()
2784 … if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2787 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2793 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2795 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2796 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2801 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2802 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2809 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2815 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Mem_Read()
2818 hi2c->pBuffPtr++; in HAL_I2C_Mem_Read()
2820 hi2c->XferSize--; in HAL_I2C_Mem_Read()
2821 hi2c->XferCount--; in HAL_I2C_Mem_Read()
2823 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Read()
2826 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2831 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2833 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2834 I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2839 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2840 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2844 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Read()
2848 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2854 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Read()
2857 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Read()
2859 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read()
2860 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read()
2863 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2884 HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Write_IT() argument
2890 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_IT()
2894 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_IT()
2898 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_IT()
2904 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2906 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_IT()
2907 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_IT()
2908 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_IT()
2911 hi2c->XferSize = 0U; in HAL_I2C_Mem_Write_IT()
2912 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_IT()
2913 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_IT()
2914 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_IT()
2915 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Write_IT()
2916 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_IT()
2922 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2925 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_IT()
2931 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2934 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2937 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_IT()
2940 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2950 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_IT()
2972 HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd… in HAL_I2C_Mem_Read_IT() argument
2978 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_IT()
2982 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_IT()
2986 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_IT()
2992 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2994 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_IT()
2995 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_IT()
2996 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_IT()
2999 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_IT()
3000 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_IT()
3001 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_IT()
3002 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Read_IT()
3003 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_IT()
3009 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
3012 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_IT()
3018 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_IT()
3021 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
3024 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_IT()
3027 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_IT()
3037 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_IT()
3060 HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA… in HAL_I2C_Mem_Write_DMA() argument
3068 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_DMA()
3072 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_DMA()
3076 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_DMA()
3082 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3084 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_DMA()
3085 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_DMA()
3086 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_DMA()
3089 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_DMA()
3090 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_DMA()
3091 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_DMA()
3092 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Write_DMA()
3093 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_DMA()
3095 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write_DMA()
3097 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write_DMA()
3101 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write_DMA()
3108 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3111 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_DMA()
3117 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3120 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3123 if (hi2c->hdmatx != NULL) in HAL_I2C_Mem_Write_DMA()
3126 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Mem_Write_DMA()
3129 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Write_DMA()
3132 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3133 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3136 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Mem_Write_DMA()
3138 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Mem_Write_DMA()
3141hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Mem_Write_DMA()
3144hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Mem_Write_DMA()
3147 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Mem_Write_DMA()
3148 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Mem_Write_DMA()
3150 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Mem_Write_DMA()
3155 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3156 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3159 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Write_DMA()
3162 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3169 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Mem_Write_DMA()
3170 hi2c->XferSize); in HAL_I2C_Mem_Write_DMA()
3176 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3177 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3180 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Write_DMA()
3183 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3191 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_DMA()
3194 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3203 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_DMA()
3208 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3209 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3212 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Write_DMA()
3215 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3240 HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Read_DMA() argument
3248 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_DMA()
3252 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_DMA()
3256 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_DMA()
3262 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3264 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_DMA()
3265 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_DMA()
3266 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_DMA()
3269 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_DMA()
3270 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_DMA()
3271 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_DMA()
3272 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Read_DMA()
3273 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_DMA()
3275 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read_DMA()
3277 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read_DMA()
3281 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read_DMA()
3288 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3291 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_DMA()
3297 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3300 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3303 if (hi2c->hdmarx != NULL) in HAL_I2C_Mem_Read_DMA()
3306 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Mem_Read_DMA()
3309 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Read_DMA()
3312 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3313 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3316 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Mem_Read_DMA()
3318 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Mem_Read_DMA()
3321hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Mem_Read_DMA()
3324 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Mem_Read_DMA()
3325 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Mem_Read_DMA()
3328hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Mem_Read_DMA()
3330 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Mem_Read_DMA()
3335 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3336 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3339 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Read_DMA()
3342 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3349 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Mem_Read_DMA()
3350 hi2c->XferSize); in HAL_I2C_Mem_Read_DMA()
3356 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3357 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3360 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Read_DMA()
3363 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3371 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_DMA()
3374 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3383 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_DMA()
3388 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3389 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3392 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Read_DMA()
3395 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3420 HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria… in HAL_I2C_IsDeviceReady() argument
3432 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_IsDeviceReady()
3434 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_IsDeviceReady()
3440 __HAL_LOCK(hi2c); in HAL_I2C_IsDeviceReady()
3442 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_IsDeviceReady()
3443 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3448 hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); in HAL_I2C_IsDeviceReady()
3454 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3455 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3464 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3467 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3470 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3476 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3477 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3481 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) in HAL_I2C_IsDeviceReady()
3484 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3487 if (hi2c->ErrorCode == HAL_I2C_ERROR_AF) in HAL_I2C_IsDeviceReady()
3490 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3493 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3505 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3508 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3511 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3522 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3525 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3532 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3547 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3550 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3553 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3575 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Transmit_IT() argument
3584 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_IT()
3587 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3589 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_IT()
3590 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_IT()
3591 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_IT()
3594 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_IT()
3595 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_IT()
3596 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3597 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_IT()
3600 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3602 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_IT()
3607 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_IT()
3608 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3614 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_IT()
3622 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3625 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3627 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3632 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_IT()
3635 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3644 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_IT()
3667 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin… in HAL_I2C_Master_Seq_Transmit_DMA() argument
3677 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_DMA()
3680 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3682 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_DMA()
3683 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_DMA()
3684 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3687 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_DMA()
3688 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_DMA()
3689 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3690 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3693 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3695 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_DMA()
3700 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_DMA()
3701 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3707 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_DMA()
3715 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3718 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3720 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3724 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Transmit_DMA()
3726 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3729 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Seq_Transmit_DMA()
3732 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Transmit_DMA()
3735 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3736 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3739 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Master_Seq_Transmit_DMA()
3741 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3744hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3747hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Master_Seq_Transmit_DMA()
3750 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Master_Seq_Transmit_DMA()
3751 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Master_Seq_Transmit_DMA()
3753 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Master_Seq_Transmit_DMA()
3758 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3759 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3762 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Transmit_DMA()
3765 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3772 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Seq_Transmit_DMA()
3773 hi2c->XferSize); in HAL_I2C_Master_Seq_Transmit_DMA()
3779 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3780 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3783 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Transmit_DMA()
3786 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3794 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3797 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3800 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3806 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3809 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Seq_Transmit_DMA()
3814 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3815 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3818 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3821 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3829 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_DMA()
3833 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Transmit_DMA()
3837 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3846 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3870 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8… in HAL_I2C_Master_Seq_Receive_IT() argument
3879 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_IT()
3882 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3884 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_IT()
3885 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_IT()
3886 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_IT()
3889 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_IT()
3890 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_IT()
3891 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3892 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_IT()
3895 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3897 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_IT()
3902 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_IT()
3903 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3909 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_IT()
3917 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3920 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3922 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3927 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_IT()
3930 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3935 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_IT()
3958 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Receive_DMA() argument
3968 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_DMA()
3971 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3973 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_DMA()
3974 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_DMA()
3975 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3978 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_DMA()
3979 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_DMA()
3980 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3981 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3984 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3986 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_DMA()
3991 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_DMA()
3992 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3998 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_DMA()
4006 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4009 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
4011 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
4015 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Receive_DMA()
4017 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
4020 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Seq_Receive_DMA()
4023 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Receive_DMA()
4026 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
4027 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
4030 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Master_Seq_Receive_DMA()
4032 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
4035hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Master_Seq_Receive_DMA()
4038 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Master_Seq_Receive_DMA()
4039 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Master_Seq_Receive_DMA()
4042hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Master_Seq_Receive_DMA()
4044 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Master_Seq_Receive_DMA()
4048 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
4049 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
4052 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Receive_DMA()
4055 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4062 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Seq_Receive_DMA()
4063 hi2c->XferSize); in HAL_I2C_Master_Seq_Receive_DMA()
4069 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
4070 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
4073 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Receive_DMA()
4076 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4084 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_DMA()
4087 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Receive_DMA()
4090 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4096 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Receive_DMA()
4099 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Seq_Receive_DMA()
4104 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
4105 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
4108 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
4111 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4119 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_DMA()
4123 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Receive_DMA()
4127 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4136 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_DMA()
4158 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
4167 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4171 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_IT()
4176 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4179 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
4183 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4186 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4190 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4192 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_IT()
4194 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_IT()
4198 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_IT()
4201 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_IT()
4204 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_IT()
4211 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_IT()
4212 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_IT()
4213 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_IT()
4216 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_IT()
4219 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_IT()
4220 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_IT()
4221 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_IT()
4222 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_IT()
4223 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Transmit_IT()
4225 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4226 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_IT()
4230 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4234 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
4240 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4261 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t … in HAL_I2C_Slave_Seq_Transmit_DMA() argument
4271 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4275 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4280 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4283 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4287 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4290 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4292 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4295 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4297 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4301 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4304 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4307 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4312 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4314 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4316 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4319 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4323 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4326 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4329 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4339 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4340 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4341 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4344 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_DMA()
4347 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_DMA()
4348 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_DMA()
4349 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_DMA()
4350 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_DMA()
4351 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4353 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4356 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Seq_Transmit_DMA()
4359 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Transmit_DMA()
4362 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4363 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4366 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Slave_Seq_Transmit_DMA()
4368 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4371hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Slave_Seq_Transmit_DMA()
4374hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Slave_Seq_Transmit_DMA()
4377 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Slave_Seq_Transmit_DMA()
4378 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Slave_Seq_Transmit_DMA()
4380 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4385 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4386 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4389 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4392 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4399 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Seq_Transmit_DMA()
4400 hi2c->XferSize); in HAL_I2C_Slave_Seq_Transmit_DMA()
4406 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4407 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4410 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4413 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4421 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Transmit_DMA()
4424 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Transmit_DMA()
4429 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4430 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4433 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4436 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4441 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4442 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_DMA()
4446 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4450 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4453 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4459 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4480 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
4489 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4493 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_IT()
4498 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4501 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4505 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4508 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4511 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_IT()
4513 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_IT()
4516 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_IT()
4520 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_IT()
4523 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_IT()
4526 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_IT()
4533 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_IT()
4534 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_IT()
4535 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_IT()
4538 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_IT()
4541 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_IT()
4542 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_IT()
4543 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_IT()
4544 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_IT()
4545 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Receive_IT()
4547 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4548 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_IT()
4552 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4556 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4562 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4583 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
4593 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4597 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4602 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4605 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4609 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4612 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4614 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4617 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4619 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4623 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4626 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4629 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_DMA()
4634 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4636 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4638 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4641 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4645 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4648 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4651 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4661 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4662 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_DMA()
4663 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4666 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_DMA()
4669 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_DMA()
4670 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_DMA()
4671 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_DMA()
4672 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_DMA()
4673 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4675 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4678 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Seq_Receive_DMA()
4681 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Receive_DMA()
4684 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4685 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4688 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Slave_Seq_Receive_DMA()
4690 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4693hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Slave_Seq_Receive_DMA()
4696 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Slave_Seq_Receive_DMA()
4697 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Slave_Seq_Receive_DMA()
4700hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Slave_Seq_Receive_DMA()
4702 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4707 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4708 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4711 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4714 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4721 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Seq_Receive_DMA()
4722 hi2c->XferSize); in HAL_I2C_Slave_Seq_Receive_DMA()
4728 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4729 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4732 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4735 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4743 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Receive_DMA()
4746 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Receive_DMA()
4751 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4752 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4755 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4758 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4763 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4764 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_DMA()
4768 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4772 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4775 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4781 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4798 HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_EnableListen_IT() argument
4800 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_EnableListen_IT()
4802 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_EnableListen_IT()
4803 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_EnableListen_IT()
4806 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_EnableListen_IT()
4822 HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_DisableListen_IT() argument
4828 if (hi2c->State == HAL_I2C_STATE_LISTEN) in HAL_I2C_DisableListen_IT()
4830 tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; in HAL_I2C_DisableListen_IT()
4831 hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); in HAL_I2C_DisableListen_IT()
4832 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_DisableListen_IT()
4833 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DisableListen_IT()
4834 hi2c->XferISR = NULL; in HAL_I2C_DisableListen_IT()
4837 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_DisableListen_IT()
4855 HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) in HAL_I2C_Master_Abort_IT() argument
4857 HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; in HAL_I2C_Master_Abort_IT()
4862 __HAL_LOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4865 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in HAL_I2C_Master_Abort_IT()
4867 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Abort_IT()
4868 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in HAL_I2C_Master_Abort_IT()
4870 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in HAL_I2C_Master_Abort_IT()
4872 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Abort_IT()
4873 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in HAL_I2C_Master_Abort_IT()
4881 hi2c->State = HAL_I2C_STATE_ABORT; in HAL_I2C_Master_Abort_IT()
4885 I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); in HAL_I2C_Master_Abort_IT()
4888 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4893 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in HAL_I2C_Master_Abort_IT()
4919 void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_I2C_EV_IRQHandler() argument
4922 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_EV_IRQHandler()
4923 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_EV_IRQHandler()
4926 if (hi2c->XferISR != NULL) in HAL_I2C_EV_IRQHandler()
4928 hi2c->XferISR(hi2c, itflags, itsources); in HAL_I2C_EV_IRQHandler()
4938 void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) in HAL_I2C_ER_IRQHandler() argument
4940 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_ER_IRQHandler()
4941 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_ER_IRQHandler()
4948 hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; in HAL_I2C_ER_IRQHandler()
4951 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in HAL_I2C_ER_IRQHandler()
4958 hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; in HAL_I2C_ER_IRQHandler()
4961 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in HAL_I2C_ER_IRQHandler()
4968 hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; in HAL_I2C_ER_IRQHandler()
4971 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in HAL_I2C_ER_IRQHandler()
4975 tmperror = hi2c->ErrorCode; in HAL_I2C_ER_IRQHandler()
4980 I2C_ITError(hi2c, tmperror); in HAL_I2C_ER_IRQHandler()
4990 __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterTxCpltCallback() argument
4993 UNUSED(hi2c); in HAL_I2C_MasterTxCpltCallback()
5006 __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterRxCpltCallback() argument
5009 UNUSED(hi2c); in HAL_I2C_MasterRxCpltCallback()
5021 __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveTxCpltCallback() argument
5024 UNUSED(hi2c); in HAL_I2C_SlaveTxCpltCallback()
5037 __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveRxCpltCallback() argument
5040 UNUSED(hi2c); in HAL_I2C_SlaveRxCpltCallback()
5055 __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM… in HAL_I2C_AddrCallback() argument
5058 UNUSED(hi2c); in HAL_I2C_AddrCallback()
5073 __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ListenCpltCallback() argument
5076 UNUSED(hi2c); in HAL_I2C_ListenCpltCallback()
5089 __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemTxCpltCallback() argument
5092 UNUSED(hi2c); in HAL_I2C_MemTxCpltCallback()
5105 __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemRxCpltCallback() argument
5108 UNUSED(hi2c); in HAL_I2C_MemRxCpltCallback()
5121 __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ErrorCallback() argument
5124 UNUSED(hi2c); in HAL_I2C_ErrorCallback()
5137 __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_AbortCpltCallback() argument
5140 UNUSED(hi2c); in HAL_I2C_AbortCpltCallback()
5172 HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetState() argument
5175 return hi2c->State; in HAL_I2C_GetState()
5184 HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetMode() argument
5186 return hi2c->Mode; in HAL_I2C_GetMode()
5195 uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetError() argument
5197 return hi2c->ErrorCode; in HAL_I2C_GetError()
5220 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_IT() argument
5227 __HAL_LOCK(hi2c); in I2C_Master_ISR_IT()
5233 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_IT()
5238 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_IT()
5241 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_IT()
5250 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Master_ISR_IT()
5253 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5255 hi2c->XferSize--; in I2C_Master_ISR_IT()
5256 hi2c->XferCount--; in I2C_Master_ISR_IT()
5262 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Master_ISR_IT()
5265 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5267 hi2c->XferSize--; in I2C_Master_ISR_IT()
5268 hi2c->XferCount--; in I2C_Master_ISR_IT()
5273 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Master_ISR_IT()
5275 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_IT()
5277 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_IT()
5279 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_IT()
5280 … I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5284 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_IT()
5285 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5287 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5288 hi2c->XferOptions, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5292 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5300 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5303 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5309 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5316 if (hi2c->XferCount == 0U) in I2C_Master_ISR_IT()
5318 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5321 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5324 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_IT()
5329 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5337 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5349 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Master_ISR_IT()
5353 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_IT()
5366 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_IT() argument
5373 __HAL_LOCK(hi2c); in I2C_Mem_ISR_IT()
5379 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_IT()
5384 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_IT()
5387 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_IT()
5396 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Mem_ISR_IT()
5399 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5401 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5402 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5407 if (hi2c->Memaddress == 0xFFFFFFFFU) in I2C_Mem_ISR_IT()
5410 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Mem_ISR_IT()
5413 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5415 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5416 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5421 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_IT()
5424 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_IT()
5430 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Mem_ISR_IT()
5432 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5434 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5435 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5440 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5441 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5449 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_IT()
5456 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_IT()
5459 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_Mem_ISR_IT()
5461 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_IT()
5466 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5468 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5471 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5476 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5479 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5492 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Mem_ISR_IT()
5496 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_IT()
5509 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_IT() argument
5512 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_IT()
5516 __HAL_LOCK(hi2c); in I2C_Slave_ISR_IT()
5523 I2C_ITSlaveCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5532 if (hi2c->XferCount == 0U) in I2C_Slave_ISR_IT()
5534 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_IT()
5539 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5541 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_IT()
5544 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5547 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_IT()
5551 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5556 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5563 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5566 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_IT()
5571 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_IT()
5578 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5581 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Slave_ISR_IT()
5584 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5586 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5587 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5590 if ((hi2c->XferCount == 0U) && \ in I2C_Slave_ISR_IT()
5594 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5600 I2C_ITAddrCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5609 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5612 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Slave_ISR_IT()
5615 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5617 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5618 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5626 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5636 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_IT()
5650 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_DMA() argument
5657 __HAL_LOCK(hi2c); in I2C_Master_ISR_DMA()
5663 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_DMA()
5666 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_DMA()
5671 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Master_ISR_DMA()
5674 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_DMA()
5680 __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); in I2C_Master_ISR_DMA()
5682 if (hi2c->XferCount != 0U) in I2C_Master_ISR_DMA()
5685 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_DMA()
5688 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_DMA()
5690 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_DMA()
5695 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_DMA()
5696 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5698 xfermode = hi2c->XferOptions; in I2C_Master_ISR_DMA()
5707 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); in I2C_Master_ISR_DMA()
5710 hi2c->XferCount -= hi2c->XferSize; in I2C_Master_ISR_DMA()
5713 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Master_ISR_DMA()
5715 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Master_ISR_DMA()
5719 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Master_ISR_DMA()
5725 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5728 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5734 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5741 if (hi2c->XferCount == 0U) in I2C_Master_ISR_DMA()
5743 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5746 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5749 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_DMA()
5754 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5762 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5769 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Master_ISR_DMA()
5777 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_DMA()
5790 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_DMA() argument
5796 __HAL_LOCK(hi2c); in I2C_Mem_ISR_DMA()
5802 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_DMA()
5805 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_DMA()
5810 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Mem_ISR_DMA()
5813 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_DMA()
5819 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_DMA()
5822 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_DMA()
5828 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_DMA()
5831 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5833 if (hi2c->XferCount != 0U) in I2C_Mem_ISR_DMA()
5836 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5838 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5839 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5844 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5845 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5850 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5853 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5855 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5859 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5866 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_DMA()
5873 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_DMA()
5876 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5878 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5883 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5885 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5888 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5893 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5896 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5901 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5904 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5906 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5910 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5917 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Mem_ISR_DMA()
5925 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_DMA()
5938 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_DMA() argument
5941 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_DMA()
5946 __HAL_LOCK(hi2c); in I2C_Slave_ISR_DMA()
5953 I2C_ITSlaveCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5966 if (hi2c->hdmarx != NULL) in I2C_Slave_ISR_DMA()
5970 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) in I2C_Slave_ISR_DMA()
5978 if (hi2c->hdmatx != NULL) in I2C_Slave_ISR_DMA()
5982 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) in I2C_Slave_ISR_DMA()
5991 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_DMA()
5996 I2C_ITListenCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5998 … else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_DMA()
6001 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
6004 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_DMA()
6008 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_DMA()
6013 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
6020 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
6023 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_DMA()
6026 tmpstate = hi2c->State; in I2C_Slave_ISR_DMA()
6032 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_Slave_ISR_DMA()
6036 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_Slave_ISR_DMA()
6044 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_DMA()
6051 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
6057 I2C_ITAddrCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
6065 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_DMA()
6083 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryWrite() argument
6087 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in I2C_RequestMemoryWrite()
6090 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
6099 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
6105 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryWrite()
6108 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
6114 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
6118 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
6138 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryRead() argument
6142 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in I2C_RequestMemoryRead()
6145 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
6154 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
6160 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryRead()
6163 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
6169 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
6173 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
6187 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITAddrCplt() argument
6198 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_ITAddrCplt()
6200 transferdirection = I2C_GET_DIR(hi2c); in I2C_ITAddrCplt()
6201 slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); in I2C_ITAddrCplt()
6202 ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); in I2C_ITAddrCplt()
6203 ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); in I2C_ITAddrCplt()
6206 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in I2C_ITAddrCplt()
6211 hi2c->AddrEventCount++; in I2C_ITAddrCplt()
6212 if (hi2c->AddrEventCount == 2U) in I2C_ITAddrCplt()
6215 hi2c->AddrEventCount = 0U; in I2C_ITAddrCplt()
6218 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
6221 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6225 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6227 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6236 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
6239 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6243 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6245 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6253 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
6256 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6260 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6262 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6270 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
6273 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6282 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITMasterSeqCplt() argument
6285 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterSeqCplt()
6289 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterSeqCplt()
6291 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
6292 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterSeqCplt()
6293 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
6296 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterSeqCplt()
6299 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
6303 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6305 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6311 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
6312 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterSeqCplt()
6313 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
6316 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterSeqCplt()
6319 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
6323 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6325 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6335 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITSlaveSeqCplt() argument
6337 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveSeqCplt()
6340 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveSeqCplt()
6347 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveSeqCplt()
6352 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveSeqCplt()
6360 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in I2C_ITSlaveSeqCplt()
6363 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
6364 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveSeqCplt()
6367 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITSlaveSeqCplt()
6370 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
6374 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6376 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6380 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in I2C_ITSlaveSeqCplt()
6383 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
6384 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveSeqCplt()
6387 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITSlaveSeqCplt()
6390 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
6394 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6396 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6411 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITMasterCplt() argument
6418 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITMasterCplt()
6421 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6423 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterCplt()
6424 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterCplt()
6426 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6428 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterCplt()
6429 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterCplt()
6437 I2C_RESET_CR2(hi2c); in I2C_ITMasterCplt()
6440 hi2c->XferISR = NULL; in I2C_ITMasterCplt()
6441 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITMasterCplt()
6446 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITMasterCplt()
6449 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITMasterCplt()
6453 if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) in I2C_ITMasterCplt()
6456 tmpreg = (uint8_t)hi2c->Instance->RXDR; in I2C_ITMasterCplt()
6461 I2C_Flush_TXDR(hi2c); in I2C_ITMasterCplt()
6464 tmperror = hi2c->ErrorCode; in I2C_ITMasterCplt()
6467 if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) in I2C_ITMasterCplt()
6470 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITMasterCplt()
6473 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6475 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6476 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6478 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6480 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6483 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6487 hi2c->MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6489 HAL_I2C_MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6494 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6497 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6501 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6503 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6508 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6510 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6511 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6513 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6515 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6518 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6522 hi2c->MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6524 HAL_I2C_MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6529 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6532 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6536 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6538 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6554 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITSlaveCplt() argument
6556 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveCplt()
6558 uint32_t tmpoptions = hi2c->XferOptions; in I2C_ITSlaveCplt()
6559 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITSlaveCplt()
6562 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITSlaveCplt()
6567 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in I2C_ITSlaveCplt()
6568 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveCplt()
6572 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6573 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveCplt()
6577 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6578 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6586 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_ITSlaveCplt()
6589 I2C_RESET_CR2(hi2c); in I2C_ITSlaveCplt()
6592 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6599 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveCplt()
6601 if (hi2c->hdmatx != NULL) in I2C_ITSlaveCplt()
6603 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); in I2C_ITSlaveCplt()
6609 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveCplt()
6611 if (hi2c->hdmarx != NULL) in I2C_ITSlaveCplt()
6613 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); in I2C_ITSlaveCplt()
6629 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITSlaveCplt()
6632 hi2c->pBuffPtr++; in I2C_ITSlaveCplt()
6634 if ((hi2c->XferSize > 0U)) in I2C_ITSlaveCplt()
6636 hi2c->XferSize--; in I2C_ITSlaveCplt()
6637 hi2c->XferCount--; in I2C_ITSlaveCplt()
6642 if (hi2c->XferCount != 0U) in I2C_ITSlaveCplt()
6645 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6655 if (hi2c->XferCount == 0U) in I2C_ITSlaveCplt()
6657 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_ITSlaveCplt()
6662 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6664 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_ITSlaveCplt()
6667 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6670 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6674 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6679 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6686 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6689 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6694 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6699 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveCplt()
6700 hi2c->XferISR = NULL; in I2C_ITSlaveCplt()
6702 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) in I2C_ITSlaveCplt()
6705 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6708 if (hi2c->State == HAL_I2C_STATE_LISTEN) in I2C_ITSlaveCplt()
6711 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6714 else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_ITSlaveCplt()
6717 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6719 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITSlaveCplt()
6720 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6721 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6724 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6728 hi2c->ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6730 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6734 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITSlaveCplt()
6736 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6737 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6740 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6744 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6746 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6751 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6752 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6755 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6759 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6761 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6772 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITListenCplt() argument
6775 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITListenCplt()
6776 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITListenCplt()
6777 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITListenCplt()
6778 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITListenCplt()
6779 hi2c->XferISR = NULL; in I2C_ITListenCplt()
6785 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITListenCplt()
6788 hi2c->pBuffPtr++; in I2C_ITListenCplt()
6790 if ((hi2c->XferSize > 0U)) in I2C_ITListenCplt()
6792 hi2c->XferSize--; in I2C_ITListenCplt()
6793 hi2c->XferCount--; in I2C_ITListenCplt()
6796 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITListenCplt()
6801 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITListenCplt()
6804 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITListenCplt()
6807 __HAL_UNLOCK(hi2c); in I2C_ITListenCplt()
6811 hi2c->ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6813 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6823 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) in I2C_ITError() argument
6825 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITError()
6832 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITError()
6833 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITError()
6834 hi2c->XferCount = 0U; in I2C_ITError()
6837 hi2c->ErrorCode |= ErrorCode; in I2C_ITError()
6845 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6848 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITError()
6849 hi2c->XferISR = I2C_Slave_ISR_IT; in I2C_ITError()
6854 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6857 I2C_Flush_TXDR(hi2c); in I2C_ITError()
6861 if (hi2c->State != HAL_I2C_STATE_ABORT) in I2C_ITError()
6864 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITError()
6867 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) in I2C_ITError()
6869 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_ITError()
6871 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITError()
6872 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITError()
6876 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITError()
6880 hi2c->XferISR = NULL; in I2C_ITError()
6885 tmppreviousstate = hi2c->PreviousState; in I2C_ITError()
6887 if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ in I2C_ITError()
6890 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in I2C_ITError()
6892 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITError()
6895 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) in I2C_ITError()
6899 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6902 __HAL_UNLOCK(hi2c); in I2C_ITError()
6905 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in I2C_ITError()
6908 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in I2C_ITError()
6913 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6917 else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ in I2C_ITError()
6920 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in I2C_ITError()
6922 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITError()
6925 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) in I2C_ITError()
6929 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6932 __HAL_UNLOCK(hi2c); in I2C_ITError()
6935 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in I2C_ITError()
6938 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in I2C_ITError()
6943 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6949 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6958 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) in I2C_TreatErrorCallback() argument
6960 if (hi2c->State == HAL_I2C_STATE_ABORT) in I2C_TreatErrorCallback()
6962 hi2c->State = HAL_I2C_STATE_READY; in I2C_TreatErrorCallback()
6963 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6966 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6970 hi2c->AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6972 HAL_I2C_AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6977 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6980 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6984 hi2c->ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6986 HAL_I2C_ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6996 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) in I2C_Flush_TXDR() argument
7000 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) in I2C_Flush_TXDR()
7002 hi2c->Instance->TXDR = 0x00U; in I2C_Flush_TXDR()
7006 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) in I2C_Flush_TXDR()
7008 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); in I2C_Flush_TXDR()
7022 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterTransmitCplt() local
7025 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMAMasterTransmitCplt()
7028 if (hi2c->XferCount == 0U) in I2C_DMAMasterTransmitCplt()
7031 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterTransmitCplt()
7037 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterTransmitCplt()
7040 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterTransmitCplt()
7042 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterTransmitCplt()
7046 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterTransmitCplt()
7050 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in I2C_DMAMasterTransmitCplt()
7052 if (hi2c->hdmatx->LinkedListQueue != NULL) in I2C_DMAMasterTransmitCplt()
7055hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in I2C_DMAMasterTransmitCplt()
7058hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)hi2c->pBu… in I2C_DMAMasterTransmitCplt()
7061hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hi2c->In… in I2C_DMAMasterTransmitCplt()
7063 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in I2C_DMAMasterTransmitCplt()
7068 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterTransmitCplt()
7073 …dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance… in I2C_DMAMasterTransmitCplt()
7074 hi2c->XferSize); in I2C_DMAMasterTransmitCplt()
7080 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterTransmitCplt()
7085 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterTransmitCplt()
7099 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveTransmitCplt() local
7100 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveTransmitCplt()
7105 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMASlaveTransmitCplt()
7109 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveTransmitCplt()
7129 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterReceiveCplt() local
7132 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMAMasterReceiveCplt()
7135 if (hi2c->XferCount == 0U) in I2C_DMAMasterReceiveCplt()
7138 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterReceiveCplt()
7144 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterReceiveCplt()
7147 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterReceiveCplt()
7149 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterReceiveCplt()
7153 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterReceiveCplt()
7157 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in I2C_DMAMasterReceiveCplt()
7159 if (hi2c->hdmarx->LinkedListQueue != NULL) in I2C_DMAMasterReceiveCplt()
7162hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in I2C_DMAMasterReceiveCplt()
7165hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)&hi2c->In… in I2C_DMAMasterReceiveCplt()
7168hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)hi2c->pBu… in I2C_DMAMasterReceiveCplt()
7170 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in I2C_DMAMasterReceiveCplt()
7175 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterReceiveCplt()
7180 …dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pB… in I2C_DMAMasterReceiveCplt()
7181 hi2c->XferSize); in I2C_DMAMasterReceiveCplt()
7187 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterReceiveCplt()
7192 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterReceiveCplt()
7206 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveReceiveCplt() local
7207 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveReceiveCplt()
7209 if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ in I2C_DMASlaveReceiveCplt()
7213 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMASlaveReceiveCplt()
7216 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveReceiveCplt()
7235 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAError() local
7238 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_DMAError()
7241 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAError()
7254 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAAbort() local
7257 if (hi2c->hdmatx != NULL) in I2C_DMAAbort()
7259 hi2c->hdmatx->XferAbortCallback = NULL; in I2C_DMAAbort()
7261 if (hi2c->hdmarx != NULL) in I2C_DMAAbort()
7263 hi2c->hdmarx->XferAbortCallback = NULL; in I2C_DMAAbort()
7266 I2C_TreatErrorCallback(hi2c); in I2C_DMAAbort()
7282 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta… in I2C_WaitOnFlagUntilTimeout() argument
7285 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) in I2C_WaitOnFlagUntilTimeout()
7288 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnFlagUntilTimeout()
7298 if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) in I2C_WaitOnFlagUntilTimeout()
7300 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnFlagUntilTimeout()
7301 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnFlagUntilTimeout()
7302 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnFlagUntilTimeout()
7305 __HAL_UNLOCK(hi2c); in I2C_WaitOnFlagUntilTimeout()
7322 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnTXISFlagUntilTimeout() argument
7325 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) in I2C_WaitOnTXISFlagUntilTimeout()
7328 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnTXISFlagUntilTimeout()
7338 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) in I2C_WaitOnTXISFlagUntilTimeout()
7340 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnTXISFlagUntilTimeout()
7341 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnTXISFlagUntilTimeout()
7342 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnTXISFlagUntilTimeout()
7345 __HAL_UNLOCK(hi2c); in I2C_WaitOnTXISFlagUntilTimeout()
7363 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnSTOPFlagUntilTimeout() argument
7366 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_WaitOnSTOPFlagUntilTimeout()
7369 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnSTOPFlagUntilTimeout()
7377 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) in I2C_WaitOnSTOPFlagUntilTimeout()
7379 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnSTOPFlagUntilTimeout()
7380 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnSTOPFlagUntilTimeout()
7381 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnSTOPFlagUntilTimeout()
7384 __HAL_UNLOCK(hi2c); in I2C_WaitOnSTOPFlagUntilTimeout()
7401 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnRXNEFlagUntilTimeout() argument
7406 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) && (status == HAL_OK)) in I2C_WaitOnRXNEFlagUntilTimeout()
7409 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnRXNEFlagUntilTimeout()
7415 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) && (status == HAL_OK)) in I2C_WaitOnRXNEFlagUntilTimeout()
7419 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) in I2C_WaitOnRXNEFlagUntilTimeout()
7427 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_WaitOnRXNEFlagUntilTimeout()
7429 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_WaitOnRXNEFlagUntilTimeout()
7430 hi2c->ErrorCode = HAL_I2C_ERROR_AF; in I2C_WaitOnRXNEFlagUntilTimeout()
7433 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_WaitOnRXNEFlagUntilTimeout()
7436 I2C_RESET_CR2(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7438 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7439 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7442 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7448 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7455 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) in I2C_WaitOnRXNEFlagUntilTimeout()
7457 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnRXNEFlagUntilTimeout()
7458 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7461 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7478 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti… in I2C_IsErrorOccurred() argument
7481 uint32_t itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7490 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_IsErrorOccurred()
7494 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) in I2C_IsErrorOccurred()
7501 tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); in I2C_IsErrorOccurred()
7502 tmp2 = hi2c->Mode; in I2C_IsErrorOccurred()
7505 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ in I2C_IsErrorOccurred()
7510 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_IsErrorOccurred()
7516 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_IsErrorOccurred()
7536 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_IsErrorOccurred()
7545 itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7554 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in I2C_IsErrorOccurred()
7565 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in I2C_IsErrorOccurred()
7576 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in I2C_IsErrorOccurred()
7584 I2C_Flush_TXDR(hi2c); in I2C_IsErrorOccurred()
7587 I2C_RESET_CR2(hi2c); in I2C_IsErrorOccurred()
7589 hi2c->ErrorCode |= error_code; in I2C_IsErrorOccurred()
7590 hi2c->State = HAL_I2C_STATE_READY; in I2C_IsErrorOccurred()
7591 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_IsErrorOccurred()
7594 __HAL_UNLOCK(hi2c); in I2C_IsErrorOccurred()
7619 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t… in I2C_TransferConfig() argument
7625 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in I2C_TransferConfig()
7635 MODIFY_REG(hi2c->Instance->CR2, \ in I2C_TransferConfig()
7648 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Enable_IRQ() argument
7653 if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ in I2C_Enable_IRQ()
7654 (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ in I2C_Enable_IRQ()
7655 (hi2c->XferISR != I2C_Mem_ISR_DMA)) in I2C_Enable_IRQ()
7733 __HAL_I2C_ENABLE_IT(hi2c, tmpisr); in I2C_Enable_IRQ()
7743 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Disable_IRQ() argument
7752 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7764 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7798 __HAL_I2C_DISABLE_IT(hi2c, tmpisr); in I2C_Disable_IRQ()
7806 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) in I2C_ConvertOtherXferOptions() argument
7811 if (hi2c->XferOptions == I2C_OTHER_FRAME) in I2C_ConvertOtherXferOptions()
7813 hi2c->XferOptions = I2C_FIRST_FRAME; in I2C_ConvertOtherXferOptions()
7819 else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) in I2C_ConvertOtherXferOptions()
7821 hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; in I2C_ConvertOtherXferOptions()