RZV Flexible Software Package Documentation  Release v3.0.0

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

Detailed Description

Interface for I2C master communication.

Summary

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

Data Structures

struct  i2c_master_callback_args_t
 
struct  i2c_master_status_t
 
struct  i2c_master_cfg_t
 
struct  i2c_master_api_t
 
struct  i2c_master_instance_t
 

Typedefs

typedef void i2c_master_ctrl_t
 

Enumerations

enum  i2c_master_rate_t
 
enum  i2c_master_addr_mode_t
 
enum  i2c_master_event_t
 

Data Structure Documentation

◆ i2c_master_callback_args_t

struct i2c_master_callback_args_t

I2C callback parameter definition

Data Fields
void const * p_context Pointer to user-provided context.
i2c_master_event_t event Event code.

◆ i2c_master_status_t

struct i2c_master_status_t

I2C status indicators

Data Fields
bool open True if driver is open.

◆ i2c_master_cfg_t

struct i2c_master_cfg_t

I2C configuration block

Data Fields

uint8_t channel
 Identifier recognizable by implementation. More...
 
i2c_master_rate_t rate
 Device's maximum clock rate from enum i2c_rate_t.
 
uint32_t slave
 The address of the slave device.
 
i2c_master_addr_mode_t addr_mode
 Indicates how slave fields should be interpreted.
 
uint8_t ipl
 Interrupt priority level. Same for RXI, TXI, TEI and ERI.
 
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.
 
transfer_instance_t const * p_transfer_tx
 Transfer instance for I2C transmit. Set to NULL if unused. More...
 
transfer_instance_t const * p_transfer_rx
 Transfer instance for I2C receive. Set to NULL if unused.
 
void(* p_callback )(i2c_master_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_master_cfg_t::channel

Identifier recognizable by implementation.

Generic configuration

◆ p_transfer_tx

transfer_instance_t const* i2c_master_cfg_t::p_transfer_tx

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

Transfer API support

◆ p_callback

void(* i2c_master_cfg_t::p_callback) (i2c_master_callback_args_t *p_args)

Pointer to callback function.

Parameters to control software behavior

◆ p_extend

void const* i2c_master_cfg_t::p_extend

Any configuration data needed by the hardware.

Implementation-specific configuration

◆ i2c_master_api_t

struct i2c_master_api_t

Interface definition for I2C access as master

Data Fields

fsp_err_t(* open )(i2c_master_ctrl_t *const p_ctrl, i2c_master_cfg_t const *const p_cfg)
 
fsp_err_t(* read )(i2c_master_ctrl_t *const p_ctrl, uint8_t *const p_dest, uint32_t const bytes, bool const restart)
 
fsp_err_t(* write )(i2c_master_ctrl_t *const p_ctrl, uint8_t *const p_src, uint32_t const bytes, bool const restart)
 
fsp_err_t(* abort )(i2c_master_ctrl_t *const p_ctrl)
 
fsp_err_t(* slaveAddressSet )(i2c_master_ctrl_t *const p_ctrl, uint32_t const slave, i2c_master_addr_mode_t const addr_mode)
 
fsp_err_t(* callbackSet )(i2c_master_ctrl_t *const p_ctrl, void(*p_callback)(i2c_master_callback_args_t *), void const *const p_context, i2c_master_callback_args_t *const p_callback_memory)
 
fsp_err_t(* statusGet )(i2c_master_ctrl_t *const p_ctrl, i2c_master_status_t *p_status)
 
fsp_err_t(* close )(i2c_master_ctrl_t *const p_ctrl)
 

Field Documentation

◆ open

fsp_err_t(* i2c_master_api_t::open) (i2c_master_ctrl_t *const p_ctrl, i2c_master_cfg_t const *const p_cfg)

Opens the I2C Master 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_master_api_t::read) (i2c_master_ctrl_t *const p_ctrl, uint8_t *const p_dest, uint32_t const bytes, bool const restart)

Performs a read operation on an I2C Master device.

Parameters
[in]p_ctrlPointer to control block set in i2c_master_api_t::open call.
[in]p_destPointer to the location to store read data.
[in]bytesNumber of bytes to read.
[in]restartSpecify if the restart condition should be issued after reading.

◆ write

fsp_err_t(* i2c_master_api_t::write) (i2c_master_ctrl_t *const p_ctrl, uint8_t *const p_src, uint32_t const bytes, bool const restart)

Performs a write operation on an I2C Master device.

Parameters
[in]p_ctrlPointer to control block set in i2c_master_api_t::open call.
[in]p_srcPointer to the location to get write data from.
[in]bytesNumber of bytes to write.
[in]restartSpecify if the restart condition should be issued after writing.

◆ abort

fsp_err_t(* i2c_master_api_t::abort) (i2c_master_ctrl_t *const p_ctrl)

Performs a reset of the peripheral.

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

◆ slaveAddressSet

fsp_err_t(* i2c_master_api_t::slaveAddressSet) (i2c_master_ctrl_t *const p_ctrl, uint32_t const slave, i2c_master_addr_mode_t const addr_mode)

Sets address of the slave device without reconfiguring the bus.

Parameters
[in]p_ctrlPointer to control block set in i2c_master_api_t::open call.
[in]slave_addressAddress of the slave device.
[in]address_modeAddressing mode.

◆ callbackSet

fsp_err_t(* i2c_master_api_t::callbackSet) (i2c_master_ctrl_t *const p_ctrl, void(*p_callback)(i2c_master_callback_args_t *), void const *const p_context, i2c_master_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 Master 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.

◆ statusGet

fsp_err_t(* i2c_master_api_t::statusGet) (i2c_master_ctrl_t *const p_ctrl, i2c_master_status_t *p_status)

Gets the status of the configured I2C device.

Parameters
[in]p_ctrlPointer to the IIC Master control block.
[out]p_statusPointer to store current status.

◆ close

fsp_err_t(* i2c_master_api_t::close) (i2c_master_ctrl_t *const p_ctrl)

Closes the driver and releases the I2C Master device.

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

◆ i2c_master_instance_t

struct i2c_master_instance_t

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

Data Fields
i2c_master_ctrl_t * p_ctrl Pointer to the control structure for this instance.
i2c_master_cfg_t const * p_cfg Pointer to the configuration structure for this instance.
i2c_master_api_t const * p_api Pointer to the API structure for this instance.

Typedef Documentation

◆ i2c_master_ctrl_t

typedef void i2c_master_ctrl_t

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

Enumeration Type Documentation

◆ i2c_master_rate_t

Communication speed options

Enumerator
I2C_MASTER_RATE_STANDARD 

100 kHz

I2C_MASTER_RATE_FAST 

400 kHz

I2C_MASTER_RATE_FASTPLUS 

1 MHz

◆ i2c_master_addr_mode_t

Addressing mode options

Enumerator
I2C_MASTER_ADDR_MODE_7BIT 

Use 7-bit addressing mode.

I2C_MASTER_ADDR_MODE_10BIT 

Use 10-bit addressing mode.

◆ i2c_master_event_t

Callback events

Enumerator
I2C_MASTER_EVENT_ABORTED 

A transfer was aborted.

I2C_MASTER_EVENT_RX_COMPLETE 

A receive operation was completed successfully.

I2C_MASTER_EVENT_TX_COMPLETE 

A transmit operation was completed successfully.

I2C_MASTER_EVENT_START 

I2C sent a start condition.

I2C_MASTER_EVENT_BYTE_ACK 

I2C finished sending/receiving 1 data byte.