HPM SDK
HPMicro Software Development Kit
hpm_i2c_drv.c File Reference
#include "hpm_i2c_drv.h"

Data Structures

struct  i2c_timing_t
 

Macros

#define HPM_I2C_DRV_DEFAULT_TPM   (0U)
 
#define HPM_I2C_DRV_DEFAULT_RETRY_COUNT   (5000U)
 
#define period_in_100ps(freq)   (10000000000UL / (freq))
 

Functions

static hpm_stat_t i2c_configure_timing (uint32_t src_clk_in_hz, i2c_mode_t i2c_mode, i2c_timing_t *timing)
 
void i2c_reset (I2C_Type *ptr)
 reset I2C More...
 
hpm_stat_t i2c_init_master (I2C_Type *ptr, uint32_t src_clk_in_hz, i2c_config_t *config)
 I2C master initialization. More...
 
hpm_stat_t i2c_master_address_read (I2C_Type *ptr, const uint16_t device_address, uint8_t *addr, uint32_t addr_size_in_byte, uint8_t *buf, const uint32_t size_in_byte)
 I2C master read data from specific address of certain slave device. More...
 
hpm_stat_t i2c_master_address_write (I2C_Type *ptr, const uint16_t device_address, uint8_t *addr, uint32_t addr_size_in_byte, uint8_t *buf, const uint32_t size_in_byte)
 I2C master write data to specific address of certain slave device. More...
 
hpm_stat_t i2c_master_read (I2C_Type *ptr, const uint16_t device_address, uint8_t *buf, const uint32_t size)
 I2C master read data from certain slave device. More...
 
hpm_stat_t i2c_master_write (I2C_Type *ptr, const uint16_t device_address, uint8_t *buf, const uint32_t size)
 I2C master write data to certain slave device. More...
 
hpm_stat_t i2c_init_slave (I2C_Type *ptr, uint32_t src_clk_in_hz, i2c_config_t *config, const uint16_t slave_address)
 I2C slave initialization. More...
 
hpm_stat_t i2c_slave_write (I2C_Type *ptr, uint8_t *buf, const uint32_t size)
 I2C slave write data. More...
 
hpm_stat_t i2c_slave_read (I2C_Type *ptr, uint8_t *buf, const uint32_t size)
 I2C slave read data. More...
 
hpm_stat_t i2c_master_start_dma_write (I2C_Type *i2c_ptr, const uint16_t device_address, uint32_t size)
 I2C master start write data by DMA. More...
 
hpm_stat_t i2c_master_start_dma_read (I2C_Type *i2c_ptr, const uint16_t device_address, uint32_t size)
 I2C master start read data by DMA. More...
 
hpm_stat_t i2c_slave_dma_transfer (I2C_Type *i2c_ptr, uint32_t size)
 I2C slave dma transfer data. More...
 
hpm_stat_t i2c_master_configure_transfer (I2C_Type *i2c_ptr, const uint16_t device_address, uint32_t size, bool read)
 I2C master configure transfer setting. More...
 
hpm_stat_t i2c_master_seq_transmit_check_ack (I2C_Type *ptr, const uint16_t device_address, uint8_t *buf, const uint32_t size, i2c_seq_transfer_opt_t opt, bool ack_check)
 sequential transmit in master I2C mode an amount of data and checks ACK in blocking More...
 
hpm_stat_t i2c_master_seq_receive (I2C_Type *ptr, const uint16_t device_address, uint8_t *buf, const uint32_t size, i2c_seq_transfer_opt_t opt)
 sequential receive in master I2C mode an amount of data in blocking More...
 
hpm_stat_t i2c_master_transfer (I2C_Type *ptr, const uint16_t device_address, uint8_t *buf, const uint32_t size, uint16_t flags)
 data transfer on master I2C mode in blocking More...
 

Macro Definition Documentation

◆ HPM_I2C_DRV_DEFAULT_RETRY_COUNT

#define HPM_I2C_DRV_DEFAULT_RETRY_COUNT   (5000U)

◆ HPM_I2C_DRV_DEFAULT_TPM

#define HPM_I2C_DRV_DEFAULT_TPM   (0U)

◆ period_in_100ps

#define period_in_100ps (   freq)    (10000000000UL / (freq))

Function Documentation

◆ i2c_configure_timing()

static hpm_stat_t i2c_configure_timing ( uint32_t  src_clk_in_hz,
i2c_mode_t  i2c_mode,
i2c_timing_t timing 
)
static

< baudrate 400KHz

< baudrate 1MHz

< baudrate 100KHz