Kamcho Library 02.00.03  lib.kamcho.02.00.03.287
Enumerations | Functions | Variables
i2c_device.c File Reference
#include <string.h>
#include "i2c_device.h"

Enumerations

enum  {
  I2C_STATE_IDLE, I2C_STATE_READ_START, I2C_STATE_WRITE_START, I2C_STATE_REPEAT_START,
  I2C_STATE_WRITE_DATA, I2C_STATE_RECEIVE_DATA, I2C_STATE_READ_DATA, I2C_STATE_STOP
}
 
enum  { I2C_MODE_MASTER, I2C_MODE_SLAVE }
 
enum  { I2C_OP_READ, I2C_OP_WRITE, I2C_OP_REGISTER_READ }
 
enum  { I2C_WRITE_FLAG = 0, I2C_READ_FLAG = 1 }
 

Functions

I2C_Device_tI2C_devGetDevice (const char *name)
 Request a I2C Device. 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_devReset (I2C_Device_t *dev)
 Reset 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_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...
 
int32_t I2C_devMasterInit (I2C_Device_t *dev, I2C_Device_MasterInfo_t *info)
 Initialize I2C master device. More...
 
int32_t I2C_devIsInProgress (I2C_Device_t *dev)
 Check if I2C master device is busy in last transation. More...
 
int32_t I2C_devMasterSendData (I2C_Device_t *dev, uint16_t slave_addr, uint8_t *array, uint32_t len)
 Send a data block through I2C master device. More...
 
int32_t I2C_devMasterReadResult (I2C_Device_t *dev, uint8_t *array, uint32_t len)
 Read data from I2C master device, the data is the result of last read request. More...
 
int32_t I2C_devMasterReadRequest (I2C_Device_t *dev, uint16_t slave_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...
 
void I2C_Collision_Handler (void)
 I2C clollison interrupt handler. More...
 
void master_isr (I2C_Device_t *dev)
 
void update_state (I2C_Device_t *dev)
 
bool is_new_session (I2C_Device_t *dev)
 
void slave_isr (I2C_Device_t *dev)
 
void I2C_Handler (void)
 I2C interrupt handler. More...
 

Variables

static const uint16_t i2c_speed_map [I2C_DEVICE_SPEED_MAX+1]
 
static const I2C_Device_tI2C_Device_Table []
 The instances of I2C device. 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.

Enumeration Type Documentation

anonymous enum

Enumeration of the states of I2C state machine.

Enumerator
I2C_STATE_IDLE 
I2C_STATE_READ_START 
I2C_STATE_WRITE_START 
I2C_STATE_REPEAT_START 
I2C_STATE_WRITE_DATA 
I2C_STATE_RECEIVE_DATA 
I2C_STATE_READ_DATA 
I2C_STATE_STOP 
anonymous enum

Enumeration of the mode of device.

Enumerator
I2C_MODE_MASTER 
I2C_MODE_SLAVE 
anonymous enum

Enumeration of the mode of operation.

Enumerator
I2C_OP_READ 
I2C_OP_WRITE 
I2C_OP_REGISTER_READ 
anonymous enum

Enumeration of the read/write flag.

Enumerator
I2C_WRITE_FLAG 
I2C_READ_FLAG 

Function Documentation

void I2C_Collision_Handler ( void  )

I2C clollison interrupt handler.

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.
void I2C_Handler ( void  )

I2C interrupt handler.

bool is_new_session ( I2C_Device_t dev)
void master_isr ( I2C_Device_t dev)
void slave_isr ( I2C_Device_t dev)
void update_state ( I2C_Device_t dev)

Variable Documentation

const I2C_Device_t* I2C_Device_Table[]
static
Initial value:
= {
NULL,
}

The instances of I2C device.

The table of I2C device instances supported by the platform.

const uint16_t i2c_speed_map[I2C_DEVICE_SPEED_MAX+1]
static
Initial value:
= {
}
Definition: i2c_device.h:28
Definition: i2c_device.h:30
Definition: i2c_device.h:27
Definition: i2c_device.h:26
Definition: i2c_device.h:29
Definition: i2c_device.h:31

At 12MHz system clock, the clock divider settings for each I2C speed.