mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Embed: (wiki syntax)

« Back to documentation index

I2C Class Reference

An I2C Master, used for communicating with I2C slave devices. More...

#include <I2C.h>

Inherits NonCopyable< I2C >, and NonCopyable< I2C >.

Public Member Functions

 I2C (PinName sda, PinName scl)
 Create an I2C Master interface, connected to the specified pins.
void frequency (int hz)
 Set the frequency of the I2C interface.
int read (int address, char *data, int length, bool repeated=false)
 Read from an I2C slave.
int read (int ack)
 Read a single byte from the I2C bus.
int write (int address, const char *data, int length, bool repeated=false)
 Write to an I2C slave.
int write (int data)
 Write single byte out on the I2C bus.
void start (void)
 Creates a start condition on the I2C bus.
void stop (void)
 Creates a stop condition on the I2C bus.
virtual void lock (void)
 Acquire exclusive access to this I2C bus.
virtual void unlock (void)
 Release exclusive access to this I2C bus.
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)
 Start nonblocking I2C transfer.
void abort_transfer ()
 Abort the ongoing I2C transfer.
 I2C (PinName sda, PinName scl)
 Create an I2C Master interface, connected to the specified pins.
void frequency (int hz)
 Set the frequency of the I2C interface.
int read (int address, char *data, int length, bool repeated=false)
 Read from an I2C slave.
int read (int ack)
 Read a single byte from the I2C bus.
int write (int address, const char *data, int length, bool repeated=false)
 Write to an I2C slave.
int write (int data)
 Write single byte out on the I2C bus.
void start (void)
 Creates a start condition on the I2C bus.
void stop (void)
 Creates a stop condition on the I2C bus.
virtual void lock (void)
 Acquire exclusive access to this I2C bus.
virtual void unlock (void)
 Release exclusive access to this I2C bus.
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)
 Start nonblocking I2C transfer.
void abort_transfer ()
 Abort the ongoing I2C transfer.

Protected Member Functions

void lock_deep_sleep ()
 Lock deep sleep only if it is not yet locked.
void unlock_deep_sleep ()
 Unlock deep sleep only if it has been locked.
void lock_deep_sleep ()
 Lock deep sleep only if it is not yet locked.
void unlock_deep_sleep ()
 Unlock deep sleep only if it has been locked.

Private Member Functions

 MBED_DEPRECATED ("Invalid copy construction of a NonCopyable resource.") NonCopyable(const NonCopyable &)
 NonCopyable copy constructor.
 MBED_DEPRECATED ("Invalid copy assignment of a NonCopyable resource.") NonCopyable &operator
 NonCopyable copy assignment operator.
 MBED_DEPRECATED ("Invalid copy construction of a NonCopyable resource.") NonCopyable(const NonCopyable &)
 NonCopyable copy constructor.
 MBED_DEPRECATED ("Invalid copy assignment of a NonCopyable resource.") NonCopyable &operator
 NonCopyable copy assignment operator.

Detailed Description

An I2C Master, used for communicating with I2C slave devices.

Note:
Synchronization level: Thread safe

Example:

 Read temperature from LM75BD
 #include "mbed.h"
 I2C i2c(I2C_SDA , I2C_SCL);
 const int addr7bit = 0x48;      // 7-bit I2C address
 const int addr8bit = 0x48 << 1; // 8-bit I2C address, 0x90

 int main() {
     char cmd[2];
     while (1) {
         cmd[0] = 0x01;
         cmd[1] = 0x00;

         // read and write takes the 8-bit version of the address.
         // set up configuration register (at 0x01)
         i2c.write(addr8bit, cmd, 2);

         wait(0.5);

         // read temperature register
         cmd[0] = 0x00;
         i2c.write(addr8bit, cmd, 1);
         i2c.read( addr8bit, cmd, 2);

         float tmp = (float((cmd[0]<<8)|cmd[1]) / 256.0);
         printf("Temp = %.2f\n", tmp);
   }
 }

Definition at line 75 of file cmsis/BUILD/mbed/drivers/I2C.h.


Constructor & Destructor Documentation

I2C ( PinName  sda,
PinName  scl 
)

Create an I2C Master interface, connected to the specified pins.

Parameters:
sdaI2C data line pin
sclI2C clock line pin

Definition at line 33 of file I2C.cpp.

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 abort_transfer ( void   )

Abort the ongoing I2C transfer.

Definition at line 210 of file I2C.cpp.

void abort_transfer (  )

Abort the ongoing I2C transfer.

void frequency ( int  hz )

Set the frequency of the I2C interface.

Parameters:
hzThe bus frequency in hertz

Definition at line 50 of file I2C.cpp.

void frequency ( int  hz )

Set the frequency of the I2C interface.

Parameters:
hzThe bus frequency in hertz
void lock ( void   ) [virtual]

Acquire exclusive access to this I2C bus.

Definition at line 134 of file I2C.cpp.

virtual void lock ( void   ) [virtual]

Acquire exclusive access to this I2C bus.

void lock_deep_sleep (  ) [protected]

Lock deep sleep only if it is not yet locked.

Definition at line 230 of file I2C.cpp.

void lock_deep_sleep (  ) [protected]

Lock deep sleep only if it is not yet locked.

int 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

Definition at line 107 of file I2C.cpp.

int 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 default value is false.
Returns:
0 on success (ack), nonzero on failure (nack)

Definition at line 95 of file I2C.cpp.

int 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 default value is false.
Returns:
0 on success (ack), nonzero on failure (nack)
int 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 start ( void   )

Creates a start condition on the I2C bus.

void start ( void   )

Creates a start condition on the I2C bus.

Definition at line 120 of file I2C.cpp.

void stop ( void   )

Creates a stop condition on the I2C bus.

void stop ( void   )

Creates a stop condition on the I2C bus.

Definition at line 127 of file I2C.cpp.

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 
)

Start nonblocking 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 transferred
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 default value is false.
Returns:
Zero if the transfer has started, or -1 if I2C peripheral is busy

Definition at line 192 of file I2C.cpp.

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 
)

Start nonblocking 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 transferred
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 default value is false.
Returns:
Zero if the transfer has started, or -1 if I2C peripheral is busy
void unlock ( void   ) [virtual]

Release exclusive access to this I2C bus.

Definition at line 139 of file I2C.cpp.

virtual void unlock ( void   ) [virtual]

Release exclusive access to this I2C bus.

void unlock_deep_sleep (  ) [protected]

Unlock deep sleep only if it has been locked.

void unlock_deep_sleep (  ) [protected]

Unlock deep sleep only if it has been locked.

Definition at line 238 of file I2C.cpp.

int 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
int 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 default value is false.
Returns:
0 on success (ack), nonzero on failure (nack)

Definition at line 74 of file I2C.cpp.

int 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 default value is false.
Returns:
0 on success (ack), nonzero on failure (nack)
int 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

Definition at line 86 of file I2C.cpp.