cc2538 I2C Control Module
More...
|
file | i2c.c |
| Implementation file of the I2C Control module.
|
|
file | i2c.h |
| Header file with declarations for the I2C Control module.
|
|
|
#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 |
|
|
#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 |
|
|
#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 */ |
|
|
#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 */ |
|
|
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...
|
|
cc2538 I2C Control Module
◆ i2c_burst_receive()
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.
- Parameters
-
slave_addr | The address of the slave from which data are received |
data | A pointer to store the received data |
len | Number of bytes to receive |
- Returns
- Return the value of i2c_master_error() after the I2C operation
Definition at line 218 of file i2c.c.
◆ i2c_burst_send()
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.
- Parameters
-
slave_addr | The address of the slave to which data are sent |
data | A pointer to the data to send to the slave |
len | Number of bytes to send |
- Returns
- Return the value of i2c_master_error() after the I2C operation
Definition at line 188 of file i2c.c.
◆ i2c_init()
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.
- Parameters
-
port_sda | The GPIO number of the pin used fort SDA |
pin_sda | The pin number used for SDA |
port_scl | The GPIO number of the pin used fort SCL |
pin_scl | The pin number used for SCL |
bus_speed | The clock frequency used by I2C module |
bus_speed can take the following values:
- I2C_SCL_NORMAL_BUS_SPEED : 100KHz
- I2C_SCL_FAST_BUS_SPEED : 400KHz
Definition at line 49 of file i2c.c.
Referenced by platform_init_stage_two(), rtcc_init(), and tmp102_init().
◆ i2c_master_busy()
uint8_t i2c_master_busy |
( |
void |
| ) |
|
Return the busy state of I2C module.
- Return values
-
0 | The I2C module is not busy |
1 | The I2C module is busy |
Definition at line 141 of file i2c.c.
◆ i2c_master_command()
void i2c_master_command |
( |
uint8_t |
cmd | ) |
|
Control the state of the master module for send and receive operations.
- Parameters
-
cmd | The operation to perform |
cmd can take the following values:
- I2C_MASTER_CMD_SINGLE_SEND
- I2C_MASTER_CMD_SINGLE_RECEIVE
- I2C_MASTER_CMD_BURST_SEND_START
- I2C_MASTER_CMD_BURST_SEND_CONT
- I2C_MASTER_CMD_BURST_SEND_FINISH
- I2C_MASTER_CMD_BURST_SEND_ERROR_STOP
- I2C_MASTER_CMD_BURST_RECEIVE_START
- I2C_MASTER_CMD_BURST_RECEIVE_CONT
- I2C_MASTER_CMD_BURST_RECEIVE_FINISH
- I2C_MASTER_CMD_BURST_RECEIVE_ERROR_STOP
Definition at line 133 of file i2c.c.
◆ i2c_master_data_get()
uint8_t i2c_master_data_get |
( |
void |
| ) |
|
Return received data from I2C.
- Returns
- The byte received by I2C after à receive command
Definition at line 127 of file i2c.c.
◆ i2c_master_data_put()
void i2c_master_data_put |
( |
uint8_t |
data | ) |
|
Prepare data to be transmitted.
- Parameters
-
data | The byte of data to be transmitted from the I2C master |
Definition at line 121 of file i2c.c.
◆ i2c_master_error()
uint8_t i2c_master_error |
( |
void |
| ) |
|
Return the status register if error occurred during last communication.
- Return values
-
I2C_MASTER_ERR_NONE | Return 0 if no error occurred |
If an error occurred, return the status register of the I2C module. Use the result with the I2CM_STAT_* flags to custom your processing
Definition at line 147 of file i2c.c.
◆ i2c_master_set_slave_address()
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.
- Parameters
-
slave_addr | The receiver slave address on 7 bits |
access_mode | The I2C access mode (send/receive) |
access_mode can take the following values:
- I2C_RECEIVE : 1
- I2C_SEND : 0
Definition at line 111 of file i2c.c.
◆ i2c_set_frequency()
void i2c_set_frequency |
( |
uint32_t |
freq | ) |
|
Initialize I2C peripheral clock with given frequency.
- Parameters
-
freq | The desired frequency |
freq can take the following values:
- I2C_SCL_NORMAL_BUS_SPEED : 100KHz
- I2C_SCL_FAST_BUS_SPEED : 400KHz
Definition at line 103 of file i2c.c.
◆ i2c_single_receive()
uint8_t i2c_single_receive |
( |
uint8_t |
slave_addr, |
|
|
uint8_t * |
data |
|
) |
| |
Perform all operations to receive a byte from a slave.
- Parameters
-
slave_addr | The address of the slave from which data are received |
data | A pointer to store the received data |
- Returns
- Return the value of i2c_master_error() after the I2C operation
Definition at line 172 of file i2c.c.
◆ i2c_single_send()
uint8_t i2c_single_send |
( |
uint8_t |
slave_addr, |
|
|
uint8_t |
data |
|
) |
| |
Perform all operations to send a byte to a slave.
- Parameters
-
slave_addr | The adress of the slave to which data are sent |
data | The data to send to the slave |
- Returns
- Return the value of i2c_master_error() after the I2C operation
Definition at line 159 of file i2c.c.