Contiki-NG

Header file with declarations for the I2C Control module. More...

#include "reg.h"
#include "sys-ctrl.h"
#include "gpio.h"
#include "ioc.h"
#include <stdio.h>
#include "clock.h"

Go to the source code of this file.

Macros

I2C Master commands
#define I2C_MASTER_CMD_SINGLE_SEND   0x00000007
 
#define I2C_MASTER_CMD_SINGLE_RECEIVE   0x00000007
 
#define I2C_MASTER_CMD_BURST_SEND_START   0x00000003
 
#define I2C_MASTER_CMD_BURST_SEND_CONT   0x00000001
 
#define I2C_MASTER_CMD_BURST_SEND_FINISH   0x00000005
 
#define I2C_MASTER_CMD_BURST_SEND_ERROR_STOP   0x00000004
 
#define I2C_MASTER_CMD_BURST_RECEIVE_START   0x0000000b
 
#define I2C_MASTER_CMD_BURST_RECEIVE_CONT   0x00000009
 
#define I2C_MASTER_CMD_BURST_RECEIVE_FINISH   0x00000005
 
#define I2C_MASTER_CMD_BURST_RECEIVE_ERROR_STOP   0x00000004
 
I2C Master status flags
#define I2C_MASTER_ERR_NONE   0
 
#define I2CM_STAT_BUSY   0x00000001
 
#define I2CM_STAT_ERROR   0x00000002
 
#define I2CM_STAT_ADRACK   0x00000004
 
#define I2CM_STAT_DATACK   0x00000008
 
#define I2CM_STAT_ARBLST   0x00000010
 
#define I2CM_STAT_IDLE   0x00000020
 
#define I2CM_STAT_BUSBSY   0x00000040
 
#define I2CM_STAT_INVALID   0x00000080
 
I2C registers
#define I2CM_CR   0x40020020 /* I2C master config */
 
#define I2CM_TPR   0x4002000C /* I2C master timer period */
 
#define I2CM_SA   0x40020000 /* I2C master slave address */
 
#define I2CM_DR   0x40020008 /* I2C master data */
 
#define I2CM_CTRL   0x40020004 /* Master control in write */
 
#define I2CM_STAT   I2CM_CTRL /* Master status in read */
 
I2C Miscellaneous
#define I2C_SCL_NORMAL_BUS_SPEED   100000 /* 100KHz I2C */
 
#define I2C_SCL_FAST_BUS_SPEED   400000 /* 400KHz I2C */
 
#define I2C_RECEIVE   0x01 /* Master receive */
 
#define I2C_SEND   0x00 /* Master send */
 

Functions

I2C Functions
void i2c_init (uint8_t port_sda, uint8_t pin_sda, uint8_t port_scl, uint8_t pin_scl, uint32_t bus_speed)
 Initialize the I2C peripheral and pins. More...
 
void i2c_master_enable (void)
 Enable master I2C module.
 
void i2c_master_disable (void)
 Disable master I2C module.
 
void i2c_set_frequency (uint32_t freq)
 Initialize I2C peripheral clock with given frequency. More...
 
void i2c_master_set_slave_address (uint8_t slave_addr, uint8_t access_mode)
 Set the address of slave and access mode for the next I2C communication. More...
 
void i2c_master_data_put (uint8_t data)
 Prepare data to be transmitted. More...
 
uint8_t i2c_master_data_get (void)
 Return received data from I2C. More...
 
void i2c_master_command (uint8_t cmd)
 Control the state of the master module for send and receive operations. More...
 
uint8_t i2c_master_busy (void)
 Return the busy state of I2C module. More...
 
uint8_t i2c_master_error (void)
 Return the status register if error occurred during last communication. More...
 
uint8_t i2c_single_send (uint8_t slave_addr, uint8_t data)
 Perform all operations to send a byte to a slave. More...
 
uint8_t i2c_single_receive (uint8_t slave_addr, uint8_t *data)
 Perform all operations to receive a byte from a slave. More...
 
uint8_t i2c_burst_send (uint8_t slave_addr, uint8_t *data, uint8_t len)
 Perform all operations to send multiple bytes to a slave. More...
 
uint8_t i2c_burst_receive (uint8_t slave_addr, uint8_t *data, uint8_t len)
 Perform all operations to receive multiple bytes from a slave. More...
 

Detailed Description

Header file with declarations for the I2C Control module.

Author
Mehdi Migault

Definition in file i2c.h.