From 157167f1735b43eaa5bdaa0ba73e080994be2245 Mon Sep 17 00:00:00 2001 From: lilian Date: Fri, 4 Aug 2017 18:38:34 -0300 Subject: [PATCH] ssd1306 update --- examples/ssd1306_example/main.c | 6 ++++-- examples/ssd1306_fps/main.c | 6 ++++-- extras/ssd1306/ssd1306.c | 7 ++----- extras/ssd1306/ssd1306.h | 3 ++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/examples/ssd1306_example/main.c b/examples/ssd1306_example/main.c index 58781c5..f88d798 100644 --- a/examples/ssd1306_example/main.c +++ b/examples/ssd1306_example/main.c @@ -23,6 +23,7 @@ #ifdef I2C_CONNECTION #define PROTOCOL SSD1306_PROTO_I2C #define ADDR SSD1306_I2C_ADDR_0 + #define I2C_BUS 0 #define SCL_PIN 5 #define SDA_PIN 4 #else @@ -35,7 +36,8 @@ static const ssd1306_t dev = { .protocol = PROTOCOL, #ifdef I2C_CONNECTION - .addr = ADDR, + .i2c_dev.bus = I2C_BUS, + .i2c_dev.addr = ADDR, #else .cs_pin = CS_PIN, .dc_pin = DC_PIN, @@ -97,7 +99,7 @@ void user_init(void) printf("SDK version:%s\n", sdk_system_get_sdk_version()); #ifdef I2C_CONNECTION - i2c_init(SCL_PIN, SDA_PIN); + i2c_init(I2C_BUS, SCL_PIN, SDA_PIN, I2C_FREQ_400K); #endif while (ssd1306_init(&dev) != 0) diff --git a/examples/ssd1306_fps/main.c b/examples/ssd1306_fps/main.c index b35dbfb..dc1f1a9 100644 --- a/examples/ssd1306_fps/main.c +++ b/examples/ssd1306_fps/main.c @@ -29,6 +29,7 @@ #ifdef I2C_CONNECTION #define PROTOCOL SSD1306_PROTO_I2C #define ADDR SSD1306_I2C_ADDR_0 + #define I2C_BUS 0 #define SCL_PIN 5 #define SDA_PIN 4 #else @@ -43,7 +44,8 @@ static const ssd1306_t dev = { .protocol = PROTOCOL, #ifdef I2C_CONNECTION - .addr = ADDR, +.i2c_dev.bus = I2C_BUS, +.i2c_dev.addr = ADDR, #else .cs_pin = CS_PIN, .dc_pin = DC_PIN, @@ -162,7 +164,7 @@ void user_init(void) printf("SDK version:%s\n", sdk_system_get_sdk_version()); #ifdef I2C_CONNECTION - i2c_init(SCL_PIN, SDA_PIN); + i2c_init(I2C_BUS, SCL_PIN, SDA_PIN, I2C_FREQ_400K); #endif while (ssd1306_init(&dev) != 0) { diff --git a/extras/ssd1306/ssd1306.c b/extras/ssd1306/ssd1306.c index ca3b48a..d4d375b 100644 --- a/extras/ssd1306/ssd1306.c +++ b/extras/ssd1306/ssd1306.c @@ -11,9 +11,6 @@ */ #include "ssd1306.h" #include -#if (SSD1306_I2C_SUPPORT) - #include -#endif #if (SSD1306_SPI4_SUPPORT) || (SSD1306_SPI3_SUPPORT) #include #endif @@ -92,14 +89,14 @@ #if (SSD1306_I2C_SUPPORT) static int inline i2c_send(const ssd1306_t *dev, uint8_t reg, uint8_t* data, uint8_t len) { - return i2c_slave_write(dev->addr, ®, data, len); + return i2c_slave_write(dev->i2c_dev.bus, dev->i2c_dev.addr , ®, data, len); } #endif /* Issue a command to SSD1306 device * I2C proto format: * |S|Slave Address|W|ACK|0x00|Command|Ack|P| - * + * * in case of two-bytes command here will be Data byte * right after the command byte. */ diff --git a/extras/ssd1306/ssd1306.h b/extras/ssd1306/ssd1306.h index cdfae61..639517b 100644 --- a/extras/ssd1306/ssd1306.h +++ b/extras/ssd1306/ssd1306.h @@ -19,6 +19,7 @@ // shifted #if (SSD1306_I2C_SUPPORT) + #include #define SSD1306_I2C_ADDR_0 (0x3C) #define SSD1306_I2C_ADDR_1 (0x3D) #endif @@ -67,7 +68,7 @@ typedef struct ssd1306_screen_t screen ; union { #if (SSD1306_I2C_SUPPORT) - uint8_t addr ; //!< I2C address, used by SSD1306_PROTO_I2C + i2c_dev_t i2c_dev; //!< I2C devuce descriptor, used by SSD1306_PROTO_I2C #endif uint8_t cs_pin ; //!< Chip Select GPIO pin, used by SSD1306_PROTO_SPI3, SSD1306_PROTO_SPI4 } ;