Go to the documentation of this file.
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
Structure representing an I2C driver.
@ I2C_UNINIT
Not initialized.
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 i2cReleaseBus(I2CDriver *i2cp)
Releases exclusive access to the I2C bus.
@ I2C_ACTIVE_RX
Receiving.
i2cflags_t i2cGetErrors(I2CDriver *i2cp)
Returns the errors mask associated to the previous operation.
void i2cStart(I2CDriver *i2cp, const I2CConfig *config)
Configures and activates the I2C peripheral.
msg_t i2cMasterReceiveTimeout(I2CDriver *i2cp, i2caddr_t addr, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Receives data from the I2C bus.
PLATFORM I2C subsystem low level driver header.
void i2cStop(I2CDriver *i2cp)
Deactivates the I2C peripheral.
void i2cObjectInit(I2CDriver *i2cp)
Initializes the standard part of a I2CDriver structure.
void i2cAcquireBus(I2CDriver *i2cp)
Gains exclusive access to the I2C bus.
@ I2C_ACTIVE_TX
Transmitting.
uint16_t i2caddr_t
Type representing an I2C address.
uint32_t i2cflags_t
Type of I2C Driver condition flags.
uint64_t sysinterval_t
Type of time interval.
i2cstate_t
Driver state machine possible states.
Type of I2C driver configuration structure.
void i2cInit(void)
I2C Driver initialization.