x

Dependents:   20180621_FT813

Files at this revision

API Documentation at this revision

Comitter:
JackB
Date:
Mon Jul 23 12:24:48 2018 +0000
Commit message:
I2CL

Changed in this revision

I2CList.cpp Show annotated file Show diff for this revision Revisions of this file
I2CList.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r a13a2f61b5f1 I2CList.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/I2CList.cpp	Mon Jul 23 12:24:48 2018 +0000
@@ -0,0 +1,60 @@
+#include "I2CList.h"
+
+I2CList::I2CList(PinName sda, PinName scl) : i2c(sda, scl)
+{
+}
+
+char * I2CList::GetName(int address)
+{
+    strcpy(i2c_name, "");
+    if (address == 0x30)
+        strcpy(i2c_name, "MCP9808   Temp. Sensor");
+    if (address == 0x46)
+        strcpy(i2c_name, "BH1750FVI Light Sensor");
+    if (address == 0x52)
+        strcpy(i2c_name, "TSL2591   Light Sensor");
+    if (address == 0x6F)
+        strcpy(i2c_name, "MCP79412  RTC (Real Time Clock)");
+    if (address == 0x70)
+        strcpy(i2c_name, "FT6206    CTPC (Capacitive Touch Panel Controller)");
+    if (address == 0x72)
+        strcpy(i2c_name, "TSL2561   Light Sensor");
+    if (address == 0x78)
+        strcpy(i2c_name, "SD1306    OLED Display");
+    if ((address == 0x80) || (address == 0xE0))
+        strcpy(i2c_name, "PCA9685   LED PWM 16x12-bit");
+    if ((address == 0x90) || (address == 0x92))
+        strcpy(i2c_name, "ADS1115   ADC 4x16-bit");
+    if (address == 0xA0)
+        strcpy(i2c_name, "24C256    EEPROM 32kB");
+    if (address == 0xAC)
+        strcpy(i2c_name, "24C32     EEPROM 4kB");
+    if (address == 0xD0)
+        strcpy(i2c_name, "RTC       RTC (Real Time Clock)");
+    if (address == 0xD2)
+        strcpy(i2c_name, "AMG8833   8x8 Infrared Array Sensor");
+    if (address == 0xE0)
+        strcpy(i2c_name, "PCA9685   LED All Call");
+        
+    return i2c_name;
+}
+
+void I2CList::List(void)
+{
+    // 0x80, 0xE0 PCA9685
+    printf("Searching for I2C devices...\n");
+    printf("I2C    Addr   Device    Description\n");
+    wait(0.001);
+    printf("-----------------------------------------------------------\n");
+    wait(0.001);
+    // i2c1
+    int i = 1;
+    for (int address = 0; address < 256; address += 2) {
+        if (!i2c.write(address, NULL, 0)) { // 0 returned is ok
+            printf("1.%02d   0x%02X   %s\n", i, address, GetName(address));
+            i++;
+            wait(0.001);
+        }
+    }
+    printf("\n");
+}
diff -r 000000000000 -r a13a2f61b5f1 I2CList.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/I2CList.h	Mon Jul 23 12:24:48 2018 +0000
@@ -0,0 +1,22 @@
+#include "mbed.h"
+
+#ifndef __I2CLIST_H__
+#define __I2CLIST_H__
+
+class I2CList {
+public:
+I2CList(PinName sda, PinName scl);
+char * GetName(int address);
+void List(void);
+
+private:
+I2C i2c;
+char data_write[3];
+char data_read[2];
+char i2c_name[32];
+
+protected:
+
+};
+
+#endif