12 #ifndef __I2C_DEVICE_H__
13 #define __I2C_DEVICE_H__
20 #define I2C_DEVICE_BUFFER_SIZE 64
177 uint8_t *reg_addr, uint8_t addrlen, uint8_t datalen);
void(* Set10BitSlaveAddr)(void)
Definition: i2c_device.h:95
struct I2C_Device_MasterInfo_Type I2C_Device_MasterInfo_t
A structure to represent I2C master device initialization information.
int32_t I2C_devEnable(I2C_Device_t *dev)
Enable I2C hardware module.
Definition: i2c_device.c:135
int32_t I2C_devMasterReadResult(I2C_Device_t *dev, uint8_t *data, uint32_t len)
Read data from I2C master device, the data is the result of last read request.
Definition: i2c_device.c:290
IRQn_Type IRQ
Definition: i2c_device.h:105
int32_t I2C_devSlaveDataReceived(I2C_Device_t *dev)
Check how many bytes received by I2C slave module.
Definition: i2c_device.c:220
int32_t I2C_devMasterRegisterReadRequest(I2C_Device_t *dev, uint16_t slave_addr, uint8_t *reg_addr, uint8_t addrlen, uint8_t datalen)
Send a register read request to I2C master device.
Definition: i2c_device.c:321
void(* MasterReceiveStart)(void)
Definition: i2c_device.h:88
bool FilterEnable
Definition: i2c_device.h:52
int32_t I2C_devDisable(I2C_Device_t *dev)
Disable I2C hardware module.
Definition: i2c_device.c:145
void(* SetSlaveMode)(void)
Definition: i2c_device.h:97
Definition: i2c_device.h:28
void(* SlaveClockStretch)(void)
Definition: i2c_device.h:85
void(* SlaveEnableGeneralCall)(void)
Definition: i2c_device.h:98
void(* Disable)(void)
Definition: i2c_device.h:81
uint8_t address
Definition: i2c_device.h:64
int32_t I2C_devReset(I2C_Device_t *dev)
Reset I2C master device.
Definition: i2c_device.c:155
A structure to represent I2C master device initialization information.
Definition: i2c_device.h:50
uint8_t(* ReadData)(void)
Definition: i2c_device.h:82
void(* MasterIssueNack)(void)
Definition: i2c_device.h:89
void(* SlaveDisableGeneralCall)(void)
Definition: i2c_device.h:99
int32_t I2C_devMasterSendData(I2C_Device_t *dev, uint16_t addr, uint8_t *data, uint32_t len)
Send a data block through I2C master device.
Definition: i2c_device.c:271
uint8_t(* GetStatus)(void)
Definition: i2c_device.h:83
int32_t I2C_devMasterReadRequest(I2C_Device_t *dev, uint16_t addr, uint32_t len)
Send a read request to I2C master device.
Definition: i2c_device.c:302
uint8_t read_len
Definition: i2c_device.h:68
uint8_t state
Definition: i2c_device.h:65
uint16_t Speed
Definition: i2c_device.h:53
Definition: i2c_device.h:30
uint16_t Speed
Definition: i2c_device.h:44
IRQn_Type CollisionIRQ
Definition: i2c_device.h:106
int32_t I2C_devSlaveReadResult(I2C_Device_t *dev, uint8_t *array, uint32_t len)
Read data from I2C slave module.
Definition: i2c_device.c:209
int32_t I2C_devSlaveSetResponseData(I2C_Device_t *dev, uint8_t *array, uint32_t len)
Set response data to I2C slave module.
Definition: i2c_device.c:196
void(* WriteData)(uint8_t data)
Definition: i2c_device.h:84
A structure to represent I2C slave device initialization information.
Definition: i2c_device.h:38
uint8_t counter
Definition: i2c_device.h:62
uint8_t status
Definition: i2c_device.h:60
A structure to represent I2C device state.
Definition: i2c_device.h:59
void(* SlaveReleaseClock)(void)
Definition: i2c_device.h:86
void(* MasterIssueStop)(void)
Definition: i2c_device.h:91
uint16_t SlaveAddr
Definition: i2c_device.h:42
void(* SetSlaveAddressMask)(uint16_t mask)
Definition: i2c_device.h:103
int32_t I2C_devSlaveInit(I2C_Device_t *dev, I2C_Device_SlaveInfo_t *info)
Initialize I2C slave device.
Definition: i2c_device.c:167
#define I2C_DEVICE_BUFFER_SIZE
Definition: i2c_device.h:20
uint8_t SlaveAddrLen
Definition: i2c_device.h:39
uint8_t write_len
Definition: i2c_device.h:69
bool GeneralCallEnable
Definition: i2c_device.h:40
void(* SetClockDivider)(uint8_t div)
Definition: i2c_device.h:104
void(* Enable)(void)
Definition: i2c_device.h:80
uint8_t data
Definition: i2c_device.h:61
Definition: i2c_device.h:27
int32_t I2C_devIsInProgress(I2C_Device_t *dev)
Check if I2C master device is busy in last transation.
Definition: i2c_device.c:264
char * Name
Definition: i2c_device.h:107
uint8_t write_index
Definition: i2c_device.h:67
uint8_t(* StartBitReceived)(void)
Definition: i2c_device.h:93
uint8_t opmode
Definition: i2c_device.h:73
Definition: i2c_device.h:26
struct I2C_Device_SlaveInfo_Type I2C_Device_SlaveInfo_t
A structure to represent I2C slave device initialization information.
enum IRQn IRQn_Type
The enumeration of Interrupt Number Assignments.
void(* MasterIssueAck)(void)
Definition: i2c_device.h:90
int32_t I2C_devMasterInit(I2C_Device_t *dev, I2C_Device_MasterInfo_t *info)
Initialize I2C master device.
Definition: i2c_device.c:247
struct I2C_Device_Type I2C_Device_t
A structure to represent I2C device.
Definition: i2c_device.h:32
void(* MasterRepeatStart)(void)
Definition: i2c_device.h:87
int32_t I2C_devSlaveDataResponsed(I2C_Device_t *dev)
Check how many bytes has been read by a I2C master.
Definition: i2c_device.c:227
void(* Set7BitSlaveAddr)(void)
Definition: i2c_device.h:94
uint16_t SlaveAddrMask
Definition: i2c_device.h:43
uint8_t read_index
Definition: i2c_device.h:66
bool FilterEnable
Definition: i2c_device.h:41
void(* SetMasterMode)(void)
Definition: i2c_device.h:96
Definition: i2c_device.h:29
Definition: i2c_device.h:31
int32_t I2C_devSlaveRestart(I2C_Device_t *dev)
Restart next I2C cycle as a slave.
Definition: i2c_device.c:234
I2C_State_t * state
Definition: i2c_device.h:108
uint8_t collision
Definition: i2c_device.h:63
I2C_Device_t * I2C_devGetDevice(const char *name)
Request a I2C Device.
Definition: i2c_device.c:124
void(* SetSlaveAddress)(uint16_t addr)
Definition: i2c_device.h:102
A structure to represent I2C device.
Definition: i2c_device.h:79
void(* MasterIssueStart)(void)
Definition: i2c_device.h:92
void(* EnableFilter)(void)
Definition: i2c_device.h:100
uint8_t SlaveAddrLen
Definition: i2c_device.h:51
void(* DisableFilter)(void)
Definition: i2c_device.h:101
uint8_t mode
Definition: i2c_device.h:72