RA Flexible Software Package Documentation  Release v5.6.0

 
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.