x

Dependents:   20180621_FT813

Committer:
JackB
Date:
Mon Jul 23 12:24:48 2018 +0000
Revision:
0:a13a2f61b5f1
I2CL

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JackB 0:a13a2f61b5f1 1 #include "I2CList.h"
JackB 0:a13a2f61b5f1 2
JackB 0:a13a2f61b5f1 3 I2CList::I2CList(PinName sda, PinName scl) : i2c(sda, scl)
JackB 0:a13a2f61b5f1 4 {
JackB 0:a13a2f61b5f1 5 }
JackB 0:a13a2f61b5f1 6
JackB 0:a13a2f61b5f1 7 char * I2CList::GetName(int address)
JackB 0:a13a2f61b5f1 8 {
JackB 0:a13a2f61b5f1 9 strcpy(i2c_name, "");
JackB 0:a13a2f61b5f1 10 if (address == 0x30)
JackB 0:a13a2f61b5f1 11 strcpy(i2c_name, "MCP9808 Temp. Sensor");
JackB 0:a13a2f61b5f1 12 if (address == 0x46)
JackB 0:a13a2f61b5f1 13 strcpy(i2c_name, "BH1750FVI Light Sensor");
JackB 0:a13a2f61b5f1 14 if (address == 0x52)
JackB 0:a13a2f61b5f1 15 strcpy(i2c_name, "TSL2591 Light Sensor");
JackB 0:a13a2f61b5f1 16 if (address == 0x6F)
JackB 0:a13a2f61b5f1 17 strcpy(i2c_name, "MCP79412 RTC (Real Time Clock)");
JackB 0:a13a2f61b5f1 18 if (address == 0x70)
JackB 0:a13a2f61b5f1 19 strcpy(i2c_name, "FT6206 CTPC (Capacitive Touch Panel Controller)");
JackB 0:a13a2f61b5f1 20 if (address == 0x72)
JackB 0:a13a2f61b5f1 21 strcpy(i2c_name, "TSL2561 Light Sensor");
JackB 0:a13a2f61b5f1 22 if (address == 0x78)
JackB 0:a13a2f61b5f1 23 strcpy(i2c_name, "SD1306 OLED Display");
JackB 0:a13a2f61b5f1 24 if ((address == 0x80) || (address == 0xE0))
JackB 0:a13a2f61b5f1 25 strcpy(i2c_name, "PCA9685 LED PWM 16x12-bit");
JackB 0:a13a2f61b5f1 26 if ((address == 0x90) || (address == 0x92))
JackB 0:a13a2f61b5f1 27 strcpy(i2c_name, "ADS1115 ADC 4x16-bit");
JackB 0:a13a2f61b5f1 28 if (address == 0xA0)
JackB 0:a13a2f61b5f1 29 strcpy(i2c_name, "24C256 EEPROM 32kB");
JackB 0:a13a2f61b5f1 30 if (address == 0xAC)
JackB 0:a13a2f61b5f1 31 strcpy(i2c_name, "24C32 EEPROM 4kB");
JackB 0:a13a2f61b5f1 32 if (address == 0xD0)
JackB 0:a13a2f61b5f1 33 strcpy(i2c_name, "RTC RTC (Real Time Clock)");
JackB 0:a13a2f61b5f1 34 if (address == 0xD2)
JackB 0:a13a2f61b5f1 35 strcpy(i2c_name, "AMG8833 8x8 Infrared Array Sensor");
JackB 0:a13a2f61b5f1 36 if (address == 0xE0)
JackB 0:a13a2f61b5f1 37 strcpy(i2c_name, "PCA9685 LED All Call");
JackB 0:a13a2f61b5f1 38
JackB 0:a13a2f61b5f1 39 return i2c_name;
JackB 0:a13a2f61b5f1 40 }
JackB 0:a13a2f61b5f1 41
JackB 0:a13a2f61b5f1 42 void I2CList::List(void)
JackB 0:a13a2f61b5f1 43 {
JackB 0:a13a2f61b5f1 44 // 0x80, 0xE0 PCA9685
JackB 0:a13a2f61b5f1 45 printf("Searching for I2C devices...\n");
JackB 0:a13a2f61b5f1 46 printf("I2C Addr Device Description\n");
JackB 0:a13a2f61b5f1 47 wait(0.001);
JackB 0:a13a2f61b5f1 48 printf("-----------------------------------------------------------\n");
JackB 0:a13a2f61b5f1 49 wait(0.001);
JackB 0:a13a2f61b5f1 50 // i2c1
JackB 0:a13a2f61b5f1 51 int i = 1;
JackB 0:a13a2f61b5f1 52 for (int address = 0; address < 256; address += 2) {
JackB 0:a13a2f61b5f1 53 if (!i2c.write(address, NULL, 0)) { // 0 returned is ok
JackB 0:a13a2f61b5f1 54 printf("1.%02d 0x%02X %s\n", i, address, GetName(address));
JackB 0:a13a2f61b5f1 55 i++;
JackB 0:a13a2f61b5f1 56 wait(0.001);
JackB 0:a13a2f61b5f1 57 }
JackB 0:a13a2f61b5f1 58 }
JackB 0:a13a2f61b5f1 59 printf("\n");
JackB 0:a13a2f61b5f1 60 }