Infineon I2C protocol stack library. More...
Data Structures | |
struct | ifx_i2c_pl |
Physical layer structure. More... | |
struct | ifx_i2c_dl |
Datalink layer structure. More... | |
struct | ifx_i2c_tl |
Transport layer structure. More... | |
struct | ifx_i2c_context |
IFX I2C context structure. More... | |
Macros | |
#define | IFX_I2C_BASE_ADDR (0x30) |
I2C slave address of the Infineon device. | |
#define | PL_POLLING_INVERVAL_US (1000) |
Physical Layer: polling interval in microseconds. | |
#define | PL_POLLING_MAX_CNT (200) |
Physical layer: maximal attempts. | |
#define | PL_DATA_POLLING_INVERVAL_US (5000) |
Physical Layer: data register polling interval in microseconds. | |
#define | PL_GUARD_TIME_INTERVAL_US (50) |
Physical Layer: guard time interval in microseconds. | |
#define | DL_MAX_FRAME_SIZE (300) |
Data link layer: maximum frame size. | |
#define | DL_HEADER_SIZE (5) |
Data link layer: header size. | |
#define | DL_TRANS_REPEAT (3) |
Data link layer: maximum number of retries in case of transmission error. | |
#define | PL_TRANS_TIMEOUT_MS (10) |
Data link layer: Trans timeout in milliseconds. | |
#define | TL_MAX_EXIT_TIMEOUT (6) |
Transport layer: Maximum exit timeout in seconds. | |
#define | RESET_LOW_TIME_MSEC (2000) |
Reset low time for GPIO pin toggling. | |
#define | STARTUP_TIME_MSEC (12000) |
Start up time. | |
#define | IFX_I2C_STACK_SUCCESS (0x00) |
Protocol Stack: Status codes for success. | |
#define | IFX_I2C_STACK_ERROR (0x01) |
Protocol Stack: Status codes for error. | |
#define | IFX_I2C_STACK_BUSY (0x02) |
Protocol Stack: Status codes busy. | |
#define | IFX_I2C_STACK_MEM_ERROR (0x03) |
Protocol Stack: Memory insufficient. | |
#define | IFX_I2C_FATAL_ERROR (0x04) |
Protocol Stack: Fatal error. Used internal to IFX I2C Stack. | |
#define | IFX_I2C_DL_HEADER_OFFSET (0) |
Offset of Datalink header in tx_frame_buffer. | |
#define | IFX_I2C_TL_HEADER_OFFSET (IFX_I2C_DL_HEADER_OFFSET+3) |
Offset of Transport header in tx_frame_buffer. | |
#define | IFX_I2C_LOG_PL 0 |
Protocol Stack debug switch for physical layer (set to 0 or 1) | |
#define | IFX_I2C_LOG_DL 0 |
Protocol Stack debug switch for data link layer (set to 0 or 1) | |
#define | IFX_I2C_LOG_TL 0 |
Protocol Stack debug switch for transport layer (set to 0 or 1) | |
#define | IFX_I2C_LOG_ID_PL 0x00 |
Log ID number for physical layer. | |
#define | IFX_I2C_LOG_ID_DL 0x01 |
Log ID number for data link layer. | |
#define | IFX_I2C_LOG_ID_TL 0x02 |
Log ID number for transport layer. | |
#define | IFX_I2C_LOG_ID_PAL 0x04 |
Log ID number for platform abstraction layer. | |
#define | IFX_I2C_DL_EVENT_ERROR (0x01) |
Error event propagated to upper layer. | |
#define | IFX_I2C_DL_EVENT_TX_SUCCESS (0x02) |
Transmit success event propagated to upper layer (bit field 1) | |
#define | IFX_I2C_DL_EVENT_RX_SUCCESS (0x04) |
Receive success event propagated to upper layer (bit field 3) | |
Typedefs | |
typedef enum ifx_i2c_reset_type | ifx_i2c_reset_type_t |
IFX I2C Reset types. | |
typedef void(* | ifx_i2c_event_handler_t )(struct ifx_i2c_context *ctx, host_lib_status_t event, const uint8_t *data, uint16_t data_len) |
Event handler function prototype. | |
typedef struct ifx_i2c_pl | ifx_i2c_pl_t |
Physical layer structure. | |
typedef struct ifx_i2c_dl | ifx_i2c_dl_t |
Datalink layer structure. | |
typedef struct ifx_i2c_tl | ifx_i2c_tl_t |
Transport layer structure. | |
typedef struct ifx_i2c_context | ifx_i2c_context_t |
IFX I2C context structure. | |
Enumerations | |
enum | ifx_i2c_reset_type { IFX_I2C_COLD_RESET = 0U, IFX_I2C_SOFT_RESET = 1U, IFX_I2C_WARM_RESET = 2U } |
IFX I2C Reset types. More... | |
Functions | |
host_lib_status_t | ifx_i2c_open (ifx_i2c_context_t *p_ctx) |
Initializes the IFX I2C protocol stack for a given context. | |
host_lib_status_t | ifx_i2c_reset (ifx_i2c_context_t *p_ctx, ifx_i2c_reset_type_t reset_type) |
Resets the I2C slave. | |
host_lib_status_t | ifx_i2c_transceive (ifx_i2c_context_t *p_ctx, const uint8_t *p_data, const uint16_t *p_data_length, uint8_t *p_buffer, uint16_t *p_buffer_len) |
Sends a command and receives a response for the command. | |
host_lib_status_t | ifx_i2c_close (ifx_i2c_context_t *p_ctx) |
Closes the IFX I2C protocol stack for a given context. | |
host_lib_status_t | ifx_i2c_set_slave_address (ifx_i2c_context_t *p_ctx, uint8_t slave_address, uint8_t persistent) |
Sets the slave address of the target device. | |
host_lib_status_t | ifx_i2c_dl_init (ifx_i2c_context_t *p_ctx, ifx_i2c_event_handler_t handler) |
Function for initializing the module. More... | |
host_lib_status_t | ifx_i2c_dl_send_frame (ifx_i2c_context_t *p_ctx, uint16_t frame_len) |
Function for sending a frame. More... | |
host_lib_status_t | ifx_i2c_dl_receive_frame (ifx_i2c_context_t *p_ctx) |
Function for receiving a frame. More... | |
host_lib_status_t | ifx_i2c_pl_init (ifx_i2c_context_t *p_ctx, ifx_i2c_event_handler_t handler) |
Function for initializing the module. More... | |
host_lib_status_t | ifx_i2c_pl_send_frame (ifx_i2c_context_t *p_ctx, uint8_t *p_frame, uint16_t frame_len) |
Function for sending a frame. More... | |
host_lib_status_t | ifx_i2c_pl_receive_frame (ifx_i2c_context_t *p_ctx) |
Function for receiving a frame. More... | |
host_lib_status_t | ifx_i2c_pl_write_slave_address (ifx_i2c_context_t *p_ctx, uint8_t slave_address, uint8_t storage_type) |
Function for setting slave address. More... | |
host_lib_status_t | ifx_i2c_tl_init (ifx_i2c_context_t *p_ctx, ifx_i2c_event_handler_t handler) |
Function for initializing the module. More... | |
host_lib_status_t | ifx_i2c_tl_transceive (ifx_i2c_context_t *p_ctx, uint8_t *p_packet, uint16_t packet_len, uint8_t *p_recv_packet, uint16_t *recv_packet_len) |
Function to transmit and receive a packet. More... | |
Variables | |
ifx_i2c_context_t | ifx_i2c_context_0 |
IFX I2C Instance. | |
Infineon I2C protocol stack library.
enum ifx_i2c_reset_type |
host_lib_status_t ifx_i2c_dl_init | ( | ifx_i2c_context_t * | p_ctx, |
ifx_i2c_event_handler_t | handler | ||
) |
Function for initializing the module.
Function initializes and enables the module and registers an event handler to receive events from this module.
[in,out] | p_ctx | Pointer to ifx i2c context. |
[in] | handler | Function pointer to the event handler of the upper layer. |
IFX_I2C_STACK_SUCCESS | If initialization was successful. |
IFX_I2C_STACK_ERROR | If the module is already initialized. |
host_lib_status_t ifx_i2c_dl_receive_frame | ( | ifx_i2c_context_t * | p_ctx | ) |
Function for receiving a frame.
Asynchronous function to receive a frame. The function returns immediately. One of the following events is propagated to the event handler registered with ifx_i2c_dl_init.
[in,out] | p_ctx | Pointer to ifx i2c context. |
IFX_I2C_STACK_SUCCESS | If function was successful. |
IFX_I2C_STACK_ERROR | If the module is busy. |
host_lib_status_t ifx_i2c_dl_send_frame | ( | ifx_i2c_context_t * | p_ctx, |
uint16_t | frame_len | ||
) |
Function for sending a frame.
Asynchronous function to send a frame. The function returns immediately. One of the following events is propagated to the event handler registered with ifx_i2c_dl_init.
[in,out] | p_ctx | Pointer to ifx i2c context. |
[in] | frame_len | Frame length. |
IFX_I2C_STACK_SUCCESS | If function was successful. |
IFX_I2C_STACK_ERROR | If the module is busy. |
host_lib_status_t ifx_i2c_pl_init | ( | ifx_i2c_context_t * | p_ctx, |
ifx_i2c_event_handler_t | handler | ||
) |
Function for initializing the module.
Function initializes and enables the module and registers an event handler to receive events from this module.
[in,out] | p_ctx | Pointer to ifx i2c context. |
[in] | handler | Function pointer to the event handler of the upper layer. |
IFX_I2C_STACK_SUCCESS | If initialization was successful. |
IFX_I2C_STACK_ERROR | If the module is already initialized. |
host_lib_status_t ifx_i2c_pl_receive_frame | ( | ifx_i2c_context_t * | p_ctx | ) |
Function for receiving a frame.
Asynchronous function to receive a frame. The function returns immediately. One of the following events is propagated to the event handler registered with ifx_i2c_pl_init
[in] | p_ctx | Pointer to ifx i2c context. |
IFX_I2C_STACK_SUCCESS | If function was successful. |
IFX_I2C_STACK_ERROR | If the module is busy. |
host_lib_status_t ifx_i2c_pl_send_frame | ( | ifx_i2c_context_t * | p_ctx, |
uint8_t * | p_frame, | ||
uint16_t | frame_len | ||
) |
Function for sending a frame.
Asynchronous function to send a frame. The function returns immediately. One of the following events is propagated to the event handler registered with ifx_i2c_pl_init
[in,out] | p_ctx | Pointer to ifx i2c context. |
[in] | p_frame | Buffer containing the frame. |
[in] | frame_len | Frame length. |
IFX_I2C_STACK_SUCCESS | If function was successful. |
IFX_I2C_STACK_ERROR | If the module is busy. |
host_lib_status_t ifx_i2c_pl_write_slave_address | ( | ifx_i2c_context_t * | p_ctx, |
uint8_t | slave_address, | ||
uint8_t | storage_type | ||
) |
Function for setting slave address.
Synchronous function to set slave address.
[in] | p_ctx | Pointer to ifx i2c context. |
[in] | slave_address | Holds new slave address[7 Bit] to be set. |
[in] | storage_type | Storage type. |
IFX_I2C_STACK_SUCCESS | If function was successful. |
IFX_I2C_STACK_ERROR | If setting slave address fails. |
host_lib_status_t ifx_i2c_tl_init | ( | ifx_i2c_context_t * | p_ctx, |
ifx_i2c_event_handler_t | handler | ||
) |
Function for initializing the module.
Function initializes and enables the module and registers an event handler to receive events from this module.
[in,out] | p_ctx | Pointer to ifx i2c context. |
[in] | handler | Function pointer to the event handler of the upper layer. |
IFX_I2C_STACK_SUCCESS | If initialization was successful. |
IFX_I2C_STACK_ERROR | If the module is already initialized. |
host_lib_status_t ifx_i2c_tl_transceive | ( | ifx_i2c_context_t * | p_ctx, |
uint8_t * | p_packet, | ||
uint16_t | packet_len, | ||
uint8_t * | p_recv_packet, | ||
uint16_t * | recv_packet_len | ||
) |
Function to transmit and receive a packet.
Asynchronous function to send and receive a packet. The function returns immediately. One of the following events is propagated to the event handler registered with ifx_i2c_tl_init
[in,out] | p_ctx | Pointer to ifx i2c context. |
[in] | p_packet | Buffer containing the packet header. |
[in] | packet_len | Packet header length. |
[in] | p_recv_packet | Buffer containing the packet payload. |
[in] | recv_packet_len | Packet payload length. |
IFX_I2C_STACK_SUCCESS | If function was successful. |
IFX_I2C_STACK_ERROR | If the module is busy. |