32 #if (HAL_USE_I2C == TRUE) || defined(__DOXYGEN__) 43 #define I2C_NO_ERROR 0x00 44 #define I2C_BUS_ERROR 0x01 45 #define I2C_ARBITRATION_LOST 0x02 46 #define I2C_ACK_FAILURE 0x04 47 #define I2C_OVERRUN 0x08 48 #define I2C_PEC_ERROR 0x10 50 #define I2C_TIMEOUT 0x20 51 #define I2C_SMB_ALERT 0x40 61 #if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) 62 #define I2C_USE_MUTUAL_EXCLUSION TRUE 98 #define _i2c_wakeup_isr(i2cp) do { \ 99 osalSysLockFromISR(); \ 100 osalThreadResumeI(&(i2cp)->thread, MSG_OK); \ 101 osalSysUnlockFromISR(); \ 111 #define _i2c_wakeup_error_isr(i2cp) do { \ 112 osalSysLockFromISR(); \ 113 osalThreadResumeI(&(i2cp)->thread, MSG_RESET); \ 114 osalSysUnlockFromISR(); \ 121 #define i2cMasterTransmit(i2cp, addr, txbuf, txbytes, rxbuf, rxbytes) \ 122 (i2cMasterTransmitTimeout(i2cp, addr, txbuf, txbytes, rxbuf, rxbytes, \ 129 #define i2cMasterReceive(i2cp, addr, rxbuf, rxbytes) \ 130 (i2cMasterReceiveTimeout(i2cp, addr, rxbuf, rxbytes, TIME_INFINITE)) 146 const uint8_t *txbuf,
size_t txbytes,
147 uint8_t *rxbuf,
size_t rxbytes,
151 uint8_t *rxbuf,
size_t rxbytes,
153 #if I2C_USE_MUTUAL_EXCLUSION == TRUE PLATFORM I2C subsystem low level driver header.
void i2cInit(void)
I2C Driver initialization.
msg_t i2cMasterTransmitTimeout(I2CDriver *i2cp, i2caddr_t addr, const uint8_t *txbuf, size_t txbytes, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Sends data via the I2C bus.
void i2cStart(I2CDriver *i2cp, const I2CConfig *config)
Configures and activates the I2C peripheral.
Type of I2C driver configuration structure.
void i2cAcquireBus(I2CDriver *i2cp)
Gains exclusive access to the I2C bus.
void i2cReleaseBus(I2CDriver *i2cp)
Releases exclusive access to the I2C bus.
msg_t i2cMasterReceiveTimeout(I2CDriver *i2cp, i2caddr_t addr, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Receives data from the I2C bus.
i2cflags_t i2cGetErrors(I2CDriver *i2cp)
Returns the errors mask associated to the previous operation.
void i2cObjectInit(I2CDriver *i2cp)
Initializes the standard part of a I2CDriver structure.
int32_t msg_t
Type of a message.
void i2cStop(I2CDriver *i2cp)
Deactivates the I2C peripheral.
uint32_t i2cflags_t
Type of I2C Driver condition flags.
Structure representing an I2C driver.
uint32_t sysinterval_t
Type of system time interval.
uint16_t i2caddr_t
Type representing an I2C address.
i2cstate_t
Driver state machine possible states.