Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
I2C Class Reference
[Drivers]
An I2C Master, used for communicating with I2C slave devices. More...
#include <I2C.h>
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. | |
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. | |
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 I2C.h.
Constructor & Destructor Documentation
| I2C | ( | PinName | sda, |
| PinName | scl | ||
| ) |
Member Function Documentation
| void abort_transfer | ( | ) |
Abort the ongoing I2C transfer.
| void frequency | ( | int | hz ) |
Set the frequency of the I2C interface.
- Parameters:
-
hz The bus frequency in hertz
| 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.
| 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:
-
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 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:
-
ack indicates 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 stop | ( | void | ) |
Creates a stop condition on the 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.
This function locks the deep sleep until any event has occurred
- Parameters:
-
address 8/10 bit I2C slave address tx_buffer The TX buffer with data to be transferred 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 default value is false.
- Returns:
- Zero if the transfer has started, or -1 if I2C peripheral is busy
| 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.
| int write | ( | int | data ) |
Write single byte out on the I2C bus.
- Parameters:
-
data data 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:
-
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 default value is false.
- Returns:
- 0 on success (ack), nonzero on failure (nack)
Generated on Tue Aug 16 2022 15:58:19 by
1.7.2