VSF Documented
Macros | Functions
i2c_common.c File Reference
#include "hal/driver/driver.h"

Macros

#define VSF_I2C_CFG_FUNCTION_RENAME   DISABLED
 

Functions

vsf_err_t vsf_i2c_init (vsf_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr)
 initialize a i2c instance.
 
void vsf_i2c_fini (vsf_i2c_t *i2c_ptr)
 termination a i2c instance.
 
fsm_rt_t vsf_i2c_enable (vsf_i2c_t *i2c_ptr)
 enable i2c instance.
 
fsm_rt_t vsf_i2c_disable (vsf_i2c_t *i2c_ptr)
 disable i2c instance.
 
void vsf_i2c_irq_enable (vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
 enable interrupt masks of i2c instance.
 
void vsf_i2c_irq_disable (vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
 disable interrupt masks of i2c instance.
 
vsf_i2c_status_t vsf_i2c_status (vsf_i2c_t *i2c_ptr)
 get the status of i2c instance.
 
vsf_i2c_capability_t vsf_i2c_capability (vsf_i2c_t *i2c_ptr)
 get the capability of i2c instance.
 
vsf_err_t vsf_i2c_master_request (vsf_i2c_t *i2c_ptr, uint16_t address, vsf_i2c_cmd_t cmd, uint16_t count, uint8_t *buffer_ptr)
 i2c instance as master mode request a transfer
 
uint_fast32_t vsf_i2c_get_transferred_count (vsf_i2c_t *i2c_ptr)
 get the counter of transfers for current request by the i2c master
 

Macro Definition Documentation

◆ VSF_I2C_CFG_FUNCTION_RENAME

#define VSF_I2C_CFG_FUNCTION_RENAME   DISABLED

Function Documentation

◆ vsf_i2c_init()

vsf_err_t vsf_i2c_init ( vsf_i2c_t i2c_ptr,
vsf_i2c_cfg_t cfg_ptr 
)

initialize a i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
[in]cfg_ptra pointer to structure vsf_i2c_cfg_t
Returns
vsf_err_t: VSF_ERR_NONE if i2c was initialized, or a negative error code
Note
It is not necessary to call vsf_i2c_fini() to deinitialization. vsf_i2c_init() should be called before any other i2c API except vsf_i2c_capability().

◆ vsf_i2c_fini()

void vsf_i2c_fini ( vsf_i2c_t i2c_ptr)

termination a i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Note
Termination an i2c instance should include turning off the corresponding power gating.

◆ vsf_i2c_enable()

fsm_rt_t vsf_i2c_enable ( vsf_i2c_t i2c_ptr)

enable i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
fsm_rt_t: fsm_rt_cpl if enable complete, else return fsm_rt_onging
Note
vsf_i2c_enable() should be called after vsf_i2c_init(). The clock gating bit only needs to be ensured to be turned on after vsf_i2c_enable().

◆ vsf_i2c_disable()

fsm_rt_t vsf_i2c_disable ( vsf_i2c_t i2c_ptr)

disable i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
fsm_rt_t: fsm_rt_cpl if disable complete, else return fsm_rt_onging
Note
Need to make sure that calling vsf_i2c_enable() after vsf_i2c_disable() is working without calling vsf_i2c_init()

◆ vsf_i2c_irq_enable()

void vsf_i2c_irq_enable ( vsf_i2c_t i2c_ptr,
vsf_i2c_irq_mask_t  irq_mask 
)

enable interrupt masks of i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
[in]irq_maskone or more value of enum vsf_i2c_irq_mask_t
Returns
none.
Note
All pending interrupts should be cleared before interrupts are enabled.

◆ vsf_i2c_irq_disable()

void vsf_i2c_irq_disable ( vsf_i2c_t i2c_ptr,
vsf_i2c_irq_mask_t  irq_mask 
)

disable interrupt masks of i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
[in]irq_maskone or more value of enum vsf_i2c_irq_mask_t, vsf_i2c_irq_mask_t
Returns
none.

◆ vsf_i2c_status()

vsf_i2c_status_t vsf_i2c_status ( vsf_i2c_t i2c_ptr)

get the status of i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
vsf_i2c_status_t: return all status of current i2c

◆ vsf_i2c_capability()

vsf_i2c_capability_t vsf_i2c_capability ( vsf_i2c_t i2c_ptr)

get the capability of i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
vsf_i2c_capability_t: return all capability of current i2c vsf_i2c_capability_t

◆ vsf_i2c_master_request()

vsf_err_t vsf_i2c_master_request ( vsf_i2c_t i2c_ptr,
uint16_t  address,
vsf_i2c_cmd_t  cmd,
uint16_t  count,
uint8_t buffer_ptr 
)

i2c instance as master mode request a transfer

Note
i2c_msg_ptr can be a local variable.
Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
[in]addressaddress of i2c transfer
[in]cmdi2c cmd
[in]counti2c transfer buffer count (in byte)
[in]buffer_ptri2c transfer buffer
Returns
vsf_err_t: VSF_ERR_NONE if i2c was successfully, or a negative error code

◆ vsf_i2c_get_transferred_count()

uint_fast32_t vsf_i2c_get_transferred_count ( vsf_i2c_t i2c_ptr)

get the counter of transfers for current request by the i2c master

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
uint_fast32_t: counter of transferred
Note
This API can be used after the slave NAK and until the next transmission