esp-open-rtos/extras/i2c
Zaltora 813477aa8a I2c optimization and features (#321)
* custom delay
* Update comment
* add bus control status, add some missing include & fixed display output on sh1104 (#319)
* add some missing include
* Fixed display on SH1106
* Fix comment, add force sytem, rework flag, 16 bits data transfert
* Update all library with new I2C API
* custom delay
* Update comment, add bus control status
* fix i2c read + fix ds3231 temp + fix ssd1306 send
2017-03-21 11:41:47 +05:00
..
component.mk Rework component makefiles to have a default <component>_ROOT 2015-09-08 09:59:59 +10:00
i2c.c I2c optimization and features (#321) 2017-03-21 11:41:47 +05:00
i2c.h I2c optimization and features (#321) 2017-03-21 11:41:47 +05:00
LICENSE Added BMP180 and I2C driver and example 2015-08-31 13:39:27 +02:00
README.md Added BMP180 and I2C driver and example 2015-08-31 13:39:27 +02:00

Yet another I2C driver for the ESP8266

This time a driver for the excellent esp-open-rtos. This is a bit banging I2C driver based on the Wikipedia pesudo C code [1].

Adding to your project

Add the driver to your project as a submodule rather than cloning it:

% git submodule add https://github.com/kanflo/esp-open-rtos-driver-i2c.git i2c

The esp-open-rtos makefile-fu will make sure the driver is built.

Usage

#include <i2c.h>

#define SCL_PIN (0)
#define SDA_PIN (2)

uint8_t slave_addr = 0x20;
uint8_t reg_addr = 0x1f;
uint8_t reg_data;
uint8_t data[] = {reg_addr, 0xc8};

i2c_init(SCL_PIN, SDA_PIN);

// Write data to slave
bool success = i2c_slave_write(slave_addr, data, sizeof(data));

// Issue write to slave, sending reg_addr, followed by reading 1 byte
success = i2c_slave_read(slave_addr, &reg_addr, reg_data, 1);

The driver is released under the MIT license.

[1] https://en.wikipedia.org/wiki/I²C#Example_of_bit-banging_the_I.C2.B2C_Master_protocol