Hardware Abstraction Layer for FreeRTOS
Collaboration diagram for I2C Subsystem:

Data Structures

struct  i2c_generic
 

Enumerations

enum  i2c_mode {
  I2C_SM, I2C_FM, I2C_FMP, I2C_HSM,
  i2C_UFM
}
 

Functions

struct i2c * i2c_init (uint32_t index, enum i2c_mode mode)
 
int32_t i2c_deinit (struct i2c *i2c)
 
int32_t i2c_send (struct i2c *i2c, uint16_t id, uint8_t *data, uint32_t len, TickType_t waittime)
 
int32_t i2c_recv (struct i2c *i2c, uint16_t id, uint8_t *data, uint32_t len, TickType_t waittime)
 
int32_t i2c_transfer (struct i2c *i2c, uint16_t id, uint8_t *sendData, uint32_t sendLen, uint8_t *recvData, uint32_t recvLen, TickType_t waittime)
 
int32_t i2c_sendISR (struct i2c *i2c, uint16_t id, uint8_t *data, uint32_t len)
 
int32_t i2c_recvISR (struct i2c *i2c, uint16_t id, uint8_t *data, uint32_t len)
 
int32_t i2c_transferISR (struct i2c *i2c, uint16_t id, uint8_t *sendData, uint32_t sendLen, uint8_t *recvData, uint32_t recvLen)
 

Detailed Description

#include <i2c.h>

This is the I2C Subsystem for controlling I2C of a SOC.

Enumeration Type Documentation

◆ i2c_mode

enum i2c_mode

I2C Mode / Speed Config

Enumerator
I2C_SM 

Standard Mode (100 Kbit/s)

I2C_FM 

Fast Mode (400 Kbit/s)

I2C_FMP 

Fast Mode Plus (1 Mbit/s)

I2C_HSM 

High Speed Mode (3.4 Mbit/s)

i2C_UFM 

Ultra Fast-mode (5.0 Mbit/s)

Function Documentation

◆ i2c_deinit()

int32_t i2c_deinit ( struct i2c *  i2c)

Deinit I2C

Parameters
i2cI2C instance
Returns
-1 on error 0 on ok

◆ i2c_init()

struct i2c* i2c_init ( uint32_t  index,
enum i2c_mode  mode 
)

init I2C instance

Parameters
indexIndex of I2C
modeI2C Mode
Returns
I2C Instance NULL on Error

◆ i2c_recv()

int32_t i2c_recv ( struct i2c *  i2c,
uint16_t  id,
uint8_t *  data,
uint32_t  len,
TickType_t  waittime 
)

Recv Bytes

Parameters
i2cI2C instance
idID if id > 7-Bit Exended IDs is used
dataData
lenlen
waittimemax waittime in mutex or isr lock see xSemaphoreTake()
Returns
-1 on error 0 on ok

◆ i2c_recvISR()

int32_t i2c_recvISR ( struct i2c *  i2c,
uint16_t  id,
uint8_t *  data,
uint32_t  len 
)

Recv Bytes in Interrupt

Parameters
i2cI2C instance
idID if id > 7-Bit Exended IDs is used
dataData
lenlen
Returns
-1 on error 0 on ok

◆ i2c_send()

int32_t i2c_send ( struct i2c *  i2c,
uint16_t  id,
uint8_t *  data,
uint32_t  len,
TickType_t  waittime 
)

Send Bytes

Parameters
i2cI2C instance
idID if id > 7-Bit Exended IDs is used
dataData
len
waittimemax waittime in mutex or isr lock see xSemaphoreTake()
Returns
-1 on error 0 on ok

◆ i2c_sendISR()

int32_t i2c_sendISR ( struct i2c *  i2c,
uint16_t  id,
uint8_t *  data,
uint32_t  len 
)

Send Bytes in Interrupt

Parameters
i2cI2C instance
idID if id > 7-Bit Exended IDs is used
dataData
len
Returns
-1 on error 0 on ok

◆ i2c_transfer()

int32_t i2c_transfer ( struct i2c *  i2c,
uint16_t  id,
uint8_t *  sendData,
uint32_t  sendLen,
uint8_t *  recvData,
uint32_t  recvLen,
TickType_t  waittime 
)

Transfer Send and Recv

Parameters
i2cI2C instance
idID if id > 7-Bit Exended IDs is used
sendDataSend Data
sendLenSend len
recvDataRecv Data
recvLenRecv len
waittimemax waittime in mutex or isr lock see xSemaphoreTake()
Returns
-1 on error 0 on ok

◆ i2c_transferISR()

int32_t i2c_transferISR ( struct i2c *  i2c,
uint16_t  id,
uint8_t *  sendData,
uint32_t  sendLen,
uint8_t *  recvData,
uint32_t  recvLen 
)

Transfer Send and Recv in Interrupt

Parameters
i2cI2C instance
idID if id > 7-Bit Exended IDs is used
sendDataSend Data
sendLenSend len
recvDataRecv Data
recvLenRecv len
Returns
-1 on error 0 on ok
i2c.h