RZV Flexible Software Package Documentation  Release v3.1.0

 
All Data Structures Functions Variables Typedefs Enumerations Enumerator Modules Pages
I2C Slave Interface

Detailed Description

Interface for I2C slave communication.

Summary

The I2C slave interface provides a common API for I2C HAL drivers. The I2C slave interface supports:

Data Structures

struct  i2c_slave_callback_args_t
 
struct  i2c_slave_cfg_t
 
struct  i2c_slave_api_t
 
struct  i2c_slave_instance_t
 

Typedefs

typedef void i2c_slave_ctrl_t
 

Enumerations

enum  i2c_slave_rate_t
 
enum  i2c_slave_addr_mode_t
 
enum  i2c_slave_event_t
 

Data Structure Documentation

◆ i2c_slave_callback_args_t

struct i2c_slave_callback_args_t

I2C callback parameter definition

Data Fields
void const * p_context Pointer to user-provided context.
uint32_t bytes Number of received/transmitted bytes in buffer.
i2c_slave_event_t event Event code.

◆ i2c_slave_cfg_t

struct i2c_slave_cfg_t

I2C configuration block

Data Fields

uint8_t channel
 Identifier recognizable by implementation. More...
 
i2c_slave_rate_t rate
 Device's maximum clock rate from enum i2c_rate_t.
 
uint16_t slave
 The address of the slave device.
 
i2c_slave_addr_mode_t addr_mode
 Indicates how slave fields should be interpreted.
 
bool general_call_enable
 Allow a General call from master.
 
IRQn_Type rxi_irq
 Receive IRQ number.
 
IRQn_Type txi_irq
 Transmit IRQ number.
 
IRQn_Type tei_irq
 Transmit end IRQ number.
 
IRQn_Type eri_irq
 Error IRQ number.
 
uint8_t ipl
 Interrupt priority level for receive, transmit, and transmit end interrupts.
 
uint8_t eri_ipl
 Interrupt priority level for error interrupt.
 
bool clock_stretching_enable
 Low Hold SCL during reception for the period between the 9th and the 1st clock cycle.
 
transfer_instance_t const * p_transfer_tx
 DTC instance for I2C transmit.Set to NULL if unused. More...
 
transfer_instance_t const * p_transfer_rx
 DTC instance for I2C receive. Set to NULL if unused.
 
void(* p_callback )(i2c_slave_callback_args_t *p_args)
 Pointer to callback function. More...
 
void const * p_context
 Pointer to the user-provided context.
 
void const * p_extend
 Any configuration data needed by the hardware. More...
 

Field Documentation

◆ channel

uint8_t i2c_slave_cfg_t::channel

Identifier recognizable by implementation.

Generic configuration

◆ p_transfer_tx

transfer_instance_t const* i2c_slave_cfg_t::p_transfer_tx

DTC instance for I2C transmit.Set to NULL if unused.

DTC support

◆ p_callback

void(* i2c_slave_cfg_t::p_callback) (i2c_slave_callback_args_t *p_args)

Pointer to callback function.

Parameters to control software behavior

◆ p_extend

void const* i2c_slave_cfg_t::p_extend

Any configuration data needed by the hardware.

Implementation-specific configuration

◆ i2c_slave_api_t

struct i2c_slave_api_t

Interface definition for I2C access as slave

Data Fields

fsp_err_t(* open )(i2c_slave_ctrl_t *const p_ctrl, i2c_slave_cfg_t const *const p_cfg)
 
fsp_err_t(* read )(i2c_slave_ctrl_t *const p_ctrl, uint8_t *const p_dest, uint32_t const bytes)
 
fsp_err_t(* write )(i2c_slave_ctrl_t *const p_ctrl, uint8_t *const p_src, uint32_t const bytes)
 
fsp_err_t(* callbackSet )(i2c_slave_ctrl_t *const p_ctrl, void(*p_callback)(i2c_slave_callback_args_t *), void const *const p_context, i2c_slave_callback_args_t *const p_callback_memory)
 
fsp_err_t(* close )(i2c_slave_ctrl_t *const p_ctrl)
 

Field Documentation

◆ open

fsp_err_t(* i2c_slave_api_t::open) (i2c_slave_ctrl_t *const p_ctrl, i2c_slave_cfg_t const *const p_cfg)

Opens the I2C Slave driver and initializes the hardware.

Parameters
[in]p_ctrlPointer to control block. Must be declared by user. Elements are set here.
[in]p_cfgPointer to configuration structure.

◆ read

fsp_err_t(* i2c_slave_api_t::read) (i2c_slave_ctrl_t *const p_ctrl, uint8_t *const p_dest, uint32_t const bytes)

Performs a read operation on an I2C Slave device.

Parameters
[in]p_ctrlPointer to control block set in i2c_slave_api_t::open call.
[in]p_destPointer to the location to store read data.
[in]bytesNumber of bytes to read.

◆ write

fsp_err_t(* i2c_slave_api_t::write) (i2c_slave_ctrl_t *const p_ctrl, uint8_t *const p_src, uint32_t const bytes)

Performs a write operation on an I2C Slave device.

Parameters
[in]p_ctrlPointer to control block set in i2c_slave_api_t::open call.
[in]p_srcPointer to the location to get write data from.
[in]bytesNumber of bytes to write.

◆ callbackSet

fsp_err_t(* i2c_slave_api_t::callbackSet) (i2c_slave_ctrl_t *const p_ctrl, void(*p_callback)(i2c_slave_callback_args_t *), void const *const p_context, i2c_slave_callback_args_t *const p_callback_memory)

Specify callback function and optional context pointer and working memory pointer.

Parameters
[in]p_ctrlPointer to the IIC Slave control block.
[in]p_callbackCallback function
[in]p_contextPointer to send to callback function
[in]p_working_memoryPointer to volatile memory where callback structure can be allocated. Callback arguments allocated here are only valid during the callback.

◆ close

fsp_err_t(* i2c_slave_api_t::close) (i2c_slave_ctrl_t *const p_ctrl)

Closes the driver and releases the I2C Slave device.

Parameters
[in]p_ctrlPointer to control block set in i2c_slave_api_t::open call.

◆ i2c_slave_instance_t

struct i2c_slave_instance_t

This structure encompasses everything that is needed to use an instance of this interface.

Data Fields
i2c_slave_ctrl_t * p_ctrl Pointer to the control structure for this instance.
i2c_slave_cfg_t const * p_cfg Pointer to the configuration structure for this instance.
i2c_slave_api_t const * p_api Pointer to the API structure for this instance.

Typedef Documentation

◆ i2c_slave_ctrl_t

typedef void i2c_slave_ctrl_t

I2C control block. Allocate an instance specific control block to pass into the I2C API calls.

Enumeration Type Documentation

◆ i2c_slave_rate_t

Communication speed options

Enumerator
I2C_SLAVE_RATE_STANDARD 

100 kHz

I2C_SLAVE_RATE_FAST 

400 kHz

I2C_SLAVE_RATE_FASTPLUS 

1 MHz

◆ i2c_slave_addr_mode_t

Addressing mode options

Enumerator
I2C_SLAVE_ADDR_MODE_7BIT 

Use 7-bit addressing mode.

I2C_SLAVE_ADDR_MODE_10BIT 

Use 10-bit addressing mode.

◆ i2c_slave_event_t

Callback events

Enumerator
I2C_SLAVE_EVENT_ABORTED 

A transfer was aborted.

I2C_SLAVE_EVENT_RX_COMPLETE 

A receive operation was completed successfully.

I2C_SLAVE_EVENT_TX_COMPLETE 

A transmit operation was completed successfully.

I2C_SLAVE_EVENT_RX_REQUEST 

A read operation expected from slave. Detected a write from master.

I2C_SLAVE_EVENT_TX_REQUEST 

A write operation expected from slave. Detected a read from master.

I2C_SLAVE_EVENT_RX_MORE_REQUEST 

A read operation expected from slave. Master sends out more data than configured to be read in slave.

I2C_SLAVE_EVENT_TX_MORE_REQUEST 

A write operation expected from slave. Master requests more data than configured to be written by slave.

I2C_SLAVE_EVENT_GENERAL_CALL 

General Call address received from Master. Detected a write from master.