#include <I2C.h>
Public Types | |
enum | RxStatus { NoData, MasterGeneralCall, MasterWrite, MasterRead } |
enum | Acknowledge { NoACK = 0, ACK = 1 } |
Public Member Functions | |
I2C (PinName sda, PinName scl) | |
void | frequency (int hz) |
int | read (int address, char *data, int length, bool repeated=false) |
int | read (int ack) |
int | write (int address, const char *data, int length, bool repeated=false) |
int | write (int data) |
void | start (void) |
void | stop (void) |
virtual void | lock (void) |
virtual void | unlock (void) |
int | transfer (int address, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false) |
void | abort_transfer () |
Protected Member Functions | |
void | lock_deep_sleep () |
void | unlock_deep_sleep () |
void | irq_handler_asynch (void) |
void | aquire () |
Protected Attributes | |
event_callback_t | _callback |
CThunk< I2C > | _irq |
DMAUsage | _usage |
bool | _deep_sleep_locked |
i2c_t | _i2c |
int | _hz |
Static Protected Attributes | |
static I2C * | _owner = NULL |
static SingletonPtr< PlatformMutex > | _mutex |
An I2C Master, used for communicating with I2C slave devices
Example:
mbed::I2C::I2C | ( | PinName | sda, |
PinName | scl | ||
) |
void mbed::I2C::abort_transfer | ( | void | ) |
Abort the on-going I2C transfer
void mbed::I2C::frequency | ( | int | hz | ) |
Set the frequency of the I2C interface
hz | The bus frequency in hertz |
|
virtual |
Acquire exclusive access to this I2C bus
|
protected |
Lock deep sleep only if it is not yet locked
int mbed::I2C::read | ( | int | address, |
char * | data, | ||
int | length, | ||
bool | repeated = false |
||
) |
Read from an I2C slave
Performs a complete read transaction. The bottom bit of the address is forced to 1 to indicate a read.
address | 8-bit I2C slave address [ addr | 1 ] |
data | Pointer to the byte-array to read data in to |
length | Number of bytes to read |
repeated | Repeated start, true - don't send stop at end |
int mbed::I2C::read | ( | int | ack | ) |
Read a single byte from the I2C bus
ack | indicates if the byte is to be acknowledged (1 = acknowledge) |
void mbed::I2C::start | ( | void | ) |
Creates a start condition on the I2C bus
void mbed::I2C::stop | ( | void | ) |
Creates a stop condition on the I2C bus
int mbed::I2C::transfer | ( | int | address, |
const char * | tx_buffer, | ||
int | tx_length, | ||
char * | rx_buffer, | ||
int | rx_length, | ||
const event_callback_t & | callback, | ||
int | event = I2C_EVENT_TRANSFER_COMPLETE , |
||
bool | repeated = false |
||
) |
Start non-blocking I2C transfer.
This function locks the deep sleep until any event has occurred
address | 8/10 bit I2C slave address |
tx_buffer | The TX buffer with data to be transfered |
tx_length | The length of TX buffer in bytes |
rx_buffer | The RX buffer which is used for received data |
rx_length | The length of RX buffer in bytes |
event | The logical OR of events to modify |
callback | The event callback function |
repeated | Repeated start, true - do not send stop at end |
|
virtual |
Release exclusive access to this I2C bus
|
protected |
Unlock deep sleep only if it has been locked
int mbed::I2C::write | ( | int | address, |
const char * | data, | ||
int | length, | ||
bool | repeated = false |
||
) |
Write to an I2C slave
Performs a complete write transaction. The bottom bit of the address is forced to 0 to indicate a write.
address | 8-bit I2C slave address [ addr | 0 ] |
data | Pointer to the byte-array data to send |
length | Number of bytes to send |
repeated | Repeated start, true - do not send stop at end |
int mbed::I2C::write | ( | int | data | ) |
Write single byte out on the I2C bus
data | data to write out on bus |