Mistake on this page?
Report an issue in GitHub or email us
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
mbed::I2C Class Reference

#include <I2C.h>

Inheritance diagram for mbed::I2C:
mbed::NonCopyable< I2C >

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
 

Detailed Description

An I2C Master, used for communicating with I2C slave devices

Note
Synchronization level: Thread safe

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);
}

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
void mbed::I2C::lock ( void  )
virtual

Acquire exclusive access to this I2C bus

void mbed::I2C::lock_deep_sleep ( )
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.

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,
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

Parameters
address8/10 bit I2C slave address
tx_bufferThe TX buffer with data to be transfered
tx_lengthThe length of TX buffer in bytes
rx_bufferThe RX buffer which is used for received data
rx_lengthThe length of RX buffer in bytes
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
void mbed::I2C::unlock ( void  )
virtual

Release exclusive access to this I2C bus

void mbed::I2C::unlock_deep_sleep ( )
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.

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
'0' - NAK was received '1' - ACK was received, '2' - timeout

The documentation for this class was generated from the following files:
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.