I2C_Drivers (ARM) 1.1
SMFSW collection of HAL I2C Drivers for ARM
Loading...
Searching...
No Matches
I2C_component.h File Reference

Base I2C component. More...

#include <string.h>
#include "sarmfsw.h"
#include "globals.h"
Include dependency graph for I2C_component.h:

Data Structures

struct  I2C_slave_t
 i2c slave config and control parameters More...
 

Macros

#define I2C_ADDR_General_Call   0
 I2C general call address.
 
#define I2C_slave_timeout   50U
 Default timeout for transaction on I2C.
 
#define I2C_eep_slave_timeout   500U
 Default timeout for eeprom type components transaction on I2C.
 
#define I2C_ADDR(a)
 Macro to shift a 1 bit left to define 7b I2C address.
 
#define IS_I2C_7B_ADDR(ADDR)
 Macro for use with assert_param to check I2C ADDR for slave.
 

Enumerations

enum  I2C_speed { I2C_STD = 100U , I2C_FM = 400U , I2C_FMP = 1000U , I2C_HS = 3400U }
 I2C bus speed. More...
 
enum  I2C_reg_size { I2C_NO_REG = 0U , I2C_8B_REG = I2C_MEMADD_SIZE_8BIT , I2C_16B_REG = I2C_MEMADD_SIZE_16BIT }
 I2C slave internal address registers size. More...
 

Functions

void I2C_slave_init (I2C_slave_t *const slave, I2C_HandleTypeDef *const hi2c, const uint16_t devAddress, const uint32_t timeout)
 I2C Slave device initialization.
 
void I2C_set_slave_instance (I2C_slave_t *const slave, I2C_HandleTypeDef *const hi2c)
 I2C Slave device HAL instance change.
 
void I2C_set_slave_address (I2C_slave_t *const slave, const uint16_t devAddress)
 I2C Slave device address change.
 
void I2C_set_slave_timeout (I2C_slave_t *const slave, const uint32_t timeout)
 I2C Slave device transaction timeout change.
 
void I2C_set_current_mem_address (I2C_slave_t *const slave, const uint16_t addr)
 Set I2C Slave device current internal memory address.
 
void I2C_set_enable (I2C_slave_t *const slave, const bool en)
 Set I2C Slave device disabled/enabled state.
 
void I2C_set_busy (I2C_slave_t *const slave, const bool busy)
 Set I2C Slave bus/device business.
 
uint32_t I2C_get_current_mem_address (const I2C_slave_t *const slave)
 Get I2C Slave device current internal memory address.
 
bool I2C_is_enabled (const I2C_slave_t *const slave)
 Get I2C Slave device enabled state.
 
bool I2C_is_busy (const I2C_slave_t *const slave)
 Get I2C Slave device busy state.
 
I2C_HandleTypeDef * I2C_get_slave_instance (const I2C_slave_t *const slave)
 Get I2C Slave device HAL I2C instance.
 
uint16_t I2C_get_slave_address (const I2C_slave_t *const slave)
 Get I2C Slave device address.
 
uint32_t I2C_get_slave_timeout (const I2C_slave_t *const slave)
 Get I2C Slave device transaction timeout.
 
uint16_t I2C_get_slave_mem_size (const I2C_slave_t *const slave)
 Get I2C Slave device internal memory size.
 
uint16_t I2C_get_slave_max_speed (const I2C_slave_t *const slave)
 Get I2C Slave device max speed.
 
void I2C_Watchdog_Refresh (void)
 I2C Watchdog refresh callback.
 

Detailed Description

Base I2C component.

Author
SMFSW
Note
Needed symbols may be defined in globals.h or at project level. If globals.h is not used, symbol NO_GLOBALS_HEADER needs to be defined.

Macro Definition Documentation

◆ I2C_ADDR

#define I2C_ADDR ( a)
Value:
((a) << 1U)

Macro to shift a 1 bit left to define 7b I2C address.

◆ I2C_ADDR_General_Call

#define I2C_ADDR_General_Call   0

I2C general call address.

◆ I2C_eep_slave_timeout

#define I2C_eep_slave_timeout   500U

Default timeout for eeprom type components transaction on I2C.

◆ I2C_slave_timeout

#define I2C_slave_timeout   50U

Default timeout for transaction on I2C.

◆ IS_I2C_7B_ADDR

#define IS_I2C_7B_ADDR ( ADDR)
Value:
((ADDR) <= 0x7FU)

Macro for use with assert_param to check I2C ADDR for slave.

Enumeration Type Documentation

◆ I2C_reg_size

I2C slave internal address registers size.

Enumerator
I2C_NO_REG 

Internal address registers not applicable for slave.

I2C_8B_REG 

Slave internal address registers space is 8bits wide.

I2C_16B_REG 

Slave internal address registers space is 16bits wide.

◆ I2C_speed

enum I2C_speed

I2C bus speed.

Enumerator
I2C_STD 

I2C Standard speed (100KHz)

I2C_FM 

I2C Fast Mode (400KHz)

I2C_FMP 

I2C Fast Mode + (1MHz)

I2C_HS 

I2C High Speed (3.4MHz)

Function Documentation

◆ I2C_get_current_mem_address()

uint32_t I2C_get_current_mem_address ( const I2C_slave_t *const slave)
inline

Get I2C Slave device current internal memory address.

Parameters
[in,out]slave- pointer to I2C slave instance
Returns
Current internal memory address

◆ I2C_get_slave_address()

uint16_t I2C_get_slave_address ( const I2C_slave_t *const slave)
inline

Get I2C Slave device address.

Parameters
[in,out]slave- pointer to I2C slave instance
Returns
I2C Slave device address

◆ I2C_get_slave_instance()

I2C_HandleTypeDef * I2C_get_slave_instance ( const I2C_slave_t *const slave)
inline

Get I2C Slave device HAL I2C instance.

Parameters
[in,out]slave- pointer to I2C slave instance
Returns
I2C Slave device HAL I2C instance

◆ I2C_get_slave_max_speed()

uint16_t I2C_get_slave_max_speed ( const I2C_slave_t *const slave)
inline

Get I2C Slave device max speed.

Parameters
[in,out]slave- pointer to I2C slave instance
Returns
I2C Slave device maximum speed

◆ I2C_get_slave_mem_size()

uint16_t I2C_get_slave_mem_size ( const I2C_slave_t *const slave)
inline

Get I2C Slave device internal memory size.

Parameters
[in,out]slave- pointer to I2C slave instance
Returns
I2C Slave device internal memory size

◆ I2C_get_slave_timeout()

uint32_t I2C_get_slave_timeout ( const I2C_slave_t *const slave)
inline

Get I2C Slave device transaction timeout.

Parameters
[in,out]slave- pointer to I2C slave instance
Returns
I2C Slave device transaction timeout

◆ I2C_is_busy()

bool I2C_is_busy ( const I2C_slave_t *const slave)
inline

Get I2C Slave device busy state.

Parameters
[in,out]slave- pointer to I2C slave instance
Returns
true if I2C bus/slave is busy

◆ I2C_is_enabled()

bool I2C_is_enabled ( const I2C_slave_t *const slave)
inline

Get I2C Slave device enabled state.

Parameters
[in,out]slave- pointer to I2C slave instance
Returns
true if I2C slave is enabled

◆ I2C_set_busy()

void I2C_set_busy ( I2C_slave_t *const slave,
const bool busy )
inline

Set I2C Slave bus/device business.

Parameters
[in,out]slave- pointer to I2C slave instance
[in]busy- I2C bus/device state

◆ I2C_set_current_mem_address()

void I2C_set_current_mem_address ( I2C_slave_t *const slave,
const uint16_t addr )
inline

Set I2C Slave device current internal memory address.

Parameters
[in,out]slave- pointer to I2C slave instance
[in]addr- address to store in slave instance

◆ I2C_set_enable()

void I2C_set_enable ( I2C_slave_t *const slave,
const bool en )
inline

Set I2C Slave device disabled/enabled state.

Parameters
[in,out]slave- pointer to I2C slave instance
[in]en- I2C device state (disabled/enabled)

◆ I2C_set_slave_address()

void I2C_set_slave_address ( I2C_slave_t *const slave,
const uint16_t devAddress )

I2C Slave device address change.

Parameters
[in,out]slave- pointer to I2C slave instance
[in]devAddress- Device Address

◆ I2C_set_slave_instance()

void I2C_set_slave_instance ( I2C_slave_t *const slave,
I2C_HandleTypeDef *const hi2c )

I2C Slave device HAL instance change.

Parameters
[in,out]slave- pointer to I2C slave instance
[in]hi2c- pointer to HAL I2C instance

◆ I2C_set_slave_timeout()

void I2C_set_slave_timeout ( I2C_slave_t *const slave,
const uint32_t timeout )
inline

I2C Slave device transaction timeout change.

Parameters
[in,out]slave- pointer to I2C slave instance
[in]timeout- Transaction timeout

◆ I2C_slave_init()

void I2C_slave_init ( I2C_slave_t *const slave,
I2C_HandleTypeDef *const hi2c,
const uint16_t devAddress,
const uint32_t timeout )

I2C Slave device initialization.

Parameters
[in,out]slave- pointer to I2C slave instance to initialize
[in]hi2c- pointer to HAL I2C instance
[in]devAddress- Device Address
[in]timeout- Transaction timeout

◆ I2C_Watchdog_Refresh()

void I2C_Watchdog_Refresh ( void )

I2C Watchdog refresh callback.

Weak Functions
Function declared as weak, can be customly implemented in user code is specific actions needs to be taken (IWDG refreshed by default)
Here is the caller graph for this function: