Kamcho Library 02.00.03  lib.kamcho.02.00.03.287
Data Structures | Macros | Typedefs | Enumerations | Functions
i2c_device.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include "hdf.h"
#include "errno.h"

Go to the source code of this file.

Data Structures

struct  I2C_Device_SlaveInfo_Type
 A structure to represent I2C slave device initialization information. More...
 
struct  I2C_Device_MasterInfo_Type
 A structure to represent I2C master device initialization information. More...
 
struct  I2C_State_t
 A structure to represent I2C device state. More...
 
struct  I2C_Device_Type
 A structure to represent I2C device. More...
 

Macros

#define I2C_DEVICE_BUFFER_SIZE   64
 

Typedefs

typedef struct I2C_Device_SlaveInfo_Type I2C_Device_SlaveInfo_t
 A structure to represent I2C slave device initialization information. More...
 
typedef struct I2C_Device_MasterInfo_Type I2C_Device_MasterInfo_t
 A structure to represent I2C master device initialization information. More...
 
typedef struct I2C_Device_Type I2C_Device_t
 A structure to represent I2C device. More...
 

Enumerations

enum  {
  I2C_DEVICE_SPEED_100K, I2C_DEVICE_SPEED_200K, I2C_DEVICE_SPEED_300K, I2C_DEVICE_SPEED_400K,
  I2C_DEVICE_SPEED_500K, I2C_DEVICE_SPEED_600K, I2C_DEVICE_SPEED_MAX = I2C_DEVICE_SPEED_600K
}
 The enumeration of I2C Speed. More...
 

Functions

I2C_Device_tI2C_devGetDevice (const char *name)
 Request a I2C Device. More...
 
int32_t I2C_devMasterInit (I2C_Device_t *dev, I2C_Device_MasterInfo_t *info)
 Initialize I2C master device. More...
 
int32_t I2C_devSlaveInit (I2C_Device_t *dev, I2C_Device_SlaveInfo_t *info)
 Initialize I2C slave device. More...
 
int32_t I2C_devReset (I2C_Device_t *dev)
 Reset I2C master device. More...
 
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. More...
 
int32_t I2C_devMasterReadRequest (I2C_Device_t *dev, uint16_t addr, uint32_t len)
 Send a read request to I2C master device. More...
 
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. More...
 
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. More...
 
int32_t I2C_devIsInProgress (I2C_Device_t *dev)
 Check if I2C master device is busy in last transation. More...
 
int32_t I2C_devEnable (I2C_Device_t *dev)
 Enable I2C hardware module. More...
 
int32_t I2C_devDisable (I2C_Device_t *dev)
 Disable I2C hardware module. More...
 
int32_t I2C_devSlaveSetResponseData (I2C_Device_t *dev, uint8_t *array, uint32_t len)
 Set response data to I2C slave module. More...
 
int32_t I2C_devSlaveReadResult (I2C_Device_t *dev, uint8_t *array, uint32_t len)
 Read data from I2C slave module. More...
 
int32_t I2C_devSlaveDataReceived (I2C_Device_t *dev)
 Check how many bytes received by I2C slave module. More...
 
int32_t I2C_devSlaveDataResponsed (I2C_Device_t *dev)
 Check how many bytes has been read by a I2C master. More...
 
int32_t I2C_devSlaveRestart (I2C_Device_t *dev)
 Restart next I2C cycle as a slave. More...
 

Detailed Description

This file is proprietary to Indie Semiconductor. All rights reserved. Reproduction or distribution, in whole or in part, is forbidden except by express written permission of Indie Semiconductor.

Macro Definition Documentation

#define I2C_DEVICE_BUFFER_SIZE   64

Typedef Documentation

A structure to represent I2C master device initialization information.

A structure to represent I2C slave device initialization information.

typedef struct I2C_Device_Type I2C_Device_t

A structure to represent I2C device.

Enumeration Type Documentation

anonymous enum

The enumeration of I2C Speed.

Enumerator
I2C_DEVICE_SPEED_100K 
I2C_DEVICE_SPEED_200K 
I2C_DEVICE_SPEED_300K 
I2C_DEVICE_SPEED_400K 
I2C_DEVICE_SPEED_500K 
I2C_DEVICE_SPEED_600K 
I2C_DEVICE_SPEED_MAX 

Function Documentation

int32_t I2C_devDisable ( I2C_Device_t dev)

Disable I2C hardware module.

Parameters
devThe pointer to I2C device.
Returns
0 for success or error code upon a failure.
int32_t I2C_devEnable ( I2C_Device_t dev)

Enable I2C hardware module.

Parameters
devThe pointer to I2C device.
Returns
0 for success or error code upon a failure.
I2C_Device_t* I2C_devGetDevice ( const char *  name)

Request a I2C Device.

Parameters
nameThe name string of I2C device.
Returns
The pointer to the I2C device instance.
int32_t I2C_devIsInProgress ( I2C_Device_t dev)

Check if I2C master device is busy in last transation.

Parameters
devThe pointer to I2C device.
Returns
0 for idle, 1 for busy or error code upon a failure.
int32_t I2C_devMasterInit ( I2C_Device_t dev,
I2C_Device_MasterInfo_t info 
)

Initialize I2C master device.

Parameters
devThe pointer to I2C device
infoThe pointer to the initialization information for I2C master device.
Returns
0 for success or error code upon a failure.
int32_t I2C_devMasterReadRequest ( I2C_Device_t dev,
uint16_t  addr,
uint32_t  len 
)

Send a read request to I2C master device.

Parameters
devThe pointer to I2C device.
addrThe slave addr.
lenThe length of the data block.
Returns
0 for success or error code upon a failure.
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.

Parameters
devThe pointer to I2C device.
dataThe pointer to the memory for saving the data block.
lenThe length of the data block.
Returns
0 for success or error code upon a failure.
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.

Parameters
devThe pointer to I2C device.
slave_addrThe slave device address.
reg_addrThe pointer to register address in slave device.
addrlenThe length of register address.
datalenThe data length to be read from the slave.
Returns
0 for success or error code upon a failure.
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.

Parameters
devThe pointer to I2C device.
addrThe slave addr.
dataThe pointer to the data block.
lenThe length of the data block.
Returns
0 for success or error code upon a failure.
int32_t I2C_devReset ( I2C_Device_t dev)

Reset I2C master device.

Parameters
devThe pointer to I2C device
Returns
0 for success or error code upon a failure.
int32_t I2C_devSlaveDataReceived ( I2C_Device_t dev)

Check how many bytes received by I2C slave module.

Parameters
devThe pointer to I2C device.
Returns
The byte size of received data.
int32_t I2C_devSlaveDataResponsed ( I2C_Device_t dev)

Check how many bytes has been read by a I2C master.

Parameters
devThe pointer to I2C device.
Returns
The byte size of data read by master.
int32_t I2C_devSlaveInit ( I2C_Device_t dev,
I2C_Device_SlaveInfo_t info 
)

Initialize I2C slave device.

Parameters
devThe pointer to I2C device
infoThe pointer to the initialization information for I2C slave device.
Returns
0 for success or error code upon a failure.
int32_t I2C_devSlaveReadResult ( I2C_Device_t dev,
uint8_t *  array,
uint32_t  len 
)

Read data from I2C slave module.

Parameters
devThe pointer to I2C device.
arrayThe pointer to data array to store the data.
lenThe length of data array.
Returns
0 for success or error code upon a failure.
int32_t I2C_devSlaveRestart ( I2C_Device_t dev)

Restart next I2C cycle as a slave.

Parameters
devThe pointer to I2C device.
Returns
0 for success or error code upon a failure.
int32_t I2C_devSlaveSetResponseData ( I2C_Device_t dev,
uint8_t *  array,
uint32_t  len 
)

Set response data to I2C slave module.

Parameters
devThe pointer to I2C device.
arrayThe pointer to data array to be set.
lenThe length of data array.
Returns
0 for success or error code upon a failure.