180#ifdef HAL_SMBUS_MODULE_ENABLED
187#define SMBUS_TIMEOUT_FLAG 35U
188#define SMBUS_TIMEOUT_BUSY_FLAG 25U
189#define SMBUS_NO_OPTION_FRAME 0xFFFF0000U
191#define SMBUS_SENDPEC_MODE I2C_CR1_PEC
192#define SMBUS_GET_PEC(__HANDLE__) (((__HANDLE__)->Instance->SR2 & I2C_SR2_PEC) >> 8)
195#define SMBUS_STATE_MSK ((uint32_t)((HAL_SMBUS_STATE_BUSY_TX | HAL_SMBUS_STATE_BUSY_RX) & (~(uint32_t)HAL_SMBUS_STATE_READY)))
196#define SMBUS_STATE_NONE ((uint32_t)(HAL_SMBUS_MODE_NONE))
197#define SMBUS_STATE_MASTER_BUSY_TX ((uint32_t)((HAL_SMBUS_STATE_BUSY_TX & SMBUS_STATE_MSK) | HAL_SMBUS_MODE_MASTER))
198#define SMBUS_STATE_MASTER_BUSY_RX ((uint32_t)((HAL_SMBUS_STATE_BUSY_RX & SMBUS_STATE_MSK) | HAL_SMBUS_MODE_MASTER))
199#define SMBUS_STATE_SLAVE_BUSY_TX ((uint32_t)((HAL_SMBUS_STATE_BUSY_TX & SMBUS_STATE_MSK) | HAL_SMBUS_MODE_SLAVE))
200#define SMBUS_STATE_SLAVE_BUSY_RX ((uint32_t)((HAL_SMBUS_STATE_BUSY_RX & SMBUS_STATE_MSK) | HAL_SMBUS_MODE_SLAVE))
284 uint32_t freqrange = 0U;
295#if defined(I2C_FLTR_ANOFF)
313#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
324 if (hsmbus->MspInitCallback == NULL)
330 hsmbus->MspInitCallback(hsmbus);
350 MODIFY_REG(hsmbus->
Instance->CR2, I2C_CR2_FREQ, freqrange);
371#if defined(I2C_FLTR_ANOFF)
411#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
412 if (hsmbus->MspDeInitCallback == NULL)
418 hsmbus->MspDeInitCallback(hsmbus);
465#if defined(I2C_FLTR_ANOFF)&&defined(I2C_FLTR_DNF)
487 hsmbus->
Instance->FLTR &= ~(I2C_FLTR_ANOFF);
490 hsmbus->
Instance->FLTR |= AnalogFilter;
530 tmpreg &= ~(I2C_FLTR_DNF);
533 tmpreg |= DigitalFilter;
550#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
574 if (pCallback == NULL)
577 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
588 case HAL_SMBUS_MASTER_TX_COMPLETE_CB_ID :
589 hsmbus->MasterTxCpltCallback = pCallback;
592 case HAL_SMBUS_MASTER_RX_COMPLETE_CB_ID :
593 hsmbus->MasterRxCpltCallback = pCallback;
596 case HAL_SMBUS_SLAVE_TX_COMPLETE_CB_ID :
597 hsmbus->SlaveTxCpltCallback = pCallback;
600 case HAL_SMBUS_SLAVE_RX_COMPLETE_CB_ID :
601 hsmbus->SlaveRxCpltCallback = pCallback;
604 case HAL_SMBUS_LISTEN_COMPLETE_CB_ID :
605 hsmbus->ListenCpltCallback = pCallback;
608 case HAL_SMBUS_ERROR_CB_ID :
609 hsmbus->ErrorCallback = pCallback;
612 case HAL_SMBUS_ABORT_CB_ID :
613 hsmbus->AbortCpltCallback = pCallback;
616 case HAL_SMBUS_MSPINIT_CB_ID :
617 hsmbus->MspInitCallback = pCallback;
620 case HAL_SMBUS_MSPDEINIT_CB_ID :
621 hsmbus->MspDeInitCallback = pCallback;
626 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
637 case HAL_SMBUS_MSPINIT_CB_ID :
638 hsmbus->MspInitCallback = pCallback;
641 case HAL_SMBUS_MSPDEINIT_CB_ID :
642 hsmbus->MspDeInitCallback = pCallback;
647 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
657 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
698 case HAL_SMBUS_MASTER_TX_COMPLETE_CB_ID :
702 case HAL_SMBUS_MASTER_RX_COMPLETE_CB_ID :
706 case HAL_SMBUS_SLAVE_TX_COMPLETE_CB_ID :
710 case HAL_SMBUS_SLAVE_RX_COMPLETE_CB_ID :
714 case HAL_SMBUS_LISTEN_COMPLETE_CB_ID :
718 case HAL_SMBUS_ERROR_CB_ID :
722 case HAL_SMBUS_ABORT_CB_ID :
726 case HAL_SMBUS_MSPINIT_CB_ID :
730 case HAL_SMBUS_MSPDEINIT_CB_ID :
736 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
747 case HAL_SMBUS_MSPINIT_CB_ID :
751 case HAL_SMBUS_MSPDEINIT_CB_ID :
757 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
767 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
790 if (pCallback == NULL)
799 hsmbus->AddrCallback = pCallback;
804 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
836 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
920 uint32_t count = 0x00U;
952 if ((hsmbus->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
959 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_POS);
973 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_START);
1005 __IO uint32_t count = 0U;
1037 if ((hsmbus->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1044 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_POS);
1063 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
1066 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_START);
1074 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
1080 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
1083 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_START);
1133 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
1136 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
1174 if ((pData == NULL) || (Size == 0U))
1183 if ((hsmbus->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1190 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_POS);
1240 if ((pData == NULL) || (Size == 0U))
1249 if ((hsmbus->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1256 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_POS);
1304 if ((hsmbus->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1311 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
1344 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
1366 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_ALERT);
1385 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ALERT);
1406 uint32_t tickstart = 0U, tmp1 = 0U, tmp2 = 0U, tmp3 = 0U, SMBUS_Trials = 1U;
1423 if ((hsmbus->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1430 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_POS);
1439 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_START);
1456 tmp3 = hsmbus->
State;
1459 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
1465 tmp3 = hsmbus->
State;
1474 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
1495 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
1507 while (SMBUS_Trials++ < Trials);
1530 uint32_t sr2itflags = READ_REG(hsmbus->
Instance->SR2);
1531 uint32_t sr1itflags = READ_REG(hsmbus->
Instance->SR1);
1532 uint32_t itsources = READ_REG(hsmbus->
Instance->CR2);
1534 uint32_t CurrentMode = hsmbus->
Mode;
1635 uint32_t tmp1 = 0U, tmp2 = 0U, tmp3 = 0U, tmp4 = 0U;
1636 uint32_t sr1itflags = READ_REG(hsmbus->
Instance->SR1);
1637 uint32_t itsources = READ_REG(hsmbus->
Instance->CR2);
1670 tmp1 = hsmbus->
Mode;
1672 tmp3 = hsmbus->
State;
1689 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
1814 UNUSED(TransferDirection);
1898 return hsmbus->
State;
1909 return hsmbus->
Mode;
1944 uint32_t CurrentState = hsmbus->
State;
1945 uint32_t CurrentXferOptions = hsmbus->
XferOptions;
1958#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
1959 hsmbus->MasterTxCpltCallback(hsmbus);
1970 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
1976#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
1977 hsmbus->MasterTxCpltCallback(hsmbus);
1999 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_PEC);
2022 uint32_t CurrentXferOptions = hsmbus->
XferOptions;
2043#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2044 hsmbus->MasterTxCpltCallback(hsmbus);
2055 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
2060#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2061 hsmbus->MasterTxCpltCallback(hsmbus);
2080 uint32_t CurrentXferOptions = hsmbus->
XferOptions;
2115 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
2118 else if ((tmp == 1U) || (tmp == 0U))
2121 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2134#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2135 hsmbus->MasterRxCpltCallback(hsmbus);
2154 uint32_t CurrentXferOptions = hsmbus->
XferOptions;
2174 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2187 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2190 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_START);
2195 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
2212#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2213 hsmbus->MasterRxCpltCallback(hsmbus);
2296 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_START);
2309 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
2317 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2325 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2333 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2339 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_STOP);
2347 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2350 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_POS);
2357 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2366 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2394 uint32_t CurrentState = hsmbus->
State;
2417#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2418 hsmbus->SlaveTxCpltCallback(hsmbus);
2446 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_PEC);
2460 uint32_t CurrentState = hsmbus->
State;
2470 SET_BIT(hsmbus->
Instance->CR1, I2C_CR1_PEC);
2483#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2484 hsmbus->SlaveRxCpltCallback(hsmbus);
2520 uint16_t SlaveAddrCode = 0U;
2538#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2539 hsmbus->AddrCallback(hsmbus, TransferDirection, SlaveAddrCode);
2556 uint32_t CurrentState = hsmbus->
State;
2565 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2612#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2613 hsmbus->ListenCpltCallback(hsmbus);
2630 uint32_t CurrentState = hsmbus->
State;
2631 uint32_t CurrentXferOptions = hsmbus->
XferOptions;
2646 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_ACK);
2653#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2654 hsmbus->ListenCpltCallback(hsmbus);
2672 uint32_t CurrentState = hsmbus->
State;
2693 CLEAR_BIT(hsmbus->
Instance->CR1, I2C_CR1_POS);
2711#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2712 hsmbus->AbortCpltCallback(hsmbus);
2727#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2728 hsmbus->ErrorCallback(hsmbus);
2744#if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
2745 hsmbus->ListenCpltCallback(hsmbus);
2765 if (Status == RESET)
2772 if ((Timeout == 0U) || ((
HAL_GetTick() - Tickstart) > Timeout))
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
uint32_t HAL_RCC_GetPCLK1Freq(void)
Returns the PCLK1 frequency.
#define HAL_SMBUS_ERROR_ARLO
#define HAL_SMBUS_ERROR_AF
#define HAL_SMBUS_ERROR_BERR
#define HAL_SMBUS_ERROR_TIMEOUT
#define HAL_SMBUS_ERROR_PECERR
#define HAL_SMBUS_ERROR_OVR
#define HAL_SMBUS_ERROR_ALERT
#define HAL_SMBUS_ERROR_NONE
HAL_StatusTypeDef HAL_SMBUS_DeInit(SMBUS_HandleTypeDef *hsmbus)
DeInitializes the SMBUS peripheral.
void HAL_SMBUS_MspDeInit(SMBUS_HandleTypeDef *hsmbus)
DeInitialize the SMBUS MSP.
void HAL_SMBUS_MspInit(SMBUS_HandleTypeDef *hsmbus)
Initialize the SMBUS MSP.
HAL_StatusTypeDef HAL_SMBUS_Init(SMBUS_HandleTypeDef *hsmbus)
Initializes the SMBUS according to the specified parameters in the SMBUS_InitTypeDef and initialize t...
__weak void HAL_SMBUS_SlaveRxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Slave Rx Transfer completed callback.
HAL_StatusTypeDef HAL_SMBUS_DisableListen_IT(SMBUS_HandleTypeDef *hsmbus)
Disable the Address listen mode with Interrupt.
__weak void HAL_SMBUS_AddrCallback(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)
Slave Address Match callback.
void HAL_SMBUS_EV_IRQHandler(SMBUS_HandleTypeDef *hsmbus)
This function handles SMBUS event interrupt request.
HAL_StatusTypeDef HAL_SMBUS_DisableAlert_IT(SMBUS_HandleTypeDef *hsmbus)
Disable the SMBUS alert mode with Interrupt.
HAL_StatusTypeDef HAL_SMBUS_EnableAlert_IT(SMBUS_HandleTypeDef *hsmbus)
Enable the SMBUS alert mode with Interrupt.
__weak void HAL_SMBUS_ErrorCallback(SMBUS_HandleTypeDef *hsmbus)
SMBUS error callback.
__weak void HAL_SMBUS_MasterRxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Master Rx Transfer completed callback.
HAL_StatusTypeDef HAL_SMBUS_EnableListen_IT(SMBUS_HandleTypeDef *hsmbus)
Enable the Address listen mode with Interrupt.
HAL_StatusTypeDef HAL_SMBUS_Master_Abort_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress)
Abort a master/host SMBUS process communication with Interrupt.
HAL_StatusTypeDef HAL_SMBUS_Slave_Receive_IT(SMBUS_HandleTypeDef *hsmbus, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Enable the Address listen mode with Interrupt.
__weak void HAL_SMBUS_MasterTxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Master Tx Transfer completed callback.
HAL_StatusTypeDef HAL_SMBUS_Master_Receive_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Receive in master/host SMBUS mode an amount of data in non blocking mode with Interrupt.
void HAL_SMBUS_ER_IRQHandler(SMBUS_HandleTypeDef *hsmbus)
This function handles SMBUS error interrupt request.
HAL_StatusTypeDef HAL_SMBUS_Master_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Transmits in master mode an amount of data in blocking mode.
HAL_StatusTypeDef HAL_SMBUS_IsDeviceReady(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)
Check if target device is ready for communication.
__weak void HAL_SMBUS_AbortCpltCallback(SMBUS_HandleTypeDef *hsmbus)
SMBUS abort callback.
HAL_StatusTypeDef HAL_SMBUS_Slave_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Transmit in slave/device SMBUS mode an amount of data in non blocking mode with Interrupt.
__weak void HAL_SMBUS_ListenCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Listen Complete callback.
__weak void HAL_SMBUS_SlaveTxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Slave Tx Transfer completed callback.
uint32_t HAL_SMBUS_GetError(SMBUS_HandleTypeDef *hsmbus)
Return the SMBUS error code.
HAL_SMBUS_StateTypeDef HAL_SMBUS_GetState(SMBUS_HandleTypeDef *hsmbus)
Return the SMBUS handle state.
HAL_SMBUS_ModeTypeDef HAL_SMBUS_GetMode(SMBUS_HandleTypeDef *hsmbus)
Return the SMBUS Master, Slave or no mode.
#define __HAL_SMBUS_CLEAR_ADDRFLAG(__HANDLE__)
Clears the SMBUS ADDR pending flag.
#define __HAL_SMBUS_GET_FLAG(__HANDLE__, __FLAG__)
Checks whether the specified SMBUS flag is set or not.
#define __HAL_SMBUS_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable or disable the specified SMBUS interrupts.
#define __HAL_SMBUS_ENABLE(__HANDLE__)
Enable the SMBUS peripheral.
#define __HAL_SMBUS_CLEAR_STOPFLAG(__HANDLE__)
Clears the SMBUS STOPF pending flag.
#define __HAL_SMBUS_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clears the SMBUS pending flags which are cleared by writing 0 in a specific bit.
#define __HAL_SMBUS_DISABLE_IT(__HANDLE__, __INTERRUPT__)
#define __HAL_SMBUS_DISABLE(__HANDLE__)
Disable the SMBUS peripheral.
HAL_SMBUS_StateTypeDef
HAL State structure definition.
HAL_SMBUS_ModeTypeDef
HAL Mode structure definition.
@ HAL_SMBUS_STATE_TIMEOUT
@ HAL_SMBUS_STATE_BUSY_RX
@ HAL_SMBUS_STATE_BUSY_RX_LISTEN
@ HAL_SMBUS_STATE_BUSY_TX_LISTEN
@ HAL_SMBUS_STATE_BUSY_TX
#define SMBUS_FLAG_PECERR
#define SMBUS_FLAG_SMBALERT
#define SMBUS_FLAG_TIMEOUT
#define SMBUS_NO_OPTION_FRAME
#define SMBUS_STATE_MASTER_BUSY_TX
#define SMBUS_STATE_MASTER_BUSY_RX
#define SMBUS_STATE_SLAVE_BUSY_TX
#define SMBUS_STATE_SLAVE_BUSY_RX
#define SMBUS_TIMEOUT_BUSY_FLAG
#define SMBUS_GET_PEC(__HANDLE__)
static HAL_StatusTypeDef SMBUS_MasterReceive_BTF(SMBUS_HandleTypeDef *hsmbus)
Handle BTF flag for Master receiver.
static HAL_StatusTypeDef SMBUS_SlaveReceive_RXNE(SMBUS_HandleTypeDef *hsmbus)
Handle RXNE flag for Slave.
static HAL_StatusTypeDef SMBUS_MasterTransmit_TXE(SMBUS_HandleTypeDef *hsmbus)
Handle TXE flag for Master.
static HAL_StatusTypeDef SMBUS_Master_ADD10(SMBUS_HandleTypeDef *hsmbus)
Handle ADD10 flag for Master.
static HAL_StatusTypeDef SMBUS_SlaveReceive_BTF(SMBUS_HandleTypeDef *hsmbus)
Handle BTF flag for Slave receiver.
static HAL_StatusTypeDef SMBUS_Master_ADDR(SMBUS_HandleTypeDef *hsmbus)
Handle ADDR flag for Master.
static HAL_StatusTypeDef SMBUS_Slave_ADDR(SMBUS_HandleTypeDef *hsmbus)
Handle ADD flag for Slave.
static HAL_StatusTypeDef SMBUS_MasterTransmit_BTF(SMBUS_HandleTypeDef *hsmbus)
Handle BTF flag for Master transmitter.
static HAL_StatusTypeDef SMBUS_Slave_AF(SMBUS_HandleTypeDef *hsmbus)
static HAL_StatusTypeDef SMBUS_Slave_STOPF(SMBUS_HandleTypeDef *hsmbus)
Handle STOPF flag for Slave.
static void SMBUS_Flush_DR(SMBUS_HandleTypeDef *hsmbus)
SMBUS data register flush process.
static HAL_StatusTypeDef SMBUS_Master_SB(SMBUS_HandleTypeDef *hsmbus)
Handle SB flag for Master.
static HAL_StatusTypeDef SMBUS_SlaveTransmit_TXE(SMBUS_HandleTypeDef *hsmbus)
Handle TXE flag for Slave.
static void SMBUS_ITError(SMBUS_HandleTypeDef *hsmbus)
SMBUS interrupts error process.
static HAL_StatusTypeDef SMBUS_WaitOnFlagUntilTimeout(SMBUS_HandleTypeDef *hsmbus, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t Tickstart)
This function handles SMBUS Communication Timeout.
static HAL_StatusTypeDef SMBUS_SlaveTransmit_BTF(SMBUS_HandleTypeDef *hsmbus)
Handle BTF flag for Slave transmitter.
static HAL_StatusTypeDef SMBUS_MasterReceive_RXNE(SMBUS_HandleTypeDef *hsmbus)
Handle RXNE flag for Master.
#define SMBUS_FREQRANGE(__PCLK__)
#define SMBUS_RISE_TIME(__FREQRANGE__)
#define IS_SMBUS_PEC(PEC)
#define IS_SMBUS_PERIPHERAL_MODE(MODE)
#define SMBUS_10BIT_HEADER_WRITE(__ADDRESS__)
#define IS_SMBUS_OWN_ADDRESS2(ADDRESS2)
#define SMBUS_10BIT_HEADER_READ(__ADDRESS__)
#define IS_SMBUS_DUAL_ADDRESS(ADDRESS)
#define SMBUS_GET_PEC_MODE(__HANDLE__)
#define IS_SMBUS_CLOCK_SPEED(SPEED)
#define SMBUS_10BIT_ADDRESS(__ADDRESS__)
#define SMBUS_7BIT_ADD_WRITE(__ADDRESS__)
#define IS_SMBUS_NO_STRETCH(STRETCH)
#define SMBUS_SPEED_STANDARD(__PCLK__, __SPEED__)
#define SMBUS_7BIT_ADD_READ(__ADDRESS__)
#define IS_SMBUS_OWN_ADDRESS1(ADDRESS1)
#define IS_SMBUS_TRANSFER_OPTIONS_REQUEST(REQUEST)
#define IS_SMBUS_ADDRESSING_MODE(ADDRESS)
#define IS_SMBUS_GENERAL_CALL(CALL)
#define SMBUS_DIRECTION_RECEIVE
#define SMBUS_DIRECTION_TRANSMIT
#define SMBUS_FIRST_AND_LAST_FRAME_WITH_PEC
#define SMBUS_FIRST_FRAME
#define SMBUS_LAST_FRAME_NO_PEC
#define SMBUS_FIRST_AND_LAST_FRAME_NO_PEC
#define SMBUS_LAST_FRAME_WITH_PEC
#define SMBUS_ADDRESSINGMODE_7BIT
#define SMBUS_ADDRESSINGMODE_10BIT
#define SMBUS_PERIPHERAL_MODE_SMBUS_HOST
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
uint32_t PacketErrorCheckMode
SMBUS handle Structure definition.
__IO HAL_SMBUS_StateTypeDef State
__IO uint32_t PreviousState
__IO uint32_t XferOptions
__IO HAL_SMBUS_ModeTypeDef Mode