mbed-drivers
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
mbed::I2C Class Reference

#include <I2C.h>

Public Types

enum  RxStatus { NoData, MasterGeneralCall, MasterWrite, MasterRead }
 
enum  Acknowledge { NoACK = 0, ACK = 1 }
 
typedef mbed::util::FunctionPointer3< void, Buffer, Buffer, int > event_callback_t
 

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)
 
int transfer (int address, 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)
 
int transfer (int address, const Buffer &tx_buffer, const Buffer &rx_buffer, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false)
 
void abort_transfer ()
 

Protected Types

typedef TwoWayTransaction< event_callback_ttransaction_data_t
 
typedef Transaction< I2C, transaction_data_ttransaction_t
 

Protected Member Functions

void irq_handler_asynch (void)
 
void aquire ()
 

Protected Attributes

transaction_data_t _current_transaction
 
CThunk< I2C_irq
 
DMAUsage _usage
 
i2c_t _i2c
 
int _hz
 

Static Protected Attributes

static I2C_owner = NULL
 

Detailed Description

An I2C Master, used for communicating with I2C slave devices

Example:

// Read from I2C slave at address 0x62
#include "mbed.h"
I2C i2c(p28, p27);
int main() {
int address = 0x62;
char data[2];
i2c.read(address, data, 2);
}

Member Typedef Documentation

typedef mbed::util::FunctionPointer3<void, Buffer, Buffer, int> mbed::I2C::event_callback_t

I2C transfer callback

Parameters
Bufferthe tx buffer
Bufferthe rx buffer
intthe event that triggered the calback

Constructor & Destructor Documentation

mbed::I2C::I2C ( PinName  sda,
PinName  scl 
)

Create an I2C Master interface, connected to the specified pins

Parameters
sdaI2C data line pin
sclI2C clock line pin

Member Function Documentation

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

Parameters
hzThe bus frequency in hertz
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.

Parameters
address8-bit I2C slave address [ addr | 1 ]
dataPointer to the byte-array to read data in to
lengthNumber of bytes to read
repeatedRepeated start, true - don't send stop at end
Returns
0 on success (ack), non-0 on failure (nack)
int mbed::I2C::read ( int  ack)

Read a single byte from the I2C bus

Parameters
ackindicates if the byte is to be acknowledged (1 = acknowledge)
Returns
the byte read
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,
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.

Parameters
address8/10 bit I2c slave address
tx_bufferThe TX buffer with data to be transfered
tx_lengthThe length of TX buffer
rx_bufferThe RX buffer which is used for received data
rx_lengthThe length of RX buffer
eventThe logical OR of events to modify
callbackThe event callback function
repeatedRepeated start, true - do not send stop at end
Returns
Zero if the transfer has started, or -1 if I2C peripheral is busy
int mbed::I2C::transfer ( int  address,
const Buffer tx_buffer,
const Buffer rx_buffer,
const event_callback_t callback,
int  event = I2C_EVENT_TRANSFER_COMPLETE,
bool  repeated = false 
)

Start non-blocking I2C transfer.

Parameters
address8/10 bit I2c slave address
tx_bufferThe TX buffer with data to be transfered
rx_bufferThe RX buffer which is used for received data
eventThe logical OR of events to modify
callbackThe event callback function
repeatedRepeated start, true - do not send stop at end
Returns
Zero if the transfer has started, or -1 if I2C peripheral is busy
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.

Parameters
address8-bit I2C slave address [ addr | 0 ]
dataPointer to the byte-array data to send
lengthNumber of bytes to send
repeatedRepeated start, true - do not send stop at end
Returns
0 on success (ack), non-0 on failure (nack)
int mbed::I2C::write ( int  data)

Write single byte out on the I2C bus

Parameters
datadata to write out on bus
Returns
'1' if an ACK was received, '0' otherwise

The documentation for this class was generated from the following files: