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()
566 … hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_Init()
567 … hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_Init()
568 … hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_Init()
569 … hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_Init()
570 … hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_Init()
571 … hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_Init()
572 … hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_Init()
573 … hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_Init()
574 … hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_Init()
575 … hi2c->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()
887 … hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
891 … hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
895 … hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
899 … hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
903 … hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_UnRegisterCallback()
907 … hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
911 … hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
915 … hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_UnRegisterCallback()
919 … hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_UnRegisterCallback()
923 … hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
927 … hi2c->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()
944 … hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
948 … hi2c->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()
1718 if ((hi2c->Instance->AUTOCR & I2C_AUTOCR_TRIGEN) == I2C_AUTOCR_TRIGEN) in HAL_I2C_Master_Transmit_IT()
1720 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_NO_START_WRIT… in HAL_I2C_Master_Transmit_IT()
1724 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); in HAL_I2C_Master_Transmit_IT()
1728 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1738 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_IT()
1758 HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *… in HAL_I2C_Master_Receive_IT() argument
1763 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_IT()
1765 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_IT()
1771 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1773 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_IT()
1774 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_IT()
1775 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_IT()
1778 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_IT()
1779 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_IT()
1780 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_IT()
1781 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_IT()
1783 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_IT()
1785 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_IT()
1790 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_IT()
1797 if ((hi2c->Instance->AUTOCR & I2C_AUTOCR_TRIGEN) == I2C_AUTOCR_TRIGEN) in HAL_I2C_Master_Receive_IT()
1799 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_NO_START_READ… in HAL_I2C_Master_Receive_IT()
1803 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_IT()
1807 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1817 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_IT()
1835 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_IT() argument
1837 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_IT()
1840 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1842 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_IT()
1843 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_IT()
1844 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_IT()
1847 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_IT()
1850 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_IT()
1851 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_IT()
1852 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_IT()
1853 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_IT()
1854 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Transmit_IT()
1857 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_IT()
1861 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_IT()
1864 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_IT()
1866 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_IT()
1867 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_IT()
1871 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1881 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_IT()
1899 HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_IT() argument
1901 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_IT()
1904 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1906 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_IT()
1907 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_IT()
1908 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_IT()
1911 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_IT()
1914 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_IT()
1915 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_IT()
1916 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_IT()
1917 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_IT()
1918 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Receive_IT()
1921 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1931 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_IT()
1952 HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t… in HAL_I2C_Master_Transmit_DMA() argument
1958 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_DMA()
1960 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_DMA()
1966 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1968 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_DMA()
1969 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_DMA()
1970 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_DMA()
1973 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_DMA()
1974 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_DMA()
1975 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_DMA()
1976 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Transmit_DMA()
1978 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_DMA()
1980 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_DMA()
1985 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_DMA()
1989 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_DMA()
1991 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Transmit_DMA()
1994 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Transmit_DMA()
1997 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Transmit_DMA()
2000 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
2001 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
2004 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Master_Transmit_DMA()
2006 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Master_Transmit_DMA()
2009 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
2012 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Master_Transmit_DMA()
2015 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Master_Transmit_DMA()
2016 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Master_Transmit_DMA()
2018 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Master_Transmit_DMA()
2023 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2024 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2027 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Transmit_DMA()
2030 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2037 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Transmit_DMA()
2038 hi2c->XferSize); in HAL_I2C_Master_Transmit_DMA()
2044 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2045 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2048 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Transmit_DMA()
2051 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2061 if ((hi2c->Instance->AUTOCR & I2C_AUTOCR_TRIGEN) == I2C_AUTOCR_TRIGEN) in HAL_I2C_Master_Transmit_DMA()
2063 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, in HAL_I2C_Master_Transmit_DMA()
2068 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); in HAL_I2C_Master_Transmit_DMA()
2072 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
2075 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2081 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Transmit_DMA()
2084 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Transmit_DMA()
2089 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
2090 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2093 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Transmit_DMA()
2096 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2104 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_DMA()
2108 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit_DMA()
2112 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2121 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_DMA()
2142 HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Receive_DMA() argument
2148 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_DMA()
2150 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_DMA()
2156 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2158 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_DMA()
2159 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_DMA()
2160 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_DMA()
2163 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_DMA()
2164 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_DMA()
2165 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_DMA()
2166 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Receive_DMA()
2168 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_DMA()
2170 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_DMA()
2175 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_DMA()
2179 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Receive_DMA()
2181 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Receive_DMA()
2184 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Receive_DMA()
2187 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Receive_DMA()
2190 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2191 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2194 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Master_Receive_DMA()
2196 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Master_Receive_DMA()
2199 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Master_Receive_DMA()
2202 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Master_Receive_DMA()
2203 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Master_Receive_DMA()
2206 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Master_Receive_DMA()
2208 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Master_Receive_DMA()
2213 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2214 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2217 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Receive_DMA()
2220 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2227 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Receive_DMA()
2228 hi2c->XferSize); in HAL_I2C_Master_Receive_DMA()
2234 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2235 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2238 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Receive_DMA()
2241 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2251 if ((hi2c->Instance->AUTOCR & I2C_AUTOCR_TRIGEN) == I2C_AUTOCR_TRIGEN) in HAL_I2C_Master_Receive_DMA()
2253 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, in HAL_I2C_Master_Receive_DMA()
2258 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_DMA()
2262 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Receive_DMA()
2265 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2271 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Receive_DMA()
2274 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Receive_DMA()
2279 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2280 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2283 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Receive_DMA()
2286 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2294 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_DMA()
2298 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive_DMA()
2302 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2311 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_DMA()
2330 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_DMA() argument
2334 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_DMA()
2338 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2342 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2344 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_DMA()
2345 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_DMA()
2346 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_DMA()
2349 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_DMA()
2350 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_DMA()
2351 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_DMA()
2352 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_DMA()
2353 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2356 if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) in HAL_I2C_Slave_Transmit_DMA()
2360 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit_DMA()
2363 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit_DMA()
2365 hi2c->XferCount--; in HAL_I2C_Slave_Transmit_DMA()
2366 hi2c->XferSize--; in HAL_I2C_Slave_Transmit_DMA()
2369 if (hi2c->XferCount != 0U) in HAL_I2C_Slave_Transmit_DMA()
2371 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Transmit_DMA()
2374 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Transmit_DMA()
2377 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Transmit_DMA()
2380 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2381 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2384 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Slave_Transmit_DMA()
2386 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Slave_Transmit_DMA()
2389 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Slave_Transmit_DMA()
2392 …hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)hi2c->pBu… in HAL_I2C_Slave_Transmit_DMA()
2395 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Slave_Transmit_DMA()
2396 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Slave_Transmit_DMA()
2398 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Slave_Transmit_DMA()
2403 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2404 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2407 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2410 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2417 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, in HAL_I2C_Slave_Transmit_DMA()
2418 … (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Transmit_DMA()
2419 hi2c->XferSize); in HAL_I2C_Slave_Transmit_DMA()
2425 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2426 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2429 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2432 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2440 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2443 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2449 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2452 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Transmit_DMA()
2457 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2458 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2461 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2464 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2472 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2475 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2481 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2500 HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_DMA() argument
2504 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_DMA()
2508 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive_DMA()
2512 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2514 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_DMA()
2515 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_DMA()
2516 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_DMA()
2519 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_DMA()
2520 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_DMA()
2521 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_DMA()
2522 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_DMA()
2523 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Receive_DMA()
2525 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Receive_DMA()
2528 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Receive_DMA()
2531 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Receive_DMA()
2534 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2535 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2538 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Slave_Receive_DMA()
2540 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Slave_Receive_DMA()
2543 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Slave_Receive_DMA()
2546 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Slave_Receive_DMA()
2547 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive_DMA()
2550 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Slave_Receive_DMA()
2552 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Slave_Receive_DMA()
2557 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2558 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2561 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Receive_DMA()
2564 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2571 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Receive_DMA()
2572 hi2c->XferSize); in HAL_I2C_Slave_Receive_DMA()
2578 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2579 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2582 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Receive_DMA()
2585 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2593 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_DMA()
2596 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2602 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_DMA()
2605 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Receive_DMA()
2610 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2611 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2614 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Receive_DMA()
2617 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2644 HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre… in HAL_I2C_Mem_Write() argument
2652 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write()
2656 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write()
2661 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write()
2666 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2671 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write()
2672 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write()
2673 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write()
2676 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write()
2677 hi2c->XferCount = Size; in HAL_I2C_Mem_Write()
2678 hi2c->XferISR = NULL; in HAL_I2C_Mem_Write()
2681 …if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2684 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2689 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2691 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2692 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2696 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2697 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2703 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2709 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Mem_Write()
2712 hi2c->pBuffPtr++; in HAL_I2C_Mem_Write()
2714 hi2c->XferCount--; in HAL_I2C_Mem_Write()
2715 hi2c->XferSize--; in HAL_I2C_Mem_Write()
2717 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Write()
2720 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2725 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2727 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2728 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Write()
2733 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2734 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Write()
2739 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Write()
2743 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2749 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Write()
2752 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Write()
2754 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write()
2755 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write()
2758 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2781 HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres… in HAL_I2C_Mem_Read() argument
2789 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read()
2793 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read()
2798 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read()
2803 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2808 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read()
2809 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read()
2810 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read()
2813 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read()
2814 hi2c->XferCount = Size; in HAL_I2C_Mem_Read()
2815 hi2c->XferISR = NULL; in HAL_I2C_Mem_Read()
2818 … if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2821 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2827 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2829 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2830 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2835 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2836 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2843 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2849 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Mem_Read()
2852 hi2c->pBuffPtr++; in HAL_I2C_Mem_Read()
2854 hi2c->XferSize--; in HAL_I2C_Mem_Read()
2855 hi2c->XferCount--; in HAL_I2C_Mem_Read()
2857 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Read()
2860 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2865 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2867 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2868 I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2873 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2874 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2878 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Read()
2882 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2888 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Read()
2891 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Read()
2893 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read()
2894 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read()
2897 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2918 HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Write_IT() argument
2924 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_IT()
2928 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_IT()
2932 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_IT()
2938 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2940 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_IT()
2941 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_IT()
2942 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_IT()
2945 hi2c->XferSize = 0U; in HAL_I2C_Mem_Write_IT()
2946 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_IT()
2947 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_IT()
2948 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_IT()
2949 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Write_IT()
2950 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_IT()
2956 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2959 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_IT()
2965 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2968 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_IT()
2971 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_IT()
2974 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2984 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_IT()
3006 HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd… in HAL_I2C_Mem_Read_IT() argument
3012 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_IT()
3016 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_IT()
3020 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_IT()
3026 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_IT()
3028 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_IT()
3029 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_IT()
3030 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_IT()
3033 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_IT()
3034 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_IT()
3035 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_IT()
3036 hi2c->XferISR = I2C_Mem_ISR_IT; in HAL_I2C_Mem_Read_IT()
3037 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_IT()
3043 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
3046 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_IT()
3052 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_IT()
3055 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_IT()
3058 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_IT()
3061 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_IT()
3071 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_IT()
3094 HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA… in HAL_I2C_Mem_Write_DMA() argument
3102 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_DMA()
3106 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_DMA()
3110 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_DMA()
3116 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3118 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_DMA()
3119 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_DMA()
3120 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_DMA()
3123 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_DMA()
3124 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_DMA()
3125 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_DMA()
3126 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Write_DMA()
3127 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Write_DMA()
3129 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write_DMA()
3131 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write_DMA()
3135 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write_DMA()
3142 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3145 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Write_DMA()
3151 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3154 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Write_DMA()
3157 if (hi2c->hdmatx != NULL) in HAL_I2C_Mem_Write_DMA()
3160 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Mem_Write_DMA()
3163 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Write_DMA()
3166 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3167 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3170 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Mem_Write_DMA()
3172 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Mem_Write_DMA()
3175 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Mem_Write_DMA()
3178 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Mem_Write_DMA()
3181 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Mem_Write_DMA()
3182 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Mem_Write_DMA()
3184 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Mem_Write_DMA()
3189 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3190 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3193 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Write_DMA()
3196 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3203 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Mem_Write_DMA()
3204 hi2c->XferSize); in HAL_I2C_Mem_Write_DMA()
3210 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3211 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3214 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Write_DMA()
3217 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3225 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in HAL_I2C_Mem_Write_DMA()
3228 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3237 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_DMA()
3242 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3243 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3246 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Write_DMA()
3249 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3274 HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Read_DMA() argument
3282 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_DMA()
3286 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_DMA()
3290 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_DMA()
3296 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3298 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_DMA()
3299 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_DMA()
3300 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_DMA()
3303 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_DMA()
3304 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_DMA()
3305 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_DMA()
3306 hi2c->XferISR = I2C_Mem_ISR_DMA; in HAL_I2C_Mem_Read_DMA()
3307 hi2c->Devaddress = DevAddress; in HAL_I2C_Mem_Read_DMA()
3309 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read_DMA()
3311 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read_DMA()
3315 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read_DMA()
3322 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3325 hi2c->Memaddress = 0xFFFFFFFFU; in HAL_I2C_Mem_Read_DMA()
3331 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3334 hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); in HAL_I2C_Mem_Read_DMA()
3337 if (hi2c->hdmarx != NULL) in HAL_I2C_Mem_Read_DMA()
3340 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Mem_Read_DMA()
3343 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Read_DMA()
3346 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3347 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3350 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Mem_Read_DMA()
3352 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Mem_Read_DMA()
3355 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Mem_Read_DMA()
3358 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Mem_Read_DMA()
3359 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Mem_Read_DMA()
3362 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Mem_Read_DMA()
3364 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Mem_Read_DMA()
3369 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3370 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3373 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Read_DMA()
3376 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3383 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Mem_Read_DMA()
3384 hi2c->XferSize); in HAL_I2C_Mem_Read_DMA()
3390 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3391 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3394 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Read_DMA()
3397 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3405 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in HAL_I2C_Mem_Read_DMA()
3408 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3417 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Read_DMA()
3422 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3423 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3426 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Read_DMA()
3429 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3454 HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria… in HAL_I2C_IsDeviceReady() argument
3466 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_IsDeviceReady()
3468 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_IsDeviceReady()
3474 __HAL_LOCK(hi2c); in HAL_I2C_IsDeviceReady()
3476 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_IsDeviceReady()
3477 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3482 hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); in HAL_I2C_IsDeviceReady()
3488 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3489 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3498 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3501 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3504 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3510 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3511 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3515 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) in HAL_I2C_IsDeviceReady()
3518 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3521 if (hi2c->ErrorCode == HAL_I2C_ERROR_AF) in HAL_I2C_IsDeviceReady()
3524 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3527 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3539 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3542 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3545 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3556 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3559 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3566 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3581 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3584 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3587 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3609 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Transmit_IT() argument
3618 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_IT()
3621 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3623 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_IT()
3624 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_IT()
3625 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_IT()
3628 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_IT()
3629 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_IT()
3630 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3631 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_IT()
3634 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3636 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_IT()
3641 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_IT()
3642 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3648 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_IT()
3656 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3659 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3661 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3666 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_IT()
3669 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3678 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_IT()
3701 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin… in HAL_I2C_Master_Seq_Transmit_DMA() argument
3711 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_DMA()
3714 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3716 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_DMA()
3717 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_DMA()
3718 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3721 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_DMA()
3722 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_DMA()
3723 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3724 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3727 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3729 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_DMA()
3734 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_DMA()
3735 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3741 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_DMA()
3749 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3752 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3754 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3758 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Transmit_DMA()
3760 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3763 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Seq_Transmit_DMA()
3766 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Transmit_DMA()
3769 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3770 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3773 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Master_Seq_Transmit_DMA()
3775 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3778 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3781 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Master_Seq_Transmit_DMA()
3784 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Master_Seq_Transmit_DMA()
3785 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Master_Seq_Transmit_DMA()
3787 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Master_Seq_Transmit_DMA()
3792 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3793 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3796 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Transmit_DMA()
3799 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3806 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Seq_Transmit_DMA()
3807 hi2c->XferSize); in HAL_I2C_Master_Seq_Transmit_DMA()
3813 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3814 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3817 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Transmit_DMA()
3820 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3828 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3831 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3834 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3840 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3843 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Seq_Transmit_DMA()
3848 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3849 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3852 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3855 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3863 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_DMA()
3867 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Transmit_DMA()
3871 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3880 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3904 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8… in HAL_I2C_Master_Seq_Receive_IT() argument
3913 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_IT()
3916 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3918 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_IT()
3919 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_IT()
3920 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_IT()
3923 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_IT()
3924 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_IT()
3925 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3926 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_IT()
3929 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3931 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_IT()
3936 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_IT()
3937 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3943 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_IT()
3951 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3954 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3956 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3961 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_IT()
3964 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3969 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_IT()
3992 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Receive_DMA() argument
4002 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_DMA()
4005 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4007 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_DMA()
4008 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_DMA()
4009 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
4012 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_DMA()
4013 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_DMA()
4014 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
4015 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
4018 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
4020 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_DMA()
4025 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_DMA()
4026 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
4032 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_DMA()
4040 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4043 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
4045 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
4049 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Receive_DMA()
4051 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
4054 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Seq_Receive_DMA()
4057 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Receive_DMA()
4060 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
4061 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
4064 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Master_Seq_Receive_DMA()
4066 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
4069 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Master_Seq_Receive_DMA()
4072 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Master_Seq_Receive_DMA()
4073 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Master_Seq_Receive_DMA()
4076 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Master_Seq_Receive_DMA()
4078 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Master_Seq_Receive_DMA()
4082 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
4083 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
4086 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Receive_DMA()
4089 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4096 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Seq_Receive_DMA()
4097 hi2c->XferSize); in HAL_I2C_Master_Seq_Receive_DMA()
4103 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
4104 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
4107 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Receive_DMA()
4110 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4118 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_DMA()
4121 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Receive_DMA()
4124 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4130 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Receive_DMA()
4133 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Seq_Receive_DMA()
4138 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
4139 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
4142 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
4145 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4153 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_DMA()
4157 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Receive_DMA()
4161 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
4170 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_DMA()
4192 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
4201 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4205 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_IT()
4210 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4213 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
4217 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4220 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4224 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_IT()
4226 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_IT()
4228 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_IT()
4232 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_IT()
4235 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_IT()
4238 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_IT()
4245 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_IT()
4246 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_IT()
4247 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_IT()
4250 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_IT()
4253 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_IT()
4254 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_IT()
4255 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_IT()
4256 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_IT()
4257 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Transmit_IT()
4259 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4260 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_IT()
4264 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4268 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
4274 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4295 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t … in HAL_I2C_Slave_Seq_Transmit_DMA() argument
4305 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4309 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4314 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4317 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4321 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4324 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4326 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4329 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4331 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4335 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4338 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4341 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4346 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4348 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4350 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4353 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4357 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4360 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4363 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4373 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4374 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4375 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4378 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_DMA()
4381 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_DMA()
4382 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_DMA()
4383 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_DMA()
4384 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_DMA()
4385 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4387 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4390 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Seq_Transmit_DMA()
4393 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Transmit_DMA()
4396 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4397 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4400 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Slave_Seq_Transmit_DMA()
4402 if (hi2c->hdmatx->LinkedListQueue != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4405 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Slave_Seq_Transmit_DMA()
4408 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Slave_Seq_Transmit_DMA()
4411 hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] \ in HAL_I2C_Slave_Seq_Transmit_DMA()
4412 = (uint32_t)&hi2c->Instance->TXDR; in HAL_I2C_Slave_Seq_Transmit_DMA()
4414 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4419 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4420 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4423 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4426 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4433 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Seq_Transmit_DMA()
4434 hi2c->XferSize); in HAL_I2C_Slave_Seq_Transmit_DMA()
4440 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4441 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4444 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4447 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4455 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Transmit_DMA()
4458 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Transmit_DMA()
4463 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4464 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4467 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4470 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4475 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4476 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Transmit_DMA()
4480 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4484 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4487 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4493 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4514 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
4523 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4527 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_IT()
4532 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4535 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4539 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4542 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4545 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_IT()
4547 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_IT()
4550 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_IT()
4554 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_IT()
4557 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_IT()
4560 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_IT()
4567 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_IT()
4568 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_IT()
4569 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_IT()
4572 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_IT()
4575 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_IT()
4576 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_IT()
4577 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_IT()
4578 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_IT()
4579 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Receive_IT()
4581 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4582 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_IT()
4586 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4590 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4596 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4617 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
4627 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4631 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4636 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4639 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4643 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4646 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4648 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4651 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4653 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4657 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4660 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4663 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_DMA()
4668 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4670 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4672 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4675 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4679 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4682 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4685 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4695 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4696 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_DMA()
4697 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4700 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_DMA()
4703 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_DMA()
4704 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_DMA()
4705 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_DMA()
4706 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_DMA()
4707 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4709 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4712 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Seq_Receive_DMA()
4715 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Receive_DMA()
4718 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4719 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4722 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_I2C_Slave_Seq_Receive_DMA()
4724 if (hi2c->hdmarx->LinkedListQueue != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4727 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in HAL_I2C_Slave_Seq_Receive_DMA()
4730 hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] \ in HAL_I2C_Slave_Seq_Receive_DMA()
4731 = (uint32_t)&hi2c->Instance->RXDR; in HAL_I2C_Slave_Seq_Receive_DMA()
4734 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)pData; in HAL_I2C_Slave_Seq_Receive_DMA()
4736 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4741 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4742 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4745 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4748 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4755 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Seq_Receive_DMA()
4756 hi2c->XferSize); in HAL_I2C_Slave_Seq_Receive_DMA()
4762 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4763 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4766 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4769 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4777 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Receive_DMA()
4780 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Receive_DMA()
4785 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4786 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4789 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4792 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4797 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4798 if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) in HAL_I2C_Slave_Seq_Receive_DMA()
4802 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4806 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4809 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4815 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4832 HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_EnableListen_IT() argument
4834 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_EnableListen_IT()
4836 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_EnableListen_IT()
4837 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_EnableListen_IT()
4840 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_EnableListen_IT()
4856 HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_DisableListen_IT() argument
4862 if (hi2c->State == HAL_I2C_STATE_LISTEN) in HAL_I2C_DisableListen_IT()
4864 tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; in HAL_I2C_DisableListen_IT()
4865 hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); in HAL_I2C_DisableListen_IT()
4866 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_DisableListen_IT()
4867 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DisableListen_IT()
4868 hi2c->XferISR = NULL; in HAL_I2C_DisableListen_IT()
4871 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_DisableListen_IT()
4889 HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) in HAL_I2C_Master_Abort_IT() argument
4891 HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; in HAL_I2C_Master_Abort_IT()
4896 __HAL_LOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4899 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in HAL_I2C_Master_Abort_IT()
4901 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Abort_IT()
4902 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in HAL_I2C_Master_Abort_IT()
4904 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in HAL_I2C_Master_Abort_IT()
4906 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Abort_IT()
4907 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in HAL_I2C_Master_Abort_IT()
4915 hi2c->State = HAL_I2C_STATE_ABORT; in HAL_I2C_Master_Abort_IT()
4919 I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); in HAL_I2C_Master_Abort_IT()
4922 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4927 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in HAL_I2C_Master_Abort_IT()
4953 void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_I2C_EV_IRQHandler() argument
4956 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_EV_IRQHandler()
4957 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_EV_IRQHandler()
4960 if (hi2c->XferISR != NULL) in HAL_I2C_EV_IRQHandler()
4962 hi2c->XferISR(hi2c, itflags, itsources); in HAL_I2C_EV_IRQHandler()
4972 void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) in HAL_I2C_ER_IRQHandler() argument
4974 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_ER_IRQHandler()
4975 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_ER_IRQHandler()
4982 hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; in HAL_I2C_ER_IRQHandler()
4985 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in HAL_I2C_ER_IRQHandler()
4992 hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; in HAL_I2C_ER_IRQHandler()
4995 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in HAL_I2C_ER_IRQHandler()
5002 hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; in HAL_I2C_ER_IRQHandler()
5005 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in HAL_I2C_ER_IRQHandler()
5009 tmperror = hi2c->ErrorCode; in HAL_I2C_ER_IRQHandler()
5014 I2C_ITError(hi2c, tmperror); in HAL_I2C_ER_IRQHandler()
5024 __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterTxCpltCallback() argument
5027 UNUSED(hi2c); in HAL_I2C_MasterTxCpltCallback()
5040 __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterRxCpltCallback() argument
5043 UNUSED(hi2c); in HAL_I2C_MasterRxCpltCallback()
5055 __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveTxCpltCallback() argument
5058 UNUSED(hi2c); in HAL_I2C_SlaveTxCpltCallback()
5071 __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveRxCpltCallback() argument
5074 UNUSED(hi2c); in HAL_I2C_SlaveRxCpltCallback()
5089 __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM… in HAL_I2C_AddrCallback() argument
5092 UNUSED(hi2c); in HAL_I2C_AddrCallback()
5107 __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ListenCpltCallback() argument
5110 UNUSED(hi2c); in HAL_I2C_ListenCpltCallback()
5123 __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemTxCpltCallback() argument
5126 UNUSED(hi2c); in HAL_I2C_MemTxCpltCallback()
5139 __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemRxCpltCallback() argument
5142 UNUSED(hi2c); in HAL_I2C_MemRxCpltCallback()
5155 __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ErrorCallback() argument
5158 UNUSED(hi2c); in HAL_I2C_ErrorCallback()
5171 __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_AbortCpltCallback() argument
5174 UNUSED(hi2c); in HAL_I2C_AbortCpltCallback()
5206 HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetState() argument
5209 return hi2c->State; in HAL_I2C_GetState()
5218 HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetMode() argument
5220 return hi2c->Mode; in HAL_I2C_GetMode()
5229 uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) in HAL_I2C_GetError() argument
5231 return hi2c->ErrorCode; in HAL_I2C_GetError()
5254 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_IT() argument
5261 __HAL_LOCK(hi2c); in I2C_Master_ISR_IT()
5267 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_IT()
5272 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_IT()
5275 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_IT()
5284 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Master_ISR_IT()
5287 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5289 hi2c->XferSize--; in I2C_Master_ISR_IT()
5290 hi2c->XferCount--; in I2C_Master_ISR_IT()
5296 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Master_ISR_IT()
5299 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5301 hi2c->XferSize--; in I2C_Master_ISR_IT()
5302 hi2c->XferCount--; in I2C_Master_ISR_IT()
5307 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Master_ISR_IT()
5309 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_IT()
5311 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_IT()
5313 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_IT()
5314 … I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5318 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_IT()
5319 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5321 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5322 hi2c->XferOptions, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5326 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5334 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5337 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5343 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5350 if (hi2c->XferCount == 0U) in I2C_Master_ISR_IT()
5352 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5355 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5358 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_IT()
5363 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5371 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5383 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Master_ISR_IT()
5387 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_IT()
5400 static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_IT() argument
5407 __HAL_LOCK(hi2c); in I2C_Mem_ISR_IT()
5413 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_IT()
5418 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_IT()
5421 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_IT()
5430 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Mem_ISR_IT()
5433 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5435 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5436 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5441 if (hi2c->Memaddress == 0xFFFFFFFFU) in I2C_Mem_ISR_IT()
5444 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Mem_ISR_IT()
5447 hi2c->pBuffPtr++; in I2C_Mem_ISR_IT()
5449 hi2c->XferSize--; in I2C_Mem_ISR_IT()
5450 hi2c->XferCount--; in I2C_Mem_ISR_IT()
5455 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_IT()
5458 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_IT()
5464 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 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()
5469 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5474 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5475 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5483 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_IT()
5490 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_IT()
5493 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_Mem_ISR_IT()
5495 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_IT()
5500 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_IT()
5502 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_IT()
5505 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5510 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_IT()
5513 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_IT()
5526 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Mem_ISR_IT()
5530 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_IT()
5543 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_IT() argument
5546 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_IT()
5550 __HAL_LOCK(hi2c); in I2C_Slave_ISR_IT()
5557 I2C_ITSlaveCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5566 if (hi2c->XferCount == 0U) in I2C_Slave_ISR_IT()
5568 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_IT()
5573 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5575 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_IT()
5578 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5581 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_IT()
5585 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5590 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5597 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5600 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_IT()
5605 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_IT()
5612 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5615 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Slave_ISR_IT()
5618 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5620 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5621 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5624 if ((hi2c->XferCount == 0U) && \ in I2C_Slave_ISR_IT()
5628 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5634 I2C_ITAddrCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5643 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5646 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Slave_ISR_IT()
5649 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5651 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5652 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5660 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5670 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_IT()
5684 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_DMA() argument
5691 __HAL_LOCK(hi2c); in I2C_Master_ISR_DMA()
5697 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_DMA()
5700 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_DMA()
5705 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Master_ISR_DMA()
5708 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_DMA()
5714 __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); in I2C_Master_ISR_DMA()
5716 if (hi2c->XferCount != 0U) in I2C_Master_ISR_DMA()
5719 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_DMA()
5722 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_DMA()
5724 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_DMA()
5729 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_DMA()
5730 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5732 xfermode = hi2c->XferOptions; in I2C_Master_ISR_DMA()
5741 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); in I2C_Master_ISR_DMA()
5744 hi2c->XferCount -= hi2c->XferSize; in I2C_Master_ISR_DMA()
5747 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Master_ISR_DMA()
5749 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Master_ISR_DMA()
5753 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Master_ISR_DMA()
5759 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5762 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5768 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5775 if (hi2c->XferCount == 0U) in I2C_Master_ISR_DMA()
5777 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5780 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5783 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_DMA()
5788 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5796 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5803 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Master_ISR_DMA()
5811 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_DMA()
5824 static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Mem_ISR_DMA() argument
5830 __HAL_LOCK(hi2c); in I2C_Mem_ISR_DMA()
5836 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Mem_ISR_DMA()
5839 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Mem_ISR_DMA()
5844 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Mem_ISR_DMA()
5847 I2C_Flush_TXDR(hi2c); in I2C_Mem_ISR_DMA()
5853 hi2c->Instance->TXDR = hi2c->Memaddress; in I2C_Mem_ISR_DMA()
5856 hi2c->Memaddress = 0xFFFFFFFFU; in I2C_Mem_ISR_DMA()
5862 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_DMA()
5865 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5867 if (hi2c->XferCount != 0U) in I2C_Mem_ISR_DMA()
5870 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5872 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5873 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5878 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5879 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5884 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5887 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5889 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5893 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5900 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Mem_ISR_DMA()
5907 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_Mem_ISR_DMA()
5910 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in I2C_Mem_ISR_DMA()
5912 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5917 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Mem_ISR_DMA()
5919 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Mem_ISR_DMA()
5922 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5927 hi2c->XferSize = hi2c->XferCount; in I2C_Mem_ISR_DMA()
5930 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, in I2C_Mem_ISR_DMA()
5935 hi2c->XferCount -= hi2c->XferSize; in I2C_Mem_ISR_DMA()
5938 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Mem_ISR_DMA()
5940 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Mem_ISR_DMA()
5944 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Mem_ISR_DMA()
5951 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Mem_ISR_DMA()
5959 __HAL_UNLOCK(hi2c); in I2C_Mem_ISR_DMA()
5972 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_DMA() argument
5975 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_DMA()
5980 __HAL_LOCK(hi2c); in I2C_Slave_ISR_DMA()
5987 I2C_ITSlaveCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
6000 if (hi2c->hdmarx != NULL) in I2C_Slave_ISR_DMA()
6004 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) in I2C_Slave_ISR_DMA()
6012 if (hi2c->hdmatx != NULL) in I2C_Slave_ISR_DMA()
6016 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) in I2C_Slave_ISR_DMA()
6025 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_DMA()
6030 I2C_ITListenCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
6032 … else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_DMA()
6035 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
6038 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_DMA()
6042 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_DMA()
6047 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
6054 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
6057 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_DMA()
6060 tmpstate = hi2c->State; in I2C_Slave_ISR_DMA()
6066 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_Slave_ISR_DMA()
6070 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_Slave_ISR_DMA()
6078 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_DMA()
6085 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
6091 I2C_ITAddrCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
6099 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_DMA()
6117 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryWrite() argument
6121 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in I2C_RequestMemoryWrite()
6124 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
6133 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
6139 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryWrite()
6142 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
6148 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
6152 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
6172 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryRead() argument
6176 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in I2C_RequestMemoryRead()
6179 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
6188 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
6194 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryRead()
6197 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
6203 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
6207 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
6221 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITAddrCplt() argument
6232 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_ITAddrCplt()
6234 transferdirection = I2C_GET_DIR(hi2c); in I2C_ITAddrCplt()
6235 slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); in I2C_ITAddrCplt()
6236 ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); in I2C_ITAddrCplt()
6237 ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); in I2C_ITAddrCplt()
6240 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in I2C_ITAddrCplt()
6245 hi2c->AddrEventCount++; in I2C_ITAddrCplt()
6246 if (hi2c->AddrEventCount == 2U) in I2C_ITAddrCplt()
6249 hi2c->AddrEventCount = 0U; in I2C_ITAddrCplt()
6252 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
6255 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6259 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6261 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6270 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
6273 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6277 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6279 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6287 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
6290 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6294 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6296 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
6304 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
6307 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
6316 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITMasterSeqCplt() argument
6319 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterSeqCplt()
6323 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterSeqCplt()
6325 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
6326 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterSeqCplt()
6327 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
6330 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterSeqCplt()
6333 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
6337 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6339 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6345 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
6346 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterSeqCplt()
6347 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
6350 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterSeqCplt()
6353 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
6357 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6359 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
6369 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITSlaveSeqCplt() argument
6371 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveSeqCplt()
6374 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveSeqCplt()
6381 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveSeqCplt()
6386 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveSeqCplt()
6394 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in I2C_ITSlaveSeqCplt()
6397 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
6398 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveSeqCplt()
6401 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITSlaveSeqCplt()
6404 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
6408 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6410 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6414 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in I2C_ITSlaveSeqCplt()
6417 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
6418 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveSeqCplt()
6421 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITSlaveSeqCplt()
6424 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
6428 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6430 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
6445 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITMasterCplt() argument
6452 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITMasterCplt()
6455 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6457 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterCplt()
6458 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterCplt()
6460 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6462 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterCplt()
6463 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterCplt()
6471 I2C_RESET_CR2(hi2c); in I2C_ITMasterCplt()
6474 hi2c->XferISR = NULL; in I2C_ITMasterCplt()
6475 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITMasterCplt()
6480 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITMasterCplt()
6483 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITMasterCplt()
6487 if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) in I2C_ITMasterCplt()
6490 tmpreg = (uint8_t)hi2c->Instance->RXDR; in I2C_ITMasterCplt()
6495 I2C_Flush_TXDR(hi2c); in I2C_ITMasterCplt()
6498 tmperror = hi2c->ErrorCode; in I2C_ITMasterCplt()
6501 if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) in I2C_ITMasterCplt()
6504 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITMasterCplt()
6507 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6509 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6510 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6512 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6514 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6517 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6521 hi2c->MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6523 HAL_I2C_MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6528 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6531 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6535 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6537 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6542 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6544 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6545 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6547 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6549 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6552 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6556 hi2c->MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6558 HAL_I2C_MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6563 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6566 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6570 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6572 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6588 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITSlaveCplt() argument
6590 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveCplt()
6592 uint32_t tmpoptions = hi2c->XferOptions; in I2C_ITSlaveCplt()
6593 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITSlaveCplt()
6596 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITSlaveCplt()
6601 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in I2C_ITSlaveCplt()
6602 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveCplt()
6606 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6607 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveCplt()
6611 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6612 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6620 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_ITSlaveCplt()
6623 I2C_RESET_CR2(hi2c); in I2C_ITSlaveCplt()
6626 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6633 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveCplt()
6635 if (hi2c->hdmatx != NULL) in I2C_ITSlaveCplt()
6637 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); in I2C_ITSlaveCplt()
6643 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveCplt()
6645 if (hi2c->hdmarx != NULL) in I2C_ITSlaveCplt()
6647 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); in I2C_ITSlaveCplt()
6663 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITSlaveCplt()
6666 hi2c->pBuffPtr++; in I2C_ITSlaveCplt()
6668 if ((hi2c->XferSize > 0U)) in I2C_ITSlaveCplt()
6670 hi2c->XferSize--; in I2C_ITSlaveCplt()
6671 hi2c->XferCount--; in I2C_ITSlaveCplt()
6676 if (hi2c->XferCount != 0U) in I2C_ITSlaveCplt()
6679 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6689 if (hi2c->XferCount == 0U) in I2C_ITSlaveCplt()
6691 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_ITSlaveCplt()
6696 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6698 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_ITSlaveCplt()
6701 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6704 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6708 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6713 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6720 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITSlaveCplt()
6723 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6728 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6733 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveCplt()
6734 hi2c->XferISR = NULL; in I2C_ITSlaveCplt()
6736 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) in I2C_ITSlaveCplt()
6739 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6742 if (hi2c->State == HAL_I2C_STATE_LISTEN) in I2C_ITSlaveCplt()
6745 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6748 else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_ITSlaveCplt()
6751 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6753 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITSlaveCplt()
6754 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6755 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6758 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6762 hi2c->ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6764 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6768 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITSlaveCplt()
6770 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6771 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6774 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6778 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6780 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6785 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6786 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6789 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6793 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6795 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6806 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITListenCplt() argument
6809 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITListenCplt()
6810 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITListenCplt()
6811 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITListenCplt()
6812 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITListenCplt()
6813 hi2c->XferISR = NULL; in I2C_ITListenCplt()
6819 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITListenCplt()
6822 hi2c->pBuffPtr++; in I2C_ITListenCplt()
6824 if ((hi2c->XferSize > 0U)) in I2C_ITListenCplt()
6826 hi2c->XferSize--; in I2C_ITListenCplt()
6827 hi2c->XferCount--; in I2C_ITListenCplt()
6830 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITListenCplt()
6835 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITListenCplt()
6838 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITListenCplt()
6841 __HAL_UNLOCK(hi2c); in I2C_ITListenCplt()
6845 hi2c->ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6847 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6857 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) in I2C_ITError() argument
6859 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITError()
6866 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITError()
6867 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITError()
6868 hi2c->XferCount = 0U; in I2C_ITError()
6871 hi2c->ErrorCode |= ErrorCode; in I2C_ITError()
6879 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6882 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITError()
6883 hi2c->XferISR = I2C_Slave_ISR_IT; in I2C_ITError()
6888 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6891 I2C_Flush_TXDR(hi2c); in I2C_ITError()
6895 if (hi2c->State != HAL_I2C_STATE_ABORT) in I2C_ITError()
6898 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITError()
6901 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) in I2C_ITError()
6903 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_ITError()
6905 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITError()
6906 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITError()
6910 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITError()
6914 hi2c->XferISR = NULL; in I2C_ITError()
6919 tmppreviousstate = hi2c->PreviousState; in I2C_ITError()
6921 if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ in I2C_ITError()
6924 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in I2C_ITError()
6926 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITError()
6929 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) in I2C_ITError()
6933 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6936 __HAL_UNLOCK(hi2c); in I2C_ITError()
6939 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in I2C_ITError()
6942 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in I2C_ITError()
6947 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6951 else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ in I2C_ITError()
6954 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in I2C_ITError()
6956 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITError()
6959 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) in I2C_ITError()
6963 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6966 __HAL_UNLOCK(hi2c); in I2C_ITError()
6969 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in I2C_ITError()
6972 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in I2C_ITError()
6977 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6983 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6992 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) in I2C_TreatErrorCallback() argument
6994 if (hi2c->State == HAL_I2C_STATE_ABORT) in I2C_TreatErrorCallback()
6996 hi2c->State = HAL_I2C_STATE_READY; in I2C_TreatErrorCallback()
6997 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
7000 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
7004 hi2c->AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
7006 HAL_I2C_AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
7011 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
7014 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
7018 hi2c->ErrorCallback(hi2c); in I2C_TreatErrorCallback()
7020 HAL_I2C_ErrorCallback(hi2c); in I2C_TreatErrorCallback()
7030 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) in I2C_Flush_TXDR() argument
7034 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) in I2C_Flush_TXDR()
7036 hi2c->Instance->TXDR = 0x00U; in I2C_Flush_TXDR()
7040 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) in I2C_Flush_TXDR()
7042 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); in I2C_Flush_TXDR()
7056 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterTransmitCplt() local
7059 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMAMasterTransmitCplt()
7062 if (hi2c->XferCount == 0U) in I2C_DMAMasterTransmitCplt()
7065 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterTransmitCplt()
7071 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterTransmitCplt()
7074 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterTransmitCplt()
7076 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterTransmitCplt()
7080 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterTransmitCplt()
7084 if ((hi2c->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in I2C_DMAMasterTransmitCplt()
7086 if (hi2c->hdmatx->LinkedListQueue != NULL) in I2C_DMAMasterTransmitCplt()
7089 … hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in I2C_DMAMasterTransmitCplt()
7092 …hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)hi2c->pBu… in I2C_DMAMasterTransmitCplt()
7095 …hi2c->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hi2c->In… in I2C_DMAMasterTransmitCplt()
7097 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmatx); in I2C_DMAMasterTransmitCplt()
7102 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterTransmitCplt()
7107 …dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance… in I2C_DMAMasterTransmitCplt()
7108 hi2c->XferSize); in I2C_DMAMasterTransmitCplt()
7114 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterTransmitCplt()
7119 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterTransmitCplt()
7133 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveTransmitCplt() local
7134 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveTransmitCplt()
7139 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMASlaveTransmitCplt()
7143 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveTransmitCplt()
7163 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterReceiveCplt() local
7166 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMAMasterReceiveCplt()
7169 if (hi2c->XferCount == 0U) in I2C_DMAMasterReceiveCplt()
7172 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterReceiveCplt()
7178 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterReceiveCplt()
7181 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterReceiveCplt()
7183 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterReceiveCplt()
7187 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterReceiveCplt()
7191 if ((hi2c->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in I2C_DMAMasterReceiveCplt()
7193 if (hi2c->hdmarx->LinkedListQueue != NULL) in I2C_DMAMasterReceiveCplt()
7196 … hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hi2c->XferSize; in I2C_DMAMasterReceiveCplt()
7199 …hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)&hi2c->In… in I2C_DMAMasterReceiveCplt()
7202 …hi2c->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)hi2c->pBu… in I2C_DMAMasterReceiveCplt()
7204 dmaxferstatus = HAL_DMAEx_List_Start_IT(hi2c->hdmarx); in I2C_DMAMasterReceiveCplt()
7209 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterReceiveCplt()
7214 …dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pB… in I2C_DMAMasterReceiveCplt()
7215 hi2c->XferSize); in I2C_DMAMasterReceiveCplt()
7221 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterReceiveCplt()
7226 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterReceiveCplt()
7240 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveReceiveCplt() local
7241 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveReceiveCplt()
7243 if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ in I2C_DMASlaveReceiveCplt()
7247 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMASlaveReceiveCplt()
7250 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveReceiveCplt()
7269 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAError() local
7272 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_DMAError()
7275 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAError()
7288 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAAbort() local
7291 if (hi2c->hdmatx != NULL) in I2C_DMAAbort()
7293 hi2c->hdmatx->XferAbortCallback = NULL; in I2C_DMAAbort()
7295 if (hi2c->hdmarx != NULL) in I2C_DMAAbort()
7297 hi2c->hdmarx->XferAbortCallback = NULL; in I2C_DMAAbort()
7300 I2C_TreatErrorCallback(hi2c); in I2C_DMAAbort()
7316 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta… in I2C_WaitOnFlagUntilTimeout() argument
7319 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) in I2C_WaitOnFlagUntilTimeout()
7322 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnFlagUntilTimeout()
7332 if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) in I2C_WaitOnFlagUntilTimeout()
7334 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnFlagUntilTimeout()
7335 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnFlagUntilTimeout()
7336 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnFlagUntilTimeout()
7339 __HAL_UNLOCK(hi2c); in I2C_WaitOnFlagUntilTimeout()
7356 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnTXISFlagUntilTimeout() argument
7359 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) in I2C_WaitOnTXISFlagUntilTimeout()
7362 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnTXISFlagUntilTimeout()
7372 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) in I2C_WaitOnTXISFlagUntilTimeout()
7374 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnTXISFlagUntilTimeout()
7375 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnTXISFlagUntilTimeout()
7376 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnTXISFlagUntilTimeout()
7379 __HAL_UNLOCK(hi2c); in I2C_WaitOnTXISFlagUntilTimeout()
7397 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnSTOPFlagUntilTimeout() argument
7400 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_WaitOnSTOPFlagUntilTimeout()
7403 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnSTOPFlagUntilTimeout()
7411 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) in I2C_WaitOnSTOPFlagUntilTimeout()
7413 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnSTOPFlagUntilTimeout()
7414 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnSTOPFlagUntilTimeout()
7415 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnSTOPFlagUntilTimeout()
7418 __HAL_UNLOCK(hi2c); in I2C_WaitOnSTOPFlagUntilTimeout()
7435 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnRXNEFlagUntilTimeout() argument
7440 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) && (status == HAL_OK)) in I2C_WaitOnRXNEFlagUntilTimeout()
7443 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnRXNEFlagUntilTimeout()
7449 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) && (status == HAL_OK)) in I2C_WaitOnRXNEFlagUntilTimeout()
7453 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) in I2C_WaitOnRXNEFlagUntilTimeout()
7461 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_WaitOnRXNEFlagUntilTimeout()
7463 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_WaitOnRXNEFlagUntilTimeout()
7464 hi2c->ErrorCode = HAL_I2C_ERROR_AF; in I2C_WaitOnRXNEFlagUntilTimeout()
7467 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_WaitOnRXNEFlagUntilTimeout()
7470 I2C_RESET_CR2(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7472 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7473 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7476 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7482 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7489 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) in I2C_WaitOnRXNEFlagUntilTimeout()
7491 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnRXNEFlagUntilTimeout()
7492 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7495 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7512 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti… in I2C_IsErrorOccurred() argument
7515 uint32_t itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7524 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_IsErrorOccurred()
7528 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) in I2C_IsErrorOccurred()
7535 tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); in I2C_IsErrorOccurred()
7536 tmp2 = hi2c->Mode; in I2C_IsErrorOccurred()
7539 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ in I2C_IsErrorOccurred()
7544 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_IsErrorOccurred()
7550 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_IsErrorOccurred()
7570 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_IsErrorOccurred()
7579 itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7588 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in I2C_IsErrorOccurred()
7599 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in I2C_IsErrorOccurred()
7610 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in I2C_IsErrorOccurred()
7618 I2C_Flush_TXDR(hi2c); in I2C_IsErrorOccurred()
7621 I2C_RESET_CR2(hi2c); in I2C_IsErrorOccurred()
7623 hi2c->ErrorCode |= error_code; in I2C_IsErrorOccurred()
7624 hi2c->State = HAL_I2C_STATE_READY; in I2C_IsErrorOccurred()
7625 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_IsErrorOccurred()
7628 __HAL_UNLOCK(hi2c); in I2C_IsErrorOccurred()
7653 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t… in I2C_TransferConfig() argument
7659 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in I2C_TransferConfig()
7669 MODIFY_REG(hi2c->Instance->CR2, \ in I2C_TransferConfig()
7682 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Enable_IRQ() argument
7687 if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ in I2C_Enable_IRQ()
7688 (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ in I2C_Enable_IRQ()
7689 (hi2c->XferISR != I2C_Mem_ISR_DMA)) in I2C_Enable_IRQ()
7767 __HAL_I2C_ENABLE_IT(hi2c, tmpisr); in I2C_Enable_IRQ()
7777 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Disable_IRQ() argument
7786 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7798 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7832 __HAL_I2C_DISABLE_IT(hi2c, tmpisr); in I2C_Disable_IRQ()
7840 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) in I2C_ConvertOtherXferOptions() argument
7845 if (hi2c->XferOptions == I2C_OTHER_FRAME) in I2C_ConvertOtherXferOptions()
7847 hi2c->XferOptions = I2C_FIRST_FRAME; in I2C_ConvertOtherXferOptions()
7853 else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) in I2C_ConvertOtherXferOptions()
7855 hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; in I2C_ConvertOtherXferOptions()