Lines Matching refs:hi2c

439 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
440 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c);
441 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c);
442 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
443 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
444 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
445 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);
448 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
451 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
456 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
458 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
460 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
462 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
466 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta…
468 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
470 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
472 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
474 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
478 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
479 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
482 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c);
485 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c);
488 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t…
492 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c);
541 HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) in HAL_I2C_Init() argument
544 if (hi2c == NULL) in HAL_I2C_Init()
550 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_Init()
551 assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); in HAL_I2C_Init()
552 assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); in HAL_I2C_Init()
553 assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); in HAL_I2C_Init()
554 assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); in HAL_I2C_Init()
555 assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); in HAL_I2C_Init()
556 assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); in HAL_I2C_Init()
557 assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); in HAL_I2C_Init()
559 if (hi2c->State == HAL_I2C_STATE_RESET) in HAL_I2C_Init()
562 hi2c->Lock = HAL_UNLOCKED; in HAL_I2C_Init()
566hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_Init()
567hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_Init()
568hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_Init()
569hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_Init()
570hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_Init()
571hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_Init()
572hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_Init()
573hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_Init()
574hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_Init()
575hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_Init()
577 if (hi2c->MspInitCallback == NULL) in HAL_I2C_Init()
579 hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_Init()
583 hi2c->MspInitCallback(hi2c); in HAL_I2C_Init()
586 HAL_I2C_MspInit(hi2c); in HAL_I2C_Init()
590 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_Init()
593 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_Init()
597 hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; in HAL_I2C_Init()
601 hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; in HAL_I2C_Init()
604 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) in HAL_I2C_Init()
606 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
610 hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); in HAL_I2C_Init()
615 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Init()
617 hi2c->Instance->CR2 = (I2C_CR2_ADD10); in HAL_I2C_Init()
620 hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); in HAL_I2C_Init()
624 hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; in HAL_I2C_Init()
627 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ in HAL_I2C_Init()
628 (hi2c->Init.OwnAddress2Masks << 8)); in HAL_I2C_Init()
632 hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); in HAL_I2C_Init()
635 __HAL_I2C_ENABLE(hi2c); in HAL_I2C_Init()
637 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Init()
638 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Init()
639 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_Init()
640 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Init()
651 HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_DeInit() argument
654 if (hi2c == NULL) in HAL_I2C_DeInit()
660 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in HAL_I2C_DeInit()
662 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_DeInit()
665 __HAL_I2C_DISABLE(hi2c); in HAL_I2C_DeInit()
668 if (hi2c->MspDeInitCallback == NULL) in HAL_I2C_DeInit()
670 hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_DeInit()
674 hi2c->MspDeInitCallback(hi2c); in HAL_I2C_DeInit()
677 HAL_I2C_MspDeInit(hi2c); in HAL_I2C_DeInit()
680 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_DeInit()
681 hi2c->State = HAL_I2C_STATE_RESET; in HAL_I2C_DeInit()
682 hi2c->PreviousState = I2C_STATE_NONE; in HAL_I2C_DeInit()
683 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DeInit()
686 __HAL_UNLOCK(hi2c); in HAL_I2C_DeInit()
697 __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspInit() argument
700 UNUSED(hi2c); in HAL_I2C_MspInit()
713 __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) in HAL_I2C_MspDeInit() argument
716 UNUSED(hi2c); in HAL_I2C_MspDeInit()
745 HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb… in HAL_I2C_RegisterCallback() argument
753 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
758 __HAL_LOCK(hi2c); in HAL_I2C_RegisterCallback()
760 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterCallback()
765 hi2c->MasterTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
769 hi2c->MasterRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
773 hi2c->SlaveTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
777 hi2c->SlaveRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
781 hi2c->ListenCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
785 hi2c->MemTxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
789 hi2c->MemRxCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
793 hi2c->ErrorCallback = pCallback; in HAL_I2C_RegisterCallback()
797 hi2c->AbortCpltCallback = pCallback; in HAL_I2C_RegisterCallback()
801 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
805 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
810 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
817 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_RegisterCallback()
822 hi2c->MspInitCallback = pCallback; in HAL_I2C_RegisterCallback()
826 hi2c->MspDeInitCallback = pCallback; in HAL_I2C_RegisterCallback()
831 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
841 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterCallback()
848 __HAL_UNLOCK(hi2c); in HAL_I2C_RegisterCallback()
873 HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal… in HAL_I2C_UnRegisterCallback() argument
878 __HAL_LOCK(hi2c); in HAL_I2C_UnRegisterCallback()
880 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterCallback()
885hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
889hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
893hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
897hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
901hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ in HAL_I2C_UnRegisterCallback()
905hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ in HAL_I2C_UnRegisterCallback()
909hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ in HAL_I2C_UnRegisterCallback()
913hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_I2C_UnRegisterCallback()
917hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_I2C_UnRegisterCallback()
921hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
925hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
930 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
937 else if (HAL_I2C_STATE_RESET == hi2c->State) in HAL_I2C_UnRegisterCallback()
942hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ in HAL_I2C_UnRegisterCallback()
946hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2C_UnRegisterCallback()
951 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
961 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterCallback()
968 __HAL_UNLOCK(hi2c); 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 __HAL_LOCK(hi2c); in HAL_I2C_RegisterAddrCallback()
994 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_RegisterAddrCallback()
996 hi2c->AddrCallback = pCallback; in HAL_I2C_RegisterAddrCallback()
1001 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_RegisterAddrCallback()
1008 __HAL_UNLOCK(hi2c); in HAL_I2C_RegisterAddrCallback()
1019 HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_UnRegisterAddrCallback() argument
1024 __HAL_LOCK(hi2c); in HAL_I2C_UnRegisterAddrCallback()
1026 if (HAL_I2C_STATE_READY == hi2c->State) in HAL_I2C_UnRegisterAddrCallback()
1028 hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ in HAL_I2C_UnRegisterAddrCallback()
1033 hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; in HAL_I2C_UnRegisterAddrCallback()
1040 __HAL_UNLOCK(hi2c); in HAL_I2C_UnRegisterAddrCallback()
1134 HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD… in HAL_I2C_Master_Transmit() argument
1139 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit()
1142 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit()
1147 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1152 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit()
1153 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit()
1154 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit()
1157 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit()
1158 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit()
1159 hi2c->XferISR = NULL; in HAL_I2C_Master_Transmit()
1163 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1165 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1166 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Transmit()
1171 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1172 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit()
1176 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Transmit()
1179 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1184 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Master_Transmit()
1187 hi2c->pBuffPtr++; in HAL_I2C_Master_Transmit()
1189 hi2c->XferCount--; in HAL_I2C_Master_Transmit()
1190 hi2c->XferSize--; in HAL_I2C_Master_Transmit()
1192 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Transmit()
1195 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1200 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit()
1202 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit()
1203 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Transmit()
1208 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit()
1209 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit()
1217 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Transmit()
1223 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Transmit()
1226 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Transmit()
1228 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit()
1229 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit()
1232 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit()
1253 HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa… in HAL_I2C_Master_Receive() argument
1258 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive()
1261 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive()
1266 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1271 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive()
1272 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive()
1273 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive()
1276 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive()
1277 hi2c->XferCount = Size; in HAL_I2C_Master_Receive()
1278 hi2c->XferISR = NULL; in HAL_I2C_Master_Receive()
1282 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1284 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1285 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1290 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1291 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1295 while (hi2c->XferCount > 0U) in HAL_I2C_Master_Receive()
1298 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1304 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Master_Receive()
1307 hi2c->pBuffPtr++; in HAL_I2C_Master_Receive()
1309 hi2c->XferSize--; in HAL_I2C_Master_Receive()
1310 hi2c->XferCount--; in HAL_I2C_Master_Receive()
1312 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Master_Receive()
1315 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1320 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive()
1322 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive()
1323 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Master_Receive()
1328 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive()
1329 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive()
1337 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Master_Receive()
1343 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Master_Receive()
1346 I2C_RESET_CR2(hi2c); in HAL_I2C_Master_Receive()
1348 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive()
1349 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive()
1352 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive()
1371 HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Transmit() argument
1376 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit()
1380 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit()
1384 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit()
1389 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit()
1390 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit()
1391 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit()
1394 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit()
1395 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit()
1396 hi2c->XferISR = NULL; in HAL_I2C_Slave_Transmit()
1399 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1402 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1405 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1410 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1413 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in HAL_I2C_Slave_Transmit()
1416 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1419 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1424 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Transmit()
1428 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1431 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1435 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Transmit()
1438 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1441 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1446 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Slave_Transmit()
1449 hi2c->pBuffPtr++; in HAL_I2C_Slave_Transmit()
1451 hi2c->XferCount--; in HAL_I2C_Slave_Transmit()
1455 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1458 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1463 I2C_Flush_TXDR(hi2c); in HAL_I2C_Slave_Transmit()
1466 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_Slave_Transmit()
1469 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1472 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1478 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Transmit()
1481 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Transmit()
1484 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1489 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Transmit()
1491 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Transmit()
1492 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit()
1495 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit()
1514 HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, in HAL_I2C_Slave_Receive() argument
1519 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive()
1523 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive()
1527 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive()
1532 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive()
1533 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive()
1534 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive()
1537 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive()
1538 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive()
1539 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive()
1540 hi2c->XferISR = NULL; in HAL_I2C_Slave_Receive()
1543 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1546 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1549 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1554 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Receive()
1557 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1560 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1564 while (hi2c->XferCount > 0U) in HAL_I2C_Slave_Receive()
1567 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1570 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1573 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) in HAL_I2C_Slave_Receive()
1576 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1579 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1581 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1582 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1589 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Slave_Receive()
1592 hi2c->pBuffPtr++; in HAL_I2C_Slave_Receive()
1594 hi2c->XferCount--; in HAL_I2C_Slave_Receive()
1595 hi2c->XferSize--; in HAL_I2C_Slave_Receive()
1599 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1602 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1607 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Slave_Receive()
1610 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Slave_Receive()
1613 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1618 hi2c->Instance->CR2 |= I2C_CR2_NACK; in HAL_I2C_Slave_Receive()
1620 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Slave_Receive()
1621 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive()
1624 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive()
1644 HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Transmit_IT() argument
1649 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_IT()
1651 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_IT()
1657 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1659 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_IT()
1660 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_IT()
1661 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_IT()
1664 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_IT()
1665 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_IT()
1666 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_IT()
1667 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_IT()
1669 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_IT()
1671 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_IT()
1676 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_IT()
1682 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); in HAL_I2C_Master_Transmit_IT()
1685 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_IT()
1695 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_IT()
1715 HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *… in HAL_I2C_Master_Receive_IT() argument
1720 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_IT()
1722 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_IT()
1728 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1730 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_IT()
1731 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_IT()
1732 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_IT()
1735 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_IT()
1736 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_IT()
1737 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_IT()
1738 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_IT()
1740 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_IT()
1742 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_IT()
1747 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_IT()
1753 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_IT()
1756 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_IT()
1766 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Receive_IT()
1784 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_IT() argument
1786 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_IT()
1789 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1791 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_IT()
1792 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_IT()
1793 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_IT()
1796 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_IT()
1799 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_IT()
1800 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_IT()
1801 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_IT()
1802 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_IT()
1803 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Transmit_IT()
1806 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_IT()
1816 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_IT()
1834 HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_IT() argument
1836 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_IT()
1839 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1841 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_IT()
1842 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_IT()
1843 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_IT()
1846 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_IT()
1849 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_IT()
1850 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_IT()
1851 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_IT()
1852 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_IT()
1853 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Receive_IT()
1856 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_IT()
1866 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_IT()
1886 HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t… in HAL_I2C_Master_Transmit_DMA() argument
1892 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Transmit_DMA()
1894 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Transmit_DMA()
1900 __HAL_LOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1902 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Transmit_DMA()
1903 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Transmit_DMA()
1904 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Transmit_DMA()
1907 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Transmit_DMA()
1908 hi2c->XferCount = Size; in HAL_I2C_Master_Transmit_DMA()
1909 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Transmit_DMA()
1910 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Transmit_DMA()
1912 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Transmit_DMA()
1914 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Transmit_DMA()
1919 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Transmit_DMA()
1923 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Transmit_DMA()
1925 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Transmit_DMA()
1928 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Transmit_DMA()
1931 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Transmit_DMA()
1934 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
1935 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
1938 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Transmit_DMA()
1939 hi2c->XferSize); in HAL_I2C_Master_Transmit_DMA()
1942 else if (hi2c->hmdmatx != NULL) in HAL_I2C_Master_Transmit_DMA()
1945 hi2c->hmdmatx->XferCpltCallback = I2C_MDMAMasterTransmitCplt; in HAL_I2C_Master_Transmit_DMA()
1948 hi2c->hmdmatx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Master_Transmit_DMA()
1951 hi2c->hmdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Transmit_DMA()
1954 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Transmit_DMA()
1955 hi2c->XferSize, 1); in HAL_I2C_Master_Transmit_DMA()
1961 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
1962 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
1965 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Transmit_DMA()
1968 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1977 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); in HAL_I2C_Master_Transmit_DMA()
1980 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Transmit_DMA()
1983 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
1989 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Transmit_DMA()
1992 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Transmit_DMA()
1997 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Transmit_DMA()
1998 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Transmit_DMA()
2001 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Transmit_DMA()
2004 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2012 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Transmit_DMA()
2016 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Transmit_DMA()
2020 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Transmit_DMA()
2029 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Transmit_DMA()
2050 HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t … in HAL_I2C_Master_Receive_DMA() argument
2056 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Receive_DMA()
2058 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Master_Receive_DMA()
2064 __HAL_LOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2066 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Receive_DMA()
2067 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Receive_DMA()
2068 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Receive_DMA()
2071 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Receive_DMA()
2072 hi2c->XferCount = Size; in HAL_I2C_Master_Receive_DMA()
2073 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Master_Receive_DMA()
2074 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Receive_DMA()
2076 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Receive_DMA()
2078 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Receive_DMA()
2083 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Receive_DMA()
2087 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Receive_DMA()
2089 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Receive_DMA()
2092 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Receive_DMA()
2095 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Receive_DMA()
2098 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2099 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2102 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Receive_DMA()
2103 hi2c->XferSize); in HAL_I2C_Master_Receive_DMA()
2106 else if (hi2c->hmdmarx != NULL) in HAL_I2C_Master_Receive_DMA()
2109 hi2c->hmdmarx->XferCpltCallback = I2C_MDMAMasterReceiveCplt; in HAL_I2C_Master_Receive_DMA()
2112 hi2c->hmdmarx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Master_Receive_DMA()
2115 hi2c->hmdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Receive_DMA()
2118 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Receive_DMA()
2119 hi2c->XferSize, 1); in HAL_I2C_Master_Receive_DMA()
2125 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2126 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2129 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Receive_DMA()
2132 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2141 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Master_Receive_DMA()
2144 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Receive_DMA()
2147 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2153 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Receive_DMA()
2156 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Receive_DMA()
2161 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Receive_DMA()
2162 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Receive_DMA()
2165 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Receive_DMA()
2168 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2176 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Receive_DMA()
2180 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Receive_DMA()
2184 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Receive_DMA()
2193 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Receive_DMA()
2212 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Transmit_DMA() argument
2216 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Transmit_DMA()
2220 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2224 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2226 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Slave_Transmit_DMA()
2227 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Transmit_DMA()
2228 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Transmit_DMA()
2231 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Transmit_DMA()
2232 hi2c->XferCount = Size; in HAL_I2C_Slave_Transmit_DMA()
2233 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Transmit_DMA()
2234 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Transmit_DMA()
2235 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2237 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Transmit_DMA()
2240 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Transmit_DMA()
2243 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Transmit_DMA()
2246 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2247 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2250 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Transmit_DMA()
2251 hi2c->XferSize); in HAL_I2C_Slave_Transmit_DMA()
2254 else if (hi2c->hmdmatx != NULL) in HAL_I2C_Slave_Transmit_DMA()
2257 hi2c->hmdmatx->XferCpltCallback = I2C_MDMASlaveTransmitCplt; in HAL_I2C_Slave_Transmit_DMA()
2260 hi2c->hmdmatx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Slave_Transmit_DMA()
2263 hi2c->hmdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Transmit_DMA()
2266 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Transmit_DMA()
2267 hi2c->XferSize, 1); in HAL_I2C_Slave_Transmit_DMA()
2273 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2274 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2277 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Transmit_DMA()
2280 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2288 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Transmit_DMA()
2291 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2297 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Transmit_DMA()
2300 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Transmit_DMA()
2305 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Transmit_DMA()
2306 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Transmit_DMA()
2309 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Transmit_DMA()
2312 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Transmit_DMA()
2333 HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) in HAL_I2C_Slave_Receive_DMA() argument
2337 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Slave_Receive_DMA()
2341 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Receive_DMA()
2345 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2347 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Slave_Receive_DMA()
2348 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Receive_DMA()
2349 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Receive_DMA()
2352 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Receive_DMA()
2353 hi2c->XferCount = Size; in HAL_I2C_Slave_Receive_DMA()
2354 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Receive_DMA()
2355 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Slave_Receive_DMA()
2356 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Receive_DMA()
2358 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Receive_DMA()
2361 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Receive_DMA()
2364 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Receive_DMA()
2367 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2368 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2371 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Receive_DMA()
2372 hi2c->XferSize); in HAL_I2C_Slave_Receive_DMA()
2375 else if (hi2c->hmdmarx != NULL) in HAL_I2C_Slave_Receive_DMA()
2378 hi2c->hmdmarx->XferCpltCallback = I2C_MDMASlaveReceiveCplt; in HAL_I2C_Slave_Receive_DMA()
2381 hi2c->hmdmarx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Slave_Receive_DMA()
2384 hi2c->hmdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Receive_DMA()
2387 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Receive_DMA()
2388 hi2c->XferSize, 1); in HAL_I2C_Slave_Receive_DMA()
2394 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2395 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2398 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Receive_DMA()
2401 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2409 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Receive_DMA()
2412 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2418 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Receive_DMA()
2421 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Receive_DMA()
2426 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Receive_DMA()
2427 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Receive_DMA()
2430 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Receive_DMA()
2433 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Receive_DMA()
2458 HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre… in HAL_I2C_Mem_Write() argument
2466 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write()
2470 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write()
2475 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write()
2480 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2485 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write()
2486 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write()
2487 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write()
2490 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write()
2491 hi2c->XferCount = Size; in HAL_I2C_Mem_Write()
2492 hi2c->XferISR = NULL; in HAL_I2C_Mem_Write()
2495 …if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2498 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2503 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2505 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2506 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2510 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2511 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write()
2517 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2523 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in HAL_I2C_Mem_Write()
2526 hi2c->pBuffPtr++; in HAL_I2C_Mem_Write()
2528 hi2c->XferCount--; in HAL_I2C_Mem_Write()
2529 hi2c->XferSize--; in HAL_I2C_Mem_Write()
2531 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Write()
2534 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2539 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write()
2541 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write()
2542 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Write()
2547 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write()
2548 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Write()
2553 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Write()
2557 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Write()
2563 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Write()
2566 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Write()
2568 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write()
2569 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write()
2572 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write()
2595 HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres… in HAL_I2C_Mem_Read() argument
2603 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read()
2607 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read()
2612 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read()
2617 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2622 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read()
2623 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read()
2624 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read()
2627 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read()
2628 hi2c->XferCount = Size; in HAL_I2C_Mem_Read()
2629 hi2c->XferISR = NULL; in HAL_I2C_Mem_Read()
2632 … if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2635 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2641 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2643 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2644 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2649 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2650 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2657 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2663 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in HAL_I2C_Mem_Read()
2666 hi2c->pBuffPtr++; in HAL_I2C_Mem_Read()
2668 hi2c->XferSize--; in HAL_I2C_Mem_Read()
2669 hi2c->XferCount--; in HAL_I2C_Mem_Read()
2671 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in HAL_I2C_Mem_Read()
2674 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2679 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read()
2681 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read()
2682 I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, in HAL_I2C_Mem_Read()
2687 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read()
2688 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Mem_Read()
2692 } while (hi2c->XferCount > 0U); in HAL_I2C_Mem_Read()
2696 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) in HAL_I2C_Mem_Read()
2702 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_Mem_Read()
2705 I2C_RESET_CR2(hi2c); in HAL_I2C_Mem_Read()
2707 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read()
2708 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read()
2711 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read()
2732 HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Write_IT() argument
2741 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_IT()
2745 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_IT()
2749 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_IT()
2755 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2760 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_IT()
2761 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_IT()
2762 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_IT()
2765 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_IT()
2766 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_IT()
2767 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_IT()
2768 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Mem_Write_IT()
2770 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write_IT()
2772 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write_IT()
2777 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write_IT()
2782 … if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) in HAL_I2C_Mem_Write_IT()
2786 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2791 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write_IT()
2794 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_IT()
2804 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Mem_Write_IT()
2826 HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd… in HAL_I2C_Mem_Read_IT() argument
2835 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_IT()
2839 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_IT()
2843 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_IT()
2849 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2854 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_IT()
2855 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_IT()
2856 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_IT()
2859 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_IT()
2860 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_IT()
2861 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_IT()
2862 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Mem_Read_IT()
2864 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read_IT()
2866 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read_IT()
2871 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read_IT()
2876 …if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !… in HAL_I2C_Mem_Read_IT()
2879 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2884 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Mem_Read_IT()
2887 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_IT()
2897 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Mem_Read_IT()
2918 HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA… in HAL_I2C_Mem_Write_DMA() argument
2928 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Write_DMA()
2932 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Write_DMA()
2936 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Write_DMA()
2942 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
2947 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Mem_Write_DMA()
2948 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Write_DMA()
2949 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Write_DMA()
2952 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Write_DMA()
2953 hi2c->XferCount = Size; in HAL_I2C_Mem_Write_DMA()
2954 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Write_DMA()
2955 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Mem_Write_DMA()
2957 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Write_DMA()
2959 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Write_DMA()
2964 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Write_DMA()
2969 … if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) in HAL_I2C_Mem_Write_DMA()
2973 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
2978 if (hi2c->hdmatx != NULL) in HAL_I2C_Mem_Write_DMA()
2981 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Mem_Write_DMA()
2984 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Write_DMA()
2987 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Write_DMA()
2988 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Mem_Write_DMA()
2991 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Mem_Write_DMA()
2992 hi2c->XferSize); in HAL_I2C_Mem_Write_DMA()
2995 else if (hi2c->hmdmatx != NULL) in HAL_I2C_Mem_Write_DMA()
2998 hi2c->hmdmatx->XferCpltCallback = I2C_MDMAMasterTransmitCplt; in HAL_I2C_Mem_Write_DMA()
3001 hi2c->hmdmatx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Mem_Write_DMA()
3004 hi2c->hmdmatx->XferAbortCallback = NULL; in HAL_I2C_Mem_Write_DMA()
3007 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Mem_Write_DMA()
3008 hi2c->XferSize, 1); in HAL_I2C_Mem_Write_DMA()
3014 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3015 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3018 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Write_DMA()
3021 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3030 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); in HAL_I2C_Mem_Write_DMA()
3033 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Mem_Write_DMA()
3036 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3042 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Mem_Write_DMA()
3045 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Mem_Write_DMA()
3050 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Write_DMA()
3051 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Write_DMA()
3054 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Write_DMA()
3057 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Write_DMA()
3082 HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd… in HAL_I2C_Mem_Read_DMA() argument
3092 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Mem_Read_DMA()
3096 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Mem_Read_DMA()
3100 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_Mem_Read_DMA()
3106 __HAL_LOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3111 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Mem_Read_DMA()
3112 hi2c->Mode = HAL_I2C_MODE_MEM; in HAL_I2C_Mem_Read_DMA()
3113 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Mem_Read_DMA()
3116 hi2c->pBuffPtr = pData; in HAL_I2C_Mem_Read_DMA()
3117 hi2c->XferCount = Size; in HAL_I2C_Mem_Read_DMA()
3118 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in HAL_I2C_Mem_Read_DMA()
3119 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Mem_Read_DMA()
3121 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Mem_Read_DMA()
3123 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Mem_Read_DMA()
3128 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Mem_Read_DMA()
3133 …if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !… in HAL_I2C_Mem_Read_DMA()
3136 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3140 if (hi2c->hdmarx != NULL) in HAL_I2C_Mem_Read_DMA()
3143 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Mem_Read_DMA()
3146 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Mem_Read_DMA()
3149 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3150 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3153 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Mem_Read_DMA()
3154 hi2c->XferSize); in HAL_I2C_Mem_Read_DMA()
3157 if (hi2c->hmdmarx != NULL) in HAL_I2C_Mem_Read_DMA()
3160 hi2c->hmdmarx->XferCpltCallback = I2C_MDMAMasterReceiveCplt; in HAL_I2C_Mem_Read_DMA()
3163 hi2c->hmdmarx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Mem_Read_DMA()
3166 hi2c->hmdmarx->XferAbortCallback = NULL; in HAL_I2C_Mem_Read_DMA()
3169 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Mem_Read_DMA()
3170 hi2c->XferSize, 1); in HAL_I2C_Mem_Read_DMA()
3176 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3177 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3180 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Mem_Read_DMA()
3183 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3191 … I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); in HAL_I2C_Mem_Read_DMA()
3194 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Mem_Read_DMA()
3197 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3203 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Mem_Read_DMA()
3206 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Mem_Read_DMA()
3211 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Mem_Read_DMA()
3212 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Mem_Read_DMA()
3215 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Mem_Read_DMA()
3218 __HAL_UNLOCK(hi2c); in HAL_I2C_Mem_Read_DMA()
3242 HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria… in HAL_I2C_IsDeviceReady() argument
3252 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_IsDeviceReady()
3254 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) in HAL_I2C_IsDeviceReady()
3260 __HAL_LOCK(hi2c); in HAL_I2C_IsDeviceReady()
3262 hi2c->State = HAL_I2C_STATE_BUSY; in HAL_I2C_IsDeviceReady()
3263 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_IsDeviceReady()
3268 hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); in HAL_I2C_IsDeviceReady()
3274 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3275 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3284 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3287 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3290 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3296 tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3297 tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3301 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) in HAL_I2C_IsDeviceReady()
3304 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3310 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3313 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3316 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3323 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3329 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in HAL_I2C_IsDeviceReady()
3332 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3339 hi2c->Instance->CR2 |= I2C_CR2_STOP; in HAL_I2C_IsDeviceReady()
3342 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) in HAL_I2C_IsDeviceReady()
3348 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in HAL_I2C_IsDeviceReady()
3356 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_IsDeviceReady()
3359 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in HAL_I2C_IsDeviceReady()
3362 __HAL_UNLOCK(hi2c); in HAL_I2C_IsDeviceReady()
3384 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Transmit_IT() argument
3393 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_IT()
3396 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3398 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_IT()
3399 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_IT()
3400 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_IT()
3403 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_IT()
3404 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_IT()
3405 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3406 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_IT()
3409 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3411 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_IT()
3416 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_IT()
3417 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3423 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_IT()
3431 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3434 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_IT()
3436 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_IT()
3441 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_IT()
3444 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_IT()
3449 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_IT()
3471 HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin… in HAL_I2C_Master_Seq_Transmit_DMA() argument
3481 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Transmit_DMA()
3484 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3486 hi2c->State = HAL_I2C_STATE_BUSY_TX; in HAL_I2C_Master_Seq_Transmit_DMA()
3487 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Transmit_DMA()
3488 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3491 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Transmit_DMA()
3492 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Transmit_DMA()
3493 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3494 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3497 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3499 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Transmit_DMA()
3504 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Transmit_DMA()
3505 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3511 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ in HAL_I2C_Master_Seq_Transmit_DMA()
3519 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3522 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Transmit_DMA()
3524 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Transmit_DMA()
3528 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Transmit_DMA()
3530 if (hi2c->hdmatx != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3533 hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; in HAL_I2C_Master_Seq_Transmit_DMA()
3536 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Transmit_DMA()
3539 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3540 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3543 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Seq_Transmit_DMA()
3544 hi2c->XferSize); in HAL_I2C_Master_Seq_Transmit_DMA()
3547 else if (hi2c->hmdmatx != NULL) in HAL_I2C_Master_Seq_Transmit_DMA()
3550 hi2c->hmdmatx->XferCpltCallback = I2C_MDMAMasterTransmitCplt; in HAL_I2C_Master_Seq_Transmit_DMA()
3553 hi2c->hmdmatx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Master_Seq_Transmit_DMA()
3556 hi2c->hmdmatx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Transmit_DMA()
3559 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Master_Seq_Transmit_DMA()
3560 hi2c->XferSize, 1); in HAL_I2C_Master_Seq_Transmit_DMA()
3566 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3567 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3570 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Transmit_DMA()
3573 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3581 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Transmit_DMA()
3584 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Transmit_DMA()
3587 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3593 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3596 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Master_Seq_Transmit_DMA()
3601 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Transmit_DMA()
3602 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Transmit_DMA()
3605 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Transmit_DMA()
3608 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3616 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Transmit_DMA()
3620 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Transmit_DMA()
3624 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Transmit_DMA()
3633 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Transmit_DMA()
3656 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8… in HAL_I2C_Master_Seq_Receive_IT() argument
3665 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_IT()
3668 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3670 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_IT()
3671 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_IT()
3672 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_IT()
3675 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_IT()
3676 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_IT()
3677 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3678 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_IT()
3681 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3683 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_IT()
3688 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_IT()
3689 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3695 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_IT()
3703 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3706 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_IT()
3708 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_IT()
3713 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_IT()
3716 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_IT()
3721 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Seq_Receive_IT()
3743 HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint… in HAL_I2C_Master_Seq_Receive_DMA() argument
3753 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_Master_Seq_Receive_DMA()
3756 __HAL_LOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3758 hi2c->State = HAL_I2C_STATE_BUSY_RX; in HAL_I2C_Master_Seq_Receive_DMA()
3759 hi2c->Mode = HAL_I2C_MODE_MASTER; in HAL_I2C_Master_Seq_Receive_DMA()
3760 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3763 hi2c->pBuffPtr = pData; in HAL_I2C_Master_Seq_Receive_DMA()
3764 hi2c->XferCount = Size; in HAL_I2C_Master_Seq_Receive_DMA()
3765 hi2c->XferOptions = XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3766 hi2c->XferISR = I2C_Master_ISR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3769 if (hi2c->XferCount > MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3771 hi2c->XferSize = MAX_NBYTE_SIZE; in HAL_I2C_Master_Seq_Receive_DMA()
3776 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Master_Seq_Receive_DMA()
3777 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3783 if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ in HAL_I2C_Master_Seq_Receive_DMA()
3791 I2C_ConvertOtherXferOptions(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3794 if (hi2c->XferCount <= MAX_NBYTE_SIZE) in HAL_I2C_Master_Seq_Receive_DMA()
3796 xfermode = hi2c->XferOptions; in HAL_I2C_Master_Seq_Receive_DMA()
3800 if (hi2c->XferSize > 0U) in HAL_I2C_Master_Seq_Receive_DMA()
3802 if (hi2c->hdmarx != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
3805 hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; in HAL_I2C_Master_Seq_Receive_DMA()
3808 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Master_Seq_Receive_DMA()
3811 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3812 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3815 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Seq_Receive_DMA()
3816 hi2c->XferSize); in HAL_I2C_Master_Seq_Receive_DMA()
3819 else if (hi2c->hmdmarx != NULL) in HAL_I2C_Master_Seq_Receive_DMA()
3822 hi2c->hmdmarx->XferCpltCallback = I2C_MDMAMasterReceiveCplt; in HAL_I2C_Master_Seq_Receive_DMA()
3825 hi2c->hmdmarx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Master_Seq_Receive_DMA()
3828 hi2c->hmdmarx->XferAbortCallback = NULL; in HAL_I2C_Master_Seq_Receive_DMA()
3831 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Master_Seq_Receive_DMA()
3832 hi2c->XferSize, 1); in HAL_I2C_Master_Seq_Receive_DMA()
3838 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
3839 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3842 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Master_Seq_Receive_DMA()
3845 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3853 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); in HAL_I2C_Master_Seq_Receive_DMA()
3856 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Master_Seq_Receive_DMA()
3859 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3865 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); in HAL_I2C_Master_Seq_Receive_DMA()
3868 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Master_Seq_Receive_DMA()
3873 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_Master_Seq_Receive_DMA()
3874 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Master_Seq_Receive_DMA()
3877 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Master_Seq_Receive_DMA()
3880 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3888 hi2c->XferISR = I2C_Master_ISR_IT; in HAL_I2C_Master_Seq_Receive_DMA()
3892 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, in HAL_I2C_Master_Seq_Receive_DMA()
3896 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Seq_Receive_DMA()
3905 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Seq_Receive_DMA()
3926 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
3932 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3936 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_IT()
3941 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
3944 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
3948 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3951 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
3954 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_IT()
3956 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_IT()
3958 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_IT()
3962 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_IT()
3965 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_IT()
3968 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_IT()
3972 else if (hi2c->hmdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_IT()
3976 hi2c->hmdmarx->XferAbortCallback = I2C_MDMAAbort; in HAL_I2C_Slave_Seq_Transmit_IT()
3979 if (HAL_MDMA_Abort_IT(hi2c->hmdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_IT()
3982 hi2c->hmdmarx->XferAbortCallback(hi2c->hmdmarx); in HAL_I2C_Slave_Seq_Transmit_IT()
3993 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_IT()
3994 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_IT()
3995 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_IT()
3998 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_IT()
4001 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_IT()
4002 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_IT()
4003 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_IT()
4004 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_IT()
4005 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Transmit_IT()
4007 if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) in HAL_I2C_Slave_Seq_Transmit_IT()
4011 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_IT()
4015 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_IT()
4021 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_IT()
4041 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t … in HAL_I2C_Slave_Seq_Transmit_DMA() argument
4049 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4053 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4058 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4061 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4065 if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4068 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4070 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4073 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4075 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4079 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4082 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4085 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4089 else if (hi2c->hmdmarx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4091 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4095 hi2c->hmdmarx->XferAbortCallback = I2C_MDMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4098 if (HAL_MDMA_Abort_IT(hi2c->hmdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4101 hi2c->hmdmarx->XferAbortCallback(hi2c->hmdmarx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4111 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4113 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Transmit_DMA()
4115 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4118 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4122 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4125 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4128 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4132 else if (hi2c->hmdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4136 hi2c->hmdmatx->XferAbortCallback = I2C_MDMAAbort; in HAL_I2C_Slave_Seq_Transmit_DMA()
4139 if (HAL_MDMA_Abort_IT(hi2c->hmdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Transmit_DMA()
4142 hi2c->hmdmatx->XferAbortCallback(hi2c->hmdmatx); in HAL_I2C_Slave_Seq_Transmit_DMA()
4157 hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4158 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4159 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4162 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Transmit_DMA()
4165 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Transmit_DMA()
4166 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Transmit_DMA()
4167 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Transmit_DMA()
4168 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Transmit_DMA()
4169 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4171 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4174 hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; in HAL_I2C_Slave_Seq_Transmit_DMA()
4177 hi2c->hdmatx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Transmit_DMA()
4180 hi2c->hdmatx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4181 hi2c->hdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4184 … dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Seq_Transmit_DMA()
4185 hi2c->XferSize); in HAL_I2C_Slave_Seq_Transmit_DMA()
4188 else if (hi2c->hmdmatx != NULL) in HAL_I2C_Slave_Seq_Transmit_DMA()
4191 hi2c->hmdmatx->XferCpltCallback = I2C_MDMASlaveTransmitCplt; in HAL_I2C_Slave_Seq_Transmit_DMA()
4194 hi2c->hmdmatx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Slave_Seq_Transmit_DMA()
4197 hi2c->hmdmatx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Transmit_DMA()
4200 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, in HAL_I2C_Slave_Seq_Transmit_DMA()
4201 hi2c->XferSize, 1); in HAL_I2C_Slave_Seq_Transmit_DMA()
4207 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4208 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4211 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Transmit_DMA()
4214 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4222 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Transmit_DMA()
4225 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Transmit_DMA()
4230 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4231 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Transmit_DMA()
4234 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Transmit_DMA()
4237 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4242 if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) in HAL_I2C_Slave_Seq_Transmit_DMA()
4246 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Transmit_DMA()
4250 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Transmit_DMA()
4253 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Transmit_DMA()
4259 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Transmit_DMA()
4279 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
4285 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4289 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_IT()
4294 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4297 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4301 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_IT()
4304 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4306 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_IT()
4308 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_IT()
4311 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_IT()
4315 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_IT()
4318 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_IT()
4321 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_IT()
4325 else if (hi2c->hmdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_IT()
4329 hi2c->hmdmatx->XferAbortCallback = I2C_MDMAAbort; in HAL_I2C_Slave_Seq_Receive_IT()
4332 if (HAL_MDMA_Abort_IT(hi2c->hmdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_IT()
4335 hi2c->hmdmatx->XferAbortCallback(hi2c->hmdmatx); in HAL_I2C_Slave_Seq_Receive_IT()
4346 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_IT()
4347 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_IT()
4348 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_IT()
4351 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_IT()
4354 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_IT()
4355 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_IT()
4356 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_IT()
4357 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_IT()
4358 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_Slave_Seq_Receive_IT()
4360 if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) in HAL_I2C_Slave_Seq_Receive_IT()
4364 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_IT()
4368 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_IT()
4374 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_IT()
4394 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
4402 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4406 hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4411 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4414 __HAL_LOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4418 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4421 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4423 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4426 if (hi2c->hdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4428 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4432 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4435 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4438 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in HAL_I2C_Slave_Seq_Receive_DMA()
4442 else if (hi2c->hmdmatx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4444 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4448 hi2c->hmdmatx->XferAbortCallback = I2C_MDMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4451 if (HAL_MDMA_Abort_IT(hi2c->hmdmatx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4454 hi2c->hmdmatx->XferAbortCallback(hi2c->hmdmatx); in HAL_I2C_Slave_Seq_Receive_DMA()
4464 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4466 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in HAL_I2C_Slave_Seq_Receive_DMA()
4468 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4471 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4475 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4478 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4481 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4485 else if (hi2c->hmdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4489 hi2c->hmdmarx->XferAbortCallback = I2C_MDMAAbort; in HAL_I2C_Slave_Seq_Receive_DMA()
4492 if (HAL_MDMA_Abort_IT(hi2c->hmdmarx) != HAL_OK) in HAL_I2C_Slave_Seq_Receive_DMA()
4495 hi2c->hmdmarx->XferAbortCallback(hi2c->hmdmarx); in HAL_I2C_Slave_Seq_Receive_DMA()
4510 hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4511 hi2c->Mode = HAL_I2C_MODE_SLAVE; in HAL_I2C_Slave_Seq_Receive_DMA()
4512 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4515 hi2c->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_I2C_Slave_Seq_Receive_DMA()
4518 hi2c->pBuffPtr = pData; in HAL_I2C_Slave_Seq_Receive_DMA()
4519 hi2c->XferCount = Size; in HAL_I2C_Slave_Seq_Receive_DMA()
4520 hi2c->XferSize = hi2c->XferCount; in HAL_I2C_Slave_Seq_Receive_DMA()
4521 hi2c->XferOptions = XferOptions; in HAL_I2C_Slave_Seq_Receive_DMA()
4522 hi2c->XferISR = I2C_Slave_ISR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4524 if (hi2c->hdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4527 hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; in HAL_I2C_Slave_Seq_Receive_DMA()
4530 hi2c->hdmarx->XferErrorCallback = I2C_DMAError; in HAL_I2C_Slave_Seq_Receive_DMA()
4533 hi2c->hdmarx->XferHalfCpltCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4534 hi2c->hdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4537 dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, in HAL_I2C_Slave_Seq_Receive_DMA()
4538 (uint32_t)pData, hi2c->XferSize); in HAL_I2C_Slave_Seq_Receive_DMA()
4541 else if (hi2c->hmdmarx != NULL) in HAL_I2C_Slave_Seq_Receive_DMA()
4544 hi2c->hmdmarx->XferCpltCallback = I2C_MDMASlaveReceiveCplt; in HAL_I2C_Slave_Seq_Receive_DMA()
4547 hi2c->hmdmarx->XferErrorCallback = I2C_MDMAError; in HAL_I2C_Slave_Seq_Receive_DMA()
4550 hi2c->hmdmarx->XferAbortCallback = NULL; in HAL_I2C_Slave_Seq_Receive_DMA()
4553 … dmaxferstatus = HAL_MDMA_Start_IT(hi2c->hmdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, in HAL_I2C_Slave_Seq_Receive_DMA()
4554 hi2c->XferSize, 1); in HAL_I2C_Slave_Seq_Receive_DMA()
4560 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4561 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4564 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; in HAL_I2C_Slave_Seq_Receive_DMA()
4567 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4575 hi2c->XferCount -= hi2c->XferSize; in HAL_I2C_Slave_Seq_Receive_DMA()
4578 hi2c->XferSize = 0; in HAL_I2C_Slave_Seq_Receive_DMA()
4583 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4584 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_Slave_Seq_Receive_DMA()
4587 hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; in HAL_I2C_Slave_Seq_Receive_DMA()
4590 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4595 if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) in HAL_I2C_Slave_Seq_Receive_DMA()
4599 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in HAL_I2C_Slave_Seq_Receive_DMA()
4603 __HAL_UNLOCK(hi2c); in HAL_I2C_Slave_Seq_Receive_DMA()
4606 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in HAL_I2C_Slave_Seq_Receive_DMA()
4612 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); in HAL_I2C_Slave_Seq_Receive_DMA()
4628 HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_EnableListen_IT() argument
4630 if (hi2c->State == HAL_I2C_STATE_READY) in HAL_I2C_EnableListen_IT()
4632 hi2c->State = HAL_I2C_STATE_LISTEN; in HAL_I2C_EnableListen_IT()
4633 hi2c->XferISR = I2C_Slave_ISR_IT; in HAL_I2C_EnableListen_IT()
4636 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_EnableListen_IT()
4652 HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) in HAL_I2C_DisableListen_IT() argument
4658 if (hi2c->State == HAL_I2C_STATE_LISTEN) in HAL_I2C_DisableListen_IT()
4660 tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; in HAL_I2C_DisableListen_IT()
4661 hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); in HAL_I2C_DisableListen_IT()
4662 hi2c->State = HAL_I2C_STATE_READY; in HAL_I2C_DisableListen_IT()
4663 hi2c->Mode = HAL_I2C_MODE_NONE; in HAL_I2C_DisableListen_IT()
4664 hi2c->XferISR = NULL; in HAL_I2C_DisableListen_IT()
4667 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in HAL_I2C_DisableListen_IT()
4685 HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) in HAL_I2C_Master_Abort_IT() argument
4687 if (hi2c->Mode == HAL_I2C_MODE_MASTER) in HAL_I2C_Master_Abort_IT()
4690 __HAL_LOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4693 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in HAL_I2C_Master_Abort_IT()
4695 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in HAL_I2C_Master_Abort_IT()
4696 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in HAL_I2C_Master_Abort_IT()
4698 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in HAL_I2C_Master_Abort_IT()
4700 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in HAL_I2C_Master_Abort_IT()
4701 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in HAL_I2C_Master_Abort_IT()
4709 hi2c->State = HAL_I2C_STATE_ABORT; in HAL_I2C_Master_Abort_IT()
4713 I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); in HAL_I2C_Master_Abort_IT()
4716 __HAL_UNLOCK(hi2c); in HAL_I2C_Master_Abort_IT()
4721 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in HAL_I2C_Master_Abort_IT()
4747 void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) in HAL_I2C_EV_IRQHandler() argument
4750 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_EV_IRQHandler()
4751 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_EV_IRQHandler()
4754 if (hi2c->XferISR != NULL) in HAL_I2C_EV_IRQHandler()
4756 hi2c->XferISR(hi2c, itflags, itsources); in HAL_I2C_EV_IRQHandler()
4766 void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) in HAL_I2C_ER_IRQHandler() argument
4768 uint32_t itflags = READ_REG(hi2c->Instance->ISR); in HAL_I2C_ER_IRQHandler()
4769 uint32_t itsources = READ_REG(hi2c->Instance->CR1); in HAL_I2C_ER_IRQHandler()
4776 hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; in HAL_I2C_ER_IRQHandler()
4779 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in HAL_I2C_ER_IRQHandler()
4786 hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; in HAL_I2C_ER_IRQHandler()
4789 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in HAL_I2C_ER_IRQHandler()
4796 hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; in HAL_I2C_ER_IRQHandler()
4799 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in HAL_I2C_ER_IRQHandler()
4803 tmperror = hi2c->ErrorCode; in HAL_I2C_ER_IRQHandler()
4808 I2C_ITError(hi2c, tmperror); in HAL_I2C_ER_IRQHandler()
4818 __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterTxCpltCallback() argument
4821 UNUSED(hi2c); in HAL_I2C_MasterTxCpltCallback()
4834 __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MasterRxCpltCallback() argument
4837 UNUSED(hi2c); in HAL_I2C_MasterRxCpltCallback()
4849 __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveTxCpltCallback() argument
4852 UNUSED(hi2c); in HAL_I2C_SlaveTxCpltCallback()
4865 __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_SlaveRxCpltCallback() argument
4868 UNUSED(hi2c); in HAL_I2C_SlaveRxCpltCallback()
4883 __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM… in HAL_I2C_AddrCallback() argument
4886 UNUSED(hi2c); in HAL_I2C_AddrCallback()
4901 __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ListenCpltCallback() argument
4904 UNUSED(hi2c); in HAL_I2C_ListenCpltCallback()
4917 __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemTxCpltCallback() argument
4920 UNUSED(hi2c); in HAL_I2C_MemTxCpltCallback()
4933 __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_MemRxCpltCallback() argument
4936 UNUSED(hi2c); in HAL_I2C_MemRxCpltCallback()
4949 __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_ErrorCallback() argument
4952 UNUSED(hi2c); in HAL_I2C_ErrorCallback()
4965 __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) in HAL_I2C_AbortCpltCallback() argument
4968 UNUSED(hi2c); in HAL_I2C_AbortCpltCallback()
5000 HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c) in HAL_I2C_GetState() argument
5003 return hi2c->State; in HAL_I2C_GetState()
5012 HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c) in HAL_I2C_GetMode() argument
5014 return hi2c->Mode; in HAL_I2C_GetMode()
5023 uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c) in HAL_I2C_GetError() argument
5025 return hi2c->ErrorCode; in HAL_I2C_GetError()
5048 static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_IT() argument
5055 __HAL_LOCK(hi2c); in I2C_Master_ISR_IT()
5061 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_IT()
5066 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_IT()
5069 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_IT()
5078 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Master_ISR_IT()
5081 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5083 hi2c->XferSize--; in I2C_Master_ISR_IT()
5084 hi2c->XferCount--; in I2C_Master_ISR_IT()
5090 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Master_ISR_IT()
5093 hi2c->pBuffPtr++; in I2C_Master_ISR_IT()
5095 hi2c->XferSize--; in I2C_Master_ISR_IT()
5096 hi2c->XferCount--; in I2C_Master_ISR_IT()
5101 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) in I2C_Master_ISR_IT()
5103 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_IT()
5105 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_IT()
5107 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_IT()
5108 … I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5112 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_IT()
5113 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5115 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5116 hi2c->XferOptions, I2C_NO_STARTSTOP); in I2C_Master_ISR_IT()
5120 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, in I2C_Master_ISR_IT()
5128 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5131 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5137 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5144 if (hi2c->XferCount == 0U) in I2C_Master_ISR_IT()
5146 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_IT()
5149 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_IT()
5152 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_IT()
5157 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_IT()
5165 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_IT()
5177 I2C_ITMasterCplt(hi2c, tmpITFlags); in I2C_Master_ISR_IT()
5181 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_IT()
5194 static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_IT() argument
5197 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_IT()
5201 __HAL_LOCK(hi2c); in I2C_Slave_ISR_IT()
5208 I2C_ITSlaveCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5218 if (hi2c->XferCount == 0U) in I2C_Slave_ISR_IT()
5220 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_IT()
5225 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5227 else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_IT()
5230 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5233 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_IT()
5237 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5242 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5249 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_IT()
5252 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_IT()
5257 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_IT()
5264 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5267 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_Slave_ISR_IT()
5270 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5272 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5273 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5276 if ((hi2c->XferCount == 0U) && \ in I2C_Slave_ISR_IT()
5280 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5286 I2C_ITAddrCplt(hi2c, tmpITFlags); in I2C_Slave_ISR_IT()
5295 if (hi2c->XferCount > 0U) in I2C_Slave_ISR_IT()
5298 hi2c->Instance->TXDR = *hi2c->pBuffPtr; in I2C_Slave_ISR_IT()
5301 hi2c->pBuffPtr++; in I2C_Slave_ISR_IT()
5303 hi2c->XferCount--; in I2C_Slave_ISR_IT()
5304 hi2c->XferSize--; in I2C_Slave_ISR_IT()
5312 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_IT()
5322 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_IT()
5335 static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Master_ISR_DMA() argument
5342 __HAL_LOCK(hi2c); in I2C_Master_ISR_DMA()
5348 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Master_ISR_DMA()
5351 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Master_ISR_DMA()
5356 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_Master_ISR_DMA()
5359 I2C_Flush_TXDR(hi2c); in I2C_Master_ISR_DMA()
5365 __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); in I2C_Master_ISR_DMA()
5367 if (hi2c->XferCount != 0U) in I2C_Master_ISR_DMA()
5370 devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); in I2C_Master_ISR_DMA()
5373 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_Master_ISR_DMA()
5375 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_Master_ISR_DMA()
5380 hi2c->XferSize = hi2c->XferCount; in I2C_Master_ISR_DMA()
5381 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5383 xfermode = hi2c->XferOptions; in I2C_Master_ISR_DMA()
5392 I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); in I2C_Master_ISR_DMA()
5395 hi2c->XferCount -= hi2c->XferSize; in I2C_Master_ISR_DMA()
5398 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_Master_ISR_DMA()
5400 hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; in I2C_Master_ISR_DMA()
5404 hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; in I2C_Master_ISR_DMA()
5410 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5413 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5419 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5426 if (hi2c->XferCount == 0U) in I2C_Master_ISR_DMA()
5428 if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) in I2C_Master_ISR_DMA()
5431 if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) in I2C_Master_ISR_DMA()
5434 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_Master_ISR_DMA()
5439 I2C_ITMasterSeqCplt(hi2c); in I2C_Master_ISR_DMA()
5447 I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); in I2C_Master_ISR_DMA()
5454 I2C_ITMasterCplt(hi2c, ITFlags); in I2C_Master_ISR_DMA()
5462 __HAL_UNLOCK(hi2c); in I2C_Master_ISR_DMA()
5475 static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, in I2C_Slave_ISR_DMA() argument
5478 uint32_t tmpoptions = hi2c->XferOptions; in I2C_Slave_ISR_DMA()
5483 __HAL_LOCK(hi2c); in I2C_Slave_ISR_DMA()
5490 I2C_ITSlaveCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5504 if (hi2c->hdmarx != NULL) in I2C_Slave_ISR_DMA()
5508 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) in I2C_Slave_ISR_DMA()
5516 if (hi2c->hdmatx != NULL) in I2C_Slave_ISR_DMA()
5520 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) in I2C_Slave_ISR_DMA()
5528 if (hi2c->hmdmarx != NULL) in I2C_Slave_ISR_DMA()
5532 if (I2C_GET_MDMA_REMAIN_DATA_RX(hi2c) == 0U) in I2C_Slave_ISR_DMA()
5539 if (hi2c->hmdmatx != NULL) in I2C_Slave_ISR_DMA()
5543 if (I2C_GET_MDMA_REMAIN_DATA_TX(hi2c) == 0U) in I2C_Slave_ISR_DMA()
5553 if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) in I2C_Slave_ISR_DMA()
5558 I2C_ITListenCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5560 … else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) in I2C_Slave_ISR_DMA()
5563 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5566 I2C_Flush_TXDR(hi2c); in I2C_Slave_ISR_DMA()
5570 I2C_ITSlaveSeqCplt(hi2c); in I2C_Slave_ISR_DMA()
5575 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5582 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5585 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_Slave_ISR_DMA()
5588 tmpstate = hi2c->State; in I2C_Slave_ISR_DMA()
5594 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_Slave_ISR_DMA()
5598 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_Slave_ISR_DMA()
5606 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_Slave_ISR_DMA()
5613 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_Slave_ISR_DMA()
5619 I2C_ITAddrCplt(hi2c, ITFlags); in I2C_Slave_ISR_DMA()
5627 __HAL_UNLOCK(hi2c); in I2C_Slave_ISR_DMA()
5644 static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryWrite() argument
5648 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRIT… in I2C_RequestMemoryWrite()
5651 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5660 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
5666 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryWrite()
5669 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5675 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryWrite()
5679 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryWrite()
5699 static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, in I2C_RequestMemoryRead() argument
5703 …I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRI… in I2C_RequestMemoryRead()
5706 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5715 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
5721 hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); in I2C_RequestMemoryRead()
5724 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5730 hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); in I2C_RequestMemoryRead()
5734 if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) in I2C_RequestMemoryRead()
5748 static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITAddrCplt() argument
5759 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_ITAddrCplt()
5761 transferdirection = I2C_GET_DIR(hi2c); in I2C_ITAddrCplt()
5762 slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); in I2C_ITAddrCplt()
5763 ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); in I2C_ITAddrCplt()
5764 ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); in I2C_ITAddrCplt()
5767 if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) in I2C_ITAddrCplt()
5772 hi2c->AddrEventCount++; in I2C_ITAddrCplt()
5773 if (hi2c->AddrEventCount == 2U) in I2C_ITAddrCplt()
5776 hi2c->AddrEventCount = 0U; in I2C_ITAddrCplt()
5779 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
5782 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5786 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5788 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5797 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
5800 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5804 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5806 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5814 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); in I2C_ITAddrCplt()
5817 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5821 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5823 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); in I2C_ITAddrCplt()
5831 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); in I2C_ITAddrCplt()
5834 __HAL_UNLOCK(hi2c); in I2C_ITAddrCplt()
5843 static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITMasterSeqCplt() argument
5846 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterSeqCplt()
5850 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterSeqCplt()
5852 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
5853 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterSeqCplt()
5854 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
5857 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterSeqCplt()
5860 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
5864 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
5866 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
5872 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterSeqCplt()
5873 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterSeqCplt()
5874 hi2c->XferISR = NULL; in I2C_ITMasterSeqCplt()
5877 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterSeqCplt()
5880 __HAL_UNLOCK(hi2c); in I2C_ITMasterSeqCplt()
5884 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
5886 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterSeqCplt()
5896 static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) in I2C_ITSlaveSeqCplt() argument
5898 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveSeqCplt()
5901 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveSeqCplt()
5907 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveSeqCplt()
5912 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveSeqCplt()
5919 if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) in I2C_ITSlaveSeqCplt()
5922 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
5923 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveSeqCplt()
5926 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITSlaveSeqCplt()
5929 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
5933 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
5935 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
5939 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) in I2C_ITSlaveSeqCplt()
5942 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITSlaveSeqCplt()
5943 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveSeqCplt()
5946 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITSlaveSeqCplt()
5949 __HAL_UNLOCK(hi2c); in I2C_ITSlaveSeqCplt()
5953 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
5955 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveSeqCplt()
5970 static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITMasterCplt() argument
5977 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITMasterCplt()
5980 if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
5982 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); in I2C_ITMasterCplt()
5983 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; in I2C_ITMasterCplt()
5985 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
5987 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); in I2C_ITMasterCplt()
5988 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; in I2C_ITMasterCplt()
5996 I2C_RESET_CR2(hi2c); in I2C_ITMasterCplt()
5999 hi2c->XferISR = NULL; in I2C_ITMasterCplt()
6000 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITMasterCplt()
6005 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITMasterCplt()
6008 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITMasterCplt()
6012 if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) in I2C_ITMasterCplt()
6015 tmpreg = (uint8_t)hi2c->Instance->RXDR; in I2C_ITMasterCplt()
6020 I2C_Flush_TXDR(hi2c); in I2C_ITMasterCplt()
6023 tmperror = hi2c->ErrorCode; in I2C_ITMasterCplt()
6026 if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) in I2C_ITMasterCplt()
6029 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITMasterCplt()
6032 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) in I2C_ITMasterCplt()
6034 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6035 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6037 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6039 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6042 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6046 hi2c->MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6048 HAL_I2C_MemTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6053 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6056 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6060 hi2c->MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6062 HAL_I2C_MasterTxCpltCallback(hi2c); in I2C_ITMasterCplt()
6067 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITMasterCplt()
6069 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITMasterCplt()
6070 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITMasterCplt()
6072 if (hi2c->Mode == HAL_I2C_MODE_MEM) in I2C_ITMasterCplt()
6074 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6077 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6081 hi2c->MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6083 HAL_I2C_MemRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6088 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITMasterCplt()
6091 __HAL_UNLOCK(hi2c); in I2C_ITMasterCplt()
6095 hi2c->MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6097 HAL_I2C_MasterRxCpltCallback(hi2c); in I2C_ITMasterCplt()
6113 static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITSlaveCplt() argument
6115 uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); in I2C_ITSlaveCplt()
6117 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITSlaveCplt()
6120 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_ITSlaveCplt()
6125 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); in I2C_ITSlaveCplt()
6126 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; in I2C_ITSlaveCplt()
6130 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); in I2C_ITSlaveCplt()
6131 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; in I2C_ITSlaveCplt()
6139 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_ITSlaveCplt()
6142 I2C_RESET_CR2(hi2c); in I2C_ITSlaveCplt()
6145 I2C_Flush_TXDR(hi2c); in I2C_ITSlaveCplt()
6151 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITSlaveCplt()
6153 if (hi2c->hdmatx != NULL) in I2C_ITSlaveCplt()
6155 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); in I2C_ITSlaveCplt()
6158 else if (hi2c->hmdmatx != NULL) in I2C_ITSlaveCplt()
6160 hi2c->XferCount = I2C_GET_MDMA_REMAIN_DATA_TX(hi2c); in I2C_ITSlaveCplt()
6167 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITSlaveCplt()
6169 if (hi2c->hdmarx != NULL) in I2C_ITSlaveCplt()
6171 hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); in I2C_ITSlaveCplt()
6174 else if (hi2c->hmdmarx != NULL) in I2C_ITSlaveCplt()
6176 hi2c->XferCount = I2C_GET_MDMA_REMAIN_DATA_RX(hi2c); in I2C_ITSlaveCplt()
6192 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITSlaveCplt()
6195 hi2c->pBuffPtr++; in I2C_ITSlaveCplt()
6197 if ((hi2c->XferSize > 0U)) in I2C_ITSlaveCplt()
6199 hi2c->XferSize--; in I2C_ITSlaveCplt()
6200 hi2c->XferCount--; in I2C_ITSlaveCplt()
6205 if (hi2c->XferCount != 0U) in I2C_ITSlaveCplt()
6208 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITSlaveCplt()
6211 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITSlaveCplt()
6212 hi2c->XferISR = NULL; in I2C_ITSlaveCplt()
6214 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) in I2C_ITSlaveCplt()
6217 I2C_ITError(hi2c, hi2c->ErrorCode); in I2C_ITSlaveCplt()
6220 if (hi2c->State == HAL_I2C_STATE_LISTEN) in I2C_ITSlaveCplt()
6223 I2C_ITListenCplt(hi2c, tmpITFlags); in I2C_ITSlaveCplt()
6226 else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) in I2C_ITSlaveCplt()
6229 I2C_ITSlaveSeqCplt(hi2c); in I2C_ITSlaveCplt()
6231 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITSlaveCplt()
6232 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6233 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6236 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6240 hi2c->ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6242 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITSlaveCplt()
6246 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) in I2C_ITSlaveCplt()
6248 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6249 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6252 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6256 hi2c->SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6258 HAL_I2C_SlaveRxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6263 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITSlaveCplt()
6264 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITSlaveCplt()
6267 __HAL_UNLOCK(hi2c); in I2C_ITSlaveCplt()
6271 hi2c->SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6273 HAL_I2C_SlaveTxCpltCallback(hi2c); in I2C_ITSlaveCplt()
6284 static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) in I2C_ITListenCplt() argument
6287 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITListenCplt()
6288 hi2c->PreviousState = I2C_STATE_NONE; in I2C_ITListenCplt()
6289 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITListenCplt()
6290 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITListenCplt()
6291 hi2c->XferISR = NULL; in I2C_ITListenCplt()
6297 *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; in I2C_ITListenCplt()
6300 hi2c->pBuffPtr++; in I2C_ITListenCplt()
6302 if ((hi2c->XferSize > 0U)) in I2C_ITListenCplt()
6304 hi2c->XferSize--; in I2C_ITListenCplt()
6305 hi2c->XferCount--; in I2C_ITListenCplt()
6308 hi2c->ErrorCode |= HAL_I2C_ERROR_AF; in I2C_ITListenCplt()
6313 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITListenCplt()
6316 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_ITListenCplt()
6319 __HAL_UNLOCK(hi2c); in I2C_ITListenCplt()
6323 hi2c->ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6325 HAL_I2C_ListenCpltCallback(hi2c); in I2C_ITListenCplt()
6335 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) in I2C_ITError() argument
6337 HAL_I2C_StateTypeDef tmpstate = hi2c->State; in I2C_ITError()
6341 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_ITError()
6342 hi2c->XferOptions = I2C_NO_OPTION_FRAME; in I2C_ITError()
6343 hi2c->XferCount = 0U; in I2C_ITError()
6346 hi2c->ErrorCode |= ErrorCode; in I2C_ITError()
6354 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6357 hi2c->State = HAL_I2C_STATE_LISTEN; in I2C_ITError()
6358 hi2c->XferISR = I2C_Slave_ISR_IT; in I2C_ITError()
6363 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); in I2C_ITError()
6367 if (hi2c->State != HAL_I2C_STATE_ABORT) in I2C_ITError()
6370 hi2c->State = HAL_I2C_STATE_READY; in I2C_ITError()
6372 hi2c->XferISR = NULL; in I2C_ITError()
6376 tmppreviousstate = hi2c->PreviousState; in I2C_ITError()
6378 if (((hi2c->hdmatx != NULL) || (hi2c->hmdmatx != NULL)) && \ in I2C_ITError()
6381 if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ in I2C_ITError()
6385 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) in I2C_ITError()
6387 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_ITError()
6390 if ((hi2c->hdmatx != NULL) && (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY)) in I2C_ITError()
6394 hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6397 __HAL_UNLOCK(hi2c); in I2C_ITError()
6400 if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) in I2C_ITError()
6403 hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); in I2C_ITError()
6407 else if ((hi2c->hmdmatx != NULL) && (HAL_MDMA_GetState(hi2c->hmdmatx) != HAL_MDMA_STATE_READY)) in I2C_ITError()
6411 hi2c->hmdmatx->XferAbortCallback = I2C_MDMAAbort; in I2C_ITError()
6414 __HAL_UNLOCK(hi2c); in I2C_ITError()
6417 if (HAL_MDMA_Abort_IT(hi2c->hmdmatx) != HAL_OK) in I2C_ITError()
6420 hi2c->hmdmatx->XferAbortCallback(hi2c->hmdmatx); in I2C_ITError()
6426 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6431 else if (((hi2c->hdmarx != NULL) || (hi2c->hmdmarx != NULL)) && \ in I2C_ITError()
6434 else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ in I2C_ITError()
6438 if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) in I2C_ITError()
6440 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_ITError()
6443 if ((hi2c->hdmarx != NULL) && (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY)) in I2C_ITError()
6447 hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; in I2C_ITError()
6450 __HAL_UNLOCK(hi2c); in I2C_ITError()
6453 if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) in I2C_ITError()
6456 hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); in I2C_ITError()
6460 else if ((hi2c->hmdmarx != NULL) && (HAL_MDMA_GetState(hi2c->hmdmarx) != HAL_MDMA_STATE_READY)) in I2C_ITError()
6464 hi2c->hmdmarx->XferAbortCallback = I2C_MDMAAbort; in I2C_ITError()
6467 __HAL_UNLOCK(hi2c); in I2C_ITError()
6470 if (HAL_MDMA_Abort_IT(hi2c->hmdmarx) != HAL_OK) in I2C_ITError()
6473 hi2c->hmdmarx->XferAbortCallback(hi2c->hmdmarx); in I2C_ITError()
6479 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6484 I2C_TreatErrorCallback(hi2c); in I2C_ITError()
6493 static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) in I2C_TreatErrorCallback() argument
6495 if (hi2c->State == HAL_I2C_STATE_ABORT) in I2C_TreatErrorCallback()
6497 hi2c->State = HAL_I2C_STATE_READY; in I2C_TreatErrorCallback()
6498 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6501 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6505 hi2c->AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6507 HAL_I2C_AbortCpltCallback(hi2c); in I2C_TreatErrorCallback()
6512 hi2c->PreviousState = I2C_STATE_NONE; in I2C_TreatErrorCallback()
6515 __HAL_UNLOCK(hi2c); in I2C_TreatErrorCallback()
6519 hi2c->ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6521 HAL_I2C_ErrorCallback(hi2c); in I2C_TreatErrorCallback()
6531 static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) in I2C_Flush_TXDR() argument
6535 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) in I2C_Flush_TXDR()
6537 hi2c->Instance->TXDR = 0x00U; in I2C_Flush_TXDR()
6541 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) in I2C_Flush_TXDR()
6543 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); in I2C_Flush_TXDR()
6555 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterTransmitCplt() local
6558 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMAMasterTransmitCplt()
6561 if (hi2c->XferCount == 0U) in I2C_DMAMasterTransmitCplt()
6564 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterTransmitCplt()
6570 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterTransmitCplt()
6573 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterTransmitCplt()
6575 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterTransmitCplt()
6579 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterTransmitCplt()
6583 if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in I2C_DMAMasterTransmitCplt()
6584 hi2c->XferSize) != HAL_OK) in I2C_DMAMasterTransmitCplt()
6587 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterTransmitCplt()
6592 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterTransmitCplt()
6606 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((MDMA_HandleTypeDef *)hmdma)->Parent); in I2C_MDMAMasterTransmitCplt() local
6609 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_MDMAMasterTransmitCplt()
6612 if (hi2c->XferCount == 0U) in I2C_MDMAMasterTransmitCplt()
6615 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_MDMAMasterTransmitCplt()
6621 hi2c->pBuffPtr += hi2c->XferSize; in I2C_MDMAMasterTransmitCplt()
6624 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_MDMAMasterTransmitCplt()
6626 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_MDMAMasterTransmitCplt()
6630 hi2c->XferSize = hi2c->XferCount; in I2C_MDMAMasterTransmitCplt()
6634 if (HAL_MDMA_Start_IT(hi2c->hmdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, in I2C_MDMAMasterTransmitCplt()
6635 hi2c->XferSize, 1) != HAL_OK) in I2C_MDMAMasterTransmitCplt()
6638 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_MDMAMasterTransmitCplt()
6643 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_MDMAMasterTransmitCplt()
6657 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveTransmitCplt() local
6658 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveTransmitCplt()
6663 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_DMASlaveTransmitCplt()
6667 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveTransmitCplt()
6686 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((MDMA_HandleTypeDef *)hmdma)->Parent); in I2C_MDMASlaveTransmitCplt() local
6688 if ((hi2c->XferOptions == I2C_NEXT_FRAME) || (hi2c->XferOptions == I2C_FIRST_FRAME)) in I2C_MDMASlaveTransmitCplt()
6691 hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; in I2C_MDMASlaveTransmitCplt()
6695 I2C_ITSlaveSeqCplt(hi2c); in I2C_MDMASlaveTransmitCplt()
6714 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAMasterReceiveCplt() local
6717 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMAMasterReceiveCplt()
6720 if (hi2c->XferCount == 0U) in I2C_DMAMasterReceiveCplt()
6723 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_DMAMasterReceiveCplt()
6729 hi2c->pBuffPtr += hi2c->XferSize; in I2C_DMAMasterReceiveCplt()
6732 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_DMAMasterReceiveCplt()
6734 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_DMAMasterReceiveCplt()
6738 hi2c->XferSize = hi2c->XferCount; in I2C_DMAMasterReceiveCplt()
6742 if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, in I2C_DMAMasterReceiveCplt()
6743 hi2c->XferSize) != HAL_OK) in I2C_DMAMasterReceiveCplt()
6746 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAMasterReceiveCplt()
6751 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_DMAMasterReceiveCplt()
6765 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((MDMA_HandleTypeDef *)hmdma)->Parent); in I2C_MDMAMasterReceiveCplt() local
6768 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_MDMAMasterReceiveCplt()
6771 if (hi2c->XferCount == 0U) in I2C_MDMAMasterReceiveCplt()
6774 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); in I2C_MDMAMasterReceiveCplt()
6780 hi2c->pBuffPtr += hi2c->XferSize; in I2C_MDMAMasterReceiveCplt()
6783 if (hi2c->XferCount > MAX_NBYTE_SIZE) in I2C_MDMAMasterReceiveCplt()
6785 hi2c->XferSize = MAX_NBYTE_SIZE; in I2C_MDMAMasterReceiveCplt()
6789 hi2c->XferSize = hi2c->XferCount; in I2C_MDMAMasterReceiveCplt()
6793 if (HAL_MDMA_Start_IT(hi2c->hmdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, in I2C_MDMAMasterReceiveCplt()
6794 hi2c->XferSize, 1) != HAL_OK) in I2C_MDMAMasterReceiveCplt()
6797 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_MDMAMasterReceiveCplt()
6802 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); in I2C_MDMAMasterReceiveCplt()
6816 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMASlaveReceiveCplt() local
6817 uint32_t tmpoptions = hi2c->XferOptions; in I2C_DMASlaveReceiveCplt()
6819 if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ in I2C_DMASlaveReceiveCplt()
6823 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_DMASlaveReceiveCplt()
6826 I2C_ITSlaveSeqCplt(hi2c); in I2C_DMASlaveReceiveCplt()
6845 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((MDMA_HandleTypeDef *)hmdma)->Parent); in I2C_MDMASlaveReceiveCplt() local
6847 if ((I2C_GET_MDMA_REMAIN_DATA_RX(hi2c) == 0U) && \ in I2C_MDMASlaveReceiveCplt()
6848 (hi2c->XferOptions != I2C_NO_OPTION_FRAME)) in I2C_MDMASlaveReceiveCplt()
6851 hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; in I2C_MDMASlaveReceiveCplt()
6854 I2C_ITSlaveSeqCplt(hi2c); in I2C_MDMASlaveReceiveCplt()
6874 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAError() local
6876 if (hi2c->hdmatx != NULL) in I2C_DMAError()
6878 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) in I2C_DMAError()
6884 if (hi2c->hdmarx != NULL) in I2C_DMAError()
6886 if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) in I2C_DMAError()
6896 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_DMAError()
6899 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_DMAError()
6912 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((MDMA_HandleTypeDef *)hmdma)->Parent); in I2C_MDMAError() local
6915 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_MDMAError()
6918 I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); in I2C_MDMAError()
6931 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in I2C_DMAAbort() local
6934 if (hi2c->hdmatx != NULL) in I2C_DMAAbort()
6936 hi2c->hdmatx->XferAbortCallback = NULL; in I2C_DMAAbort()
6938 if (hi2c->hdmarx != NULL) in I2C_DMAAbort()
6940 hi2c->hdmarx->XferAbortCallback = NULL; in I2C_DMAAbort()
6943 I2C_TreatErrorCallback(hi2c); in I2C_DMAAbort()
6956 I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((MDMA_HandleTypeDef *)hmdma)->Parent); in I2C_MDMAAbort() local
6959 hi2c->Instance->CR2 |= I2C_CR2_NACK; in I2C_MDMAAbort()
6962 if (hi2c->hmdmatx != NULL) in I2C_MDMAAbort()
6964 hi2c->hmdmatx->XferAbortCallback = NULL; in I2C_MDMAAbort()
6966 if (hi2c->hmdmarx != NULL) in I2C_MDMAAbort()
6968 hi2c->hmdmarx->XferAbortCallback = NULL; in I2C_MDMAAbort()
6971 I2C_TreatErrorCallback(hi2c); in I2C_MDMAAbort()
6986 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta… in I2C_WaitOnFlagUntilTimeout() argument
6989 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) in I2C_WaitOnFlagUntilTimeout()
6996 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnFlagUntilTimeout()
6997 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnFlagUntilTimeout()
6998 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnFlagUntilTimeout()
7001 __HAL_UNLOCK(hi2c); in I2C_WaitOnFlagUntilTimeout()
7017 static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnTXISFlagUntilTimeout() argument
7020 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) in I2C_WaitOnTXISFlagUntilTimeout()
7023 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnTXISFlagUntilTimeout()
7033 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnTXISFlagUntilTimeout()
7034 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnTXISFlagUntilTimeout()
7035 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnTXISFlagUntilTimeout()
7038 __HAL_UNLOCK(hi2c); in I2C_WaitOnTXISFlagUntilTimeout()
7055 static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnSTOPFlagUntilTimeout() argument
7058 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_WaitOnSTOPFlagUntilTimeout()
7061 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnSTOPFlagUntilTimeout()
7069 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnSTOPFlagUntilTimeout()
7070 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnSTOPFlagUntilTimeout()
7071 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnSTOPFlagUntilTimeout()
7074 __HAL_UNLOCK(hi2c); in I2C_WaitOnSTOPFlagUntilTimeout()
7090 static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, in I2C_WaitOnRXNEFlagUntilTimeout() argument
7093 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) in I2C_WaitOnRXNEFlagUntilTimeout()
7096 if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) in I2C_WaitOnRXNEFlagUntilTimeout()
7102 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) in I2C_WaitOnRXNEFlagUntilTimeout()
7106 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) in I2C_WaitOnRXNEFlagUntilTimeout()
7114 if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) in I2C_WaitOnRXNEFlagUntilTimeout()
7116 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_WaitOnRXNEFlagUntilTimeout()
7117 hi2c->ErrorCode = HAL_I2C_ERROR_AF; in I2C_WaitOnRXNEFlagUntilTimeout()
7121 hi2c->ErrorCode = HAL_I2C_ERROR_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7125 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_WaitOnRXNEFlagUntilTimeout()
7128 I2C_RESET_CR2(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7130 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7131 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_WaitOnRXNEFlagUntilTimeout()
7134 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7143 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_WaitOnRXNEFlagUntilTimeout()
7144 hi2c->State = HAL_I2C_STATE_READY; in I2C_WaitOnRXNEFlagUntilTimeout()
7147 __HAL_UNLOCK(hi2c); in I2C_WaitOnRXNEFlagUntilTimeout()
7163 static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti… in I2C_IsErrorOccurred() argument
7166 uint32_t itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7175 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); in I2C_IsErrorOccurred()
7179 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) in I2C_IsErrorOccurred()
7186 tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); in I2C_IsErrorOccurred()
7187 tmp2 = hi2c->Mode; in I2C_IsErrorOccurred()
7190 if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ in I2C_IsErrorOccurred()
7195 hi2c->Instance->CR2 |= I2C_CR2_STOP; in I2C_IsErrorOccurred()
7201 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) in I2C_IsErrorOccurred()
7206 hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; in I2C_IsErrorOccurred()
7207 hi2c->State = HAL_I2C_STATE_READY; in I2C_IsErrorOccurred()
7208 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_IsErrorOccurred()
7211 __HAL_UNLOCK(hi2c); in I2C_IsErrorOccurred()
7224 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); in I2C_IsErrorOccurred()
7233 itflag = hi2c->Instance->ISR; in I2C_IsErrorOccurred()
7242 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); in I2C_IsErrorOccurred()
7253 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); in I2C_IsErrorOccurred()
7264 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); in I2C_IsErrorOccurred()
7272 I2C_Flush_TXDR(hi2c); in I2C_IsErrorOccurred()
7275 I2C_RESET_CR2(hi2c); in I2C_IsErrorOccurred()
7277 hi2c->ErrorCode |= error_code; in I2C_IsErrorOccurred()
7278 hi2c->State = HAL_I2C_STATE_READY; in I2C_IsErrorOccurred()
7279 hi2c->Mode = HAL_I2C_MODE_NONE; in I2C_IsErrorOccurred()
7282 __HAL_UNLOCK(hi2c); in I2C_IsErrorOccurred()
7307 static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t… in I2C_TransferConfig() argument
7311 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); in I2C_TransferConfig()
7321 MODIFY_REG(hi2c->Instance->CR2, \ in I2C_TransferConfig()
7334 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Enable_IRQ() argument
7338 if ((hi2c->XferISR == I2C_Master_ISR_DMA) || \ in I2C_Enable_IRQ()
7339 (hi2c->XferISR == I2C_Slave_ISR_DMA)) in I2C_Enable_IRQ()
7395 __HAL_I2C_ENABLE_IT(hi2c, tmpisr); in I2C_Enable_IRQ()
7405 static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) in I2C_Disable_IRQ() argument
7414 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7426 if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) in I2C_Disable_IRQ()
7460 __HAL_I2C_DISABLE_IT(hi2c, tmpisr); in I2C_Disable_IRQ()
7468 static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) in I2C_ConvertOtherXferOptions() argument
7473 if (hi2c->XferOptions == I2C_OTHER_FRAME) in I2C_ConvertOtherXferOptions()
7475 hi2c->XferOptions = I2C_FIRST_FRAME; in I2C_ConvertOtherXferOptions()
7481 else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) in I2C_ConvertOtherXferOptions()
7483 hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; in I2C_ConvertOtherXferOptions()