Overview
When people need to communicate with each other, we use language. If two people speak the same language, they can talk all they want about all sorts of topics. If they don't speak the same language, communication is difficult. Likewise, electronic parts need to communicate - and they also have their own languages. There are a few common languages that are spoken. The most popular ones are TTL Serial, SPI, I2C, I2S, 1-Wire, and Parallel (such as 8080 or 6800). Of these, Parallel and SPI can 'share a bus' using a select line - multiple devices can share the pins as long as they have a single pin that can be used to indicate who is permitted to speak at one time. 1-Wire and I2C are true shared-bus protocols - you can have 100+ components all talking at once using the same 2 wires (for I2C) or 1-wire (for the aptly-named 1-wire). 1-Wire is much slower than I2C and is a strongly-patented protocol owned by Maxim so you won't see a lot of devices out there other than Maxim/Dallas parts that use 1-wire.
I2C - Inter-Integrated Circuit communications!
This guide doesn't cover the nitty-gritty details of I2C, other than to note that you can connect multiple I2C devices (often referred to as "I2C peripheral") to a single I2C controller (a.k.a "I2C main") using only two wires.
For example, in this diagram, one Metro (e.g. Arduino compatible) connects to 5 devices.
In general, you can only have one controller and up to 127 devices. (There are exceptions such as multi-main and 10-bit address devices but they are so rare and we've never seen them in practice)
I2C is incredibly popular because it uses only 2 wires, and like we said, multiple devices can share those wires, making it a great way to connect tons of sensors, drivers, expanders, without using all the microcontroller pins. The only bad news about I2C is that each I2C device must have a unique address - and the addresses only range from 0 to 127 (aka 0 to 0x7F hex). One thing this means is that if you have two accelerometers (lets say) and they both have address 0x22 you cannot have both of them on the same I2C lines.
There are a few work-arounds:
- One is you might be able to power down or 'de-select' one sensor or another at a time.
- Another is that some boards have an address-select line or jumper or other configuration. If you can set one to a different address you're good to go.
- Some devices have a software-reprogrammable address, where they come up as one address on boot but can be told to change address. Oftentimes, the new address is forgotten on reboots, so you have to de-power all the other similarly-addressed devices while you do so.
- You can use an I2C multiplexer like the TCA9548A which will let you use one I2C address to talk to the multiplexer and tell it which line you want to enable
Since we deal with so many I2C devices we thought it would be handy to have a table with all the most common sensors and modules we encounter, and their I2C address!
Continue onto the next page to see our current list
Page last edited March 08, 2024
Text editor powered by tinymce.
The List
Special cases:
- PCA9685 can use any address between 0x40 to 0x7F. Some of these addresses are fixed. See the
datasheet for details. This chip is used in:
- PWM/Servo Breakout
- PWM/Servo Shield
- PWM/Servo HAT
- PWM/Servo Bonnet
- PWM/Servo Wing
- DC & Stepper Motor Shield
- DC & Stepper Motor HAT
- DC & Stepper Motor Bonnet
- DC & Stepper Motor Wing
- 0x00 - 0x07 and 0x78 - 0x7F are reserved I2C addresses
0x00 - 0x0F
0x00
- Reserved - general call address
0x01
- Reserved for CBUS compatibility
0x02
- Reserved for I2C-compatible bus variants
0x03
- Reserved for future use
0x04
- Reserved for HS-mode controller
0x05
- Reserved for HS-mode controller
0x06
- Reserved for HS-mode controller
0x07
- Reserved for HS-mode controller
0x0B
- LC709203F Fuel Gauge and Battery Monitor (0x0B only)
0x0C
- MLX90393 3-Axis Magnetometer (0x0C - 0x0F)
0x0D
- MLX90393 3-Axis Magnetometer (0x0C - 0x0F)
0x0E
- MAG3110 3-Axis Magnetometer (0x0E only)
- MLX90393 3-Axis Magnetometer (0x0C - 0x0F)
0x0F
- MLX90393 3-Axis Magnetometer (0x0C - 0x0F)
0x10 - 0x1F
0x10
- PA1010D GPS Module (0x10 only)
- VEML6075 UV Sensor (0x10 only)
- VEML7700 Ambient Light Sensor (0x10 only)
0x11
- Si4713 FM Transmitter with RDS (0x11 or 0x63)
0x12
- PMSA0031 Gas Sensor (0x12 only)
- AW9310x Touch key controler (0x12, 0x13, 0x14)
0x13
- VCNL40x0 Proximity Sensor (0x13 only)
- AW9310x Touch key controler (0x12, 0x13, 0x14)
0x14
- AW9310x Touch key controler (0x12, 0x13, 0x14)
0x18
- LIS331 3-Axis Accelerometer (0x18 or 0x19)
- LIS3DH 3-Axis Accelerometer (0x18 or 0x19)
- MCP9808 Temperature Sensor (0x18 - 0x1F)
- MPRLS Pressure Sensor (0x18)
0x19
- LIS331 3-Axis Accelerometer (0x18 or 0x19)
- LIS3DH 3-Axis Accelerometer (0x18 or 0x19)
- LSM303 Accelerometer/Magnetometer (0x19 for accelerometer and 0x1E for magnetometer)
- MCP9808 Temperature Sensor (0x18 - 0x1F)
0x1A
- AGS02MA TVOC Gas Sensor (0x1A)
- MCP9808 Temperature Sensor (0x18 - 0x1F)
0x1B
- MCP9808 Temperature Sensor (0x18 - 0x1F)
0x1C
- FXOS8700 Accelerometer/Magnetometer (0x1C, 0x1D, 0x1E or 0x1F)
- LIS3MDL Magetometer (0x1C & 0x1E)
- MCP9808 Temperature Sensor (0x18 - 0x1F)
- MMA7455L (0x1C or 0x1D)
- MMA845x 3-Axis Accelerometer (0x1C or 0x1D)
0x1D
- ADXL343 3-Axis Accelerometer (0x1D or 0x53)
- ADXL345 3-Axis Accelerometer (0x1D or 0x53)
- FXOS8700 Accelerometer/Magnetometer (0x1C, 0x1D, 0x1E or 0x1F)
- LSM9DS0 9-Axis IMU (0x1D or 0x1E for Accel/Mag, 0x6A or 0x6B for Gyro)
- MCP9808 Temperature Sensor (0x18 - 0x1F)
- MMA7455L (0x1C or 0x1D)
- MMA845x 3-Axis Accelerometer (0x1C or 0x1D)
0x1E
- FXOS8700 Accelerometer/Magnetometer (0x1C, 0x1D, 0x1E or 0x1F)
- HMC5883 Magnetometer (0x1E only)
- LIS2MDL Magnetometer (0x1E only)
- LIS3MDL Magnetometer (0x1C & 0x1E)
- LSM303 Accelerometer/Magnetometer (0x19 for accelerometer and 0x1E for magnetometer)
- LSM9DS0 9-Axis IMU (0x1D or 0x1E for Accel/Mag, 0x6A or 0x6B for Gyro)
- MCP9808 Temperature Sensor (0x18 - 0x1F)
0x1F
- FXOS8700 Accelerometer & Magnetometer (0x1C, 0x1D, 0x1E or 0x1F)
- MCP9808 Temperature Sensor (0x18 - 0x1F)
0x20 - 0x2F
0x20
- Chirp! Water Sensor (0x20)
- FXAS21002 Gyroscope (0x20 or 0x21)
- MCP23008 GPIO Expander (0x20 - 0x27)
- MCP23017 GPIO Expander (0x20 - 0x27)
0x21
- FXAS21002 Gyroscope (0x20 or 0x21)
- MCP23008 GPIO Expander (0x20 - 0x27)
- MCP23017 GPIO Expander (0x20 - 0x27)
0x22
- MCP23008 GPIO Expander (0x20 - 0x27)
- MCP23017 GPIO Expander (0x20 - 0x27)
- FUSB302B Programmable USB Type‐C Controller w/PD (0x22-0x25)
0x23
- BH1750 Light Sensor (0x23 or 0x5C)
- MCP23008 GPIO Expander (0x20 - 0x27)
- MCP23017 GPIO Expander (0x20 - 0x27)
- FUSB302B Programmable USB Type‐C Controller w/PD (0x22-0x25)
0x24
- MCP23008 GPIO Expander (0x20 - 0x27)
- MCP23017 GPIO Expander (0x20 - 0x27)
- PN532 NFC/RFID reader (0x24 only, unless manually configured)
- FUSB302B Programmable USB Type‐C Controller w/PD (0x22-0x25)
0x25
- MCP23008 GPIO Expander (0x20 - 0x27)
- MCP23017 GPIO Expander (0x20 - 0x27)
- FUSB302B Programmable USB Type‐C Controller w/PD (0x22-0x25)
0x26
- MCP23008 GPIO Expander (0x20 - 0x27)
- MCP23017 GPIO Expander (0x20 - 0x27)
- MSA301 3-Axis Accelerometer (0x26 only)
0x27
- MCP23008 GPIO Expander (0x20 - 0x27)
- MCP23017 GPIO Expander (0x20 - 0x27)
0x28
- BNO055 IMU (0x28 or 0x29)
- CAP1188 8-Channel Capacitive Touch (0x28 - 0x2D)
- DS1841 Digital Logarithmic Potentiometer (0x28-0x2B)
- DS3502 Digital 10K Potentiometer (0x28-0x2B)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TSL2591 Light Sensor (0x29 and 0x28)
0x29
- BNO055 IMU (0x28 or 0x29)
- CAP1188 8-Channel Capacitive Touch (0x28 - 0x2D )
- DS1841 Digital Logarithmic Potentiometer (0x28-0x2B)
- DS3502 Digital 10K Potentiometer (0x28-0x2B)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TCS34725 Color Sensor (0x29 only)
- TSL2561 Light Sensor (0x29, 0x39 or 0x49)
- TSL2591 Light Sensor (0x29 and 0x28)
- VL53L0x ToF Sensor (0x29, software selectable)
- VL6180X ToF Sensor (0x29)
0x2A
- CAP1188 8-Channel Capacitive Touch (0x28 - 0x2D)
- DS1841 Digital Logarithmic Potentiometer (0x28-0x2B)
- DS3502 Digital 10K Potentiometer (0x28-0x2B)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
0x2B
- CAP1188 8-Channel Capacitive Touch (0x28 - 0x2D)
- DS1841 Digital Logarithmic Potentiometer (0x28-0x2B)
- DS3502 Digital 10K Potentiometer (0x28-0x2B)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
0x2C
- CAP1188 8-Channel Capacitive Touch (0x28 - 0x2D)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
0x2D
- CAP1188 8-Channel Capacitive Touch (0x28 - 0x2D)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
0x2E
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
0x30 - 0x3F
0x30
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
0x31
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
0x32
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
0x33
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- MLX90640 IR Thermal Camera (0x33 only)
0x34
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
0x35
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
0x36
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- Adafruit Stemma QT Rotary Encoder with NeoPixel (0x36 - 0x3D)
- MAX17048 LiPoly/LiIon Fuel Gauge and Battery Monitor (0x36 only)
0x37
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- Adafruit Stemma QT Rotary Encoder with NeoPixel (0x36 - 0x3D)
0x38
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- Adafruit Stemma QT Rotary Encoder with NeoPixel (0x36 - 0x3D)
- AHT20 Humidity/Temperature Sensor (0x38 only)
- DHT20 Humidity/Temperature Sensor (0x38 only)
- FT6x06 Capacitive Touch Driver (0x38 only)
- NCP5623 RGB LED Driver
- NEWOPTO XYC-ALS21C-K1 Ambient light sensor (0x38)
- VEML6070 UV Index (0x38 and 0x39)
0x39
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- Adafruit Stemma QT Rotary Encoder with NeoPixel (0x36 - 0x3D)
- APDS-9960 IR/Color/Proximity Sensor (0x39 only)
- AS7341 Color Sensor (0x39)
- TSL2561 Light Sensor (0x29, 0x39 or 0x49)
- VEML6070 UV Light Sensor (0x38 and 0x39)
0x3A
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- Adafruit Stemma QT Rotary Encoder with NeoPixel (0x36 - 0x3D)
- PCF8577C LCD direct/duplex driver (0x3A only, with parallel adressing)
0x3B
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- Adafruit Stemma QT Rotary Encoder with NeoPixel (0x36 - 0x3D)
0x3C
All OLED controllers below use either 0x3C or 0x3D depending on a control pin. Hardware selectable on some displays with a solder jumper.
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- Adafruit Stemma QT Rotary Encoder with NeoPixel (0x36 - 0x3D)
- CH1115 Monochrome OLED (0x3C or 0x3D)
- CH1116 Monochrome OLED (0x3C or 0x3D)
- SSD1305 Monochrome OLED (0x3C or 0x3D)
- SSD1306 Monochrome OLED (0x3C or 0x3D)
- SSD1309 Monochrome OLED (0x3C or 0x3D)
- SSD1315 Monochrome OLED (0x3C or 0x3D)
- SH1106 Monochrome OLED (0x3C or 0x3D)
- SSD1327 16-Level Grayscale OLED (0x3C or 0x3D)
- ST75256 4-Level Grayscale LCD (0x3C - 0x3F)
0x3D
All OLED controllers below use either 0x3C or 0x3D depending on a control pin. Hardware selectable on some displays with a solder jumper.
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- Adafruit Stemma QT Rotary Encoder with NeoPixel (0x36 - 0x3D)
- CH1115 Monochrome OLED (0x3C or 0x3D)
- CH1116 Monochrome OLED (0x3C or 0x3D)
- SSD1305 Monochrome OLED (0x3C or 0x3D)
- SSD1306 Monochrome OLED (0x3C or 0x3D)
- SSD1309 Monochrome OLED (0x3C or 0x3D)
- SSD1315 Monochrome OLED (0x3C or 0x3D)
- SH1106 Monochrome OLED (0x3C or 0x3D)
- SSD1327 16-Level Grayscale OLED (0x3C or 0x3D)
- ST75256 4-Level Grayscale LCD (0x3C - 0x3F)
0x3E
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- ST75256 4-Level Grayscale LCD (0x3C - 0x3F)
0x3F
- Adafruit NeoKey 1x4 Four Mechanical Key Switches with NeoPixels (0x30-0x3F)
- Adafruit NeoSlider Slide Potentiometer with 4 NeoPixels (0x30-0x3F)
- ST75256 4-Level Grayscale LCD (0x3C - 0x3F)
0x40 - 0x4F
- PCA9685. See "Special Cases"
0x40
- HDC1008 Humidity/Temperature Sensor (0x40, 0x41, 0x42 or 0x43)
- HTU21D-F Humidity/Temperature Sensor (0x40 only)
- HTU31D Humidity/Temperature Sensor (0x40 or 0x41)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- MS8607 Humidity/Temperature/Pressure Sensor (0x40 for Humidity and 0x76 for Temperature/Pressure)
- Si7021 Humidity/Temperature Sensor (0x40 only)
- PCA9685 16-Channel PWM Driver (default address) (0x40 - 0x7F)
- TMP007 IR Temperature Sensor (0x40 - 0x47)
- TMP006 IR Temperature Sensor (0x40 - 0x47)
0x41
- HDC1008 Humidity/Temperature Sensor (0x40, 0x41, 0x42 or 0x43)
- HTU31D Humidity/Temperature Sensor (0x40 or 0x41)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- STMPE610/STMPE811 Resistive Touch Controller (0x41 or 0x44)
- TMP007 IR Temperature Sensor (0x40 - 0x47)
- TMP006 IR Temperature Sensor (0x40 - 0x47)
0x42
- HDC1008 Humidity/Temperature Sensor (0x40, 0x41, 0x42 or 0x43)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- TMP007 IR Temperature Sensor (0x40 - 0x47)
- TMP006 IR Temperature Sensor (0x40 - 0x47)
0x43
- HDC1008 Humidity/Temperature Sensor (0x40, 0x41, 0x42 or 0x43)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- TMP007 IR Temperature Sensor (0x40 - 0x47)
- TMP006 IR Temperature Sensor (0x40 - 0x47)
0x44
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- ISL29125 Color Sensor (0x44 only)
- SHT45 Humidity/Temperature Sensor (0x44)
- SHT40 Humidity/Temperature Sensor (0x44)
- SHT31 Humidity/Temperature Sensor (0x44 or 0x45 selectable)
- STMPE610/STMPE811 Resistive Touch controller (0x41 or 0x44)
- TMP007 IR Temperature Sensor (0x40 - 0x47)
- TMP006 IR Temperature Sensor (0x40 - 0x47)
0x45
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- SHT31 Humidity/Temperature Sensor (0x44 or 0x45 selectable)
- TMP007 IR Temperature Sensor (0x40 - 0x47)
- TMP006 IR Temperature Sensor (0x40 - 0x47)
0x46
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- TMP007 IR Temperature Sensor (0x40 - 0x47)
- TMP006 IR Temperature Sensor (0x40 - 0x47)
0x47
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- TMP007 IR Temperature Sensor (0x40 - 0x47)
- TMP006 IR Temperature Sensor (0x40 - 0x47)
0x48
- ADS1115 4-channel 16-Bit ADC (0x48 0x49 0x4A or 0x4B)
- ADT7410 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- ATSAMD09 Breakout with seesaw (0x48-0x4B)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- PCF8591 Quad 8-Bit ADC + 8-Bit DAC (0x48 - 0x4F)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TMP102 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- TMP117 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
0x49
- ADS1115 4-Channel 16-Bit ADC (0x48 0x49 0x4A or 0x4B)
- ADT7410 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- AS7262 Light/Color Sensor (0x49)
- ATSAMD09 Breakout with seesaw (0x48-0x4B)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- PCF8591 Quad 8-Bit ADC + 8-Bit DAC (0x48 - 0x4F)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TMP102 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- TMP117 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- TSL2561 Light Sensor (0x29, 0x39 or 0x49)
0x4A
- ADS1115 4-channel 16-Bit ADC (0x48 0x49 0x4A or 0x4B)
- ADT7410 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- ATSAMD09 Breakout with seesaw (0x48-0x4B)
- BNO085 9-DoF IMU (0x4A or 0x4B)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- PCF8591 Quad 8-Bit ADC + 8-Bit DAC (0x48 - 0x4F)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TMP102 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- TMP117 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
0x4B
- ADS1115 4-channel 16-Bit ADC (0x48 0x49 0x4A or 0x4B)
- ADT7410 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- ATSAMD09 Breakout with seesaw (0x48-0x4B)
- BNO085 9-DoF IMU (0x4A or 0x4B)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- PCF8591 Quad 8-Bit ADC + 8-Bit DAC (0x48 - 0x4F)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TMP102 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
- TMP117 Temperature Sensor (0x48 0x49 0x4A or 0x4B)
0x4C
- Designer Systems pHAT-NBIOT multi-band LTE Cat NB1 module (0x4C)
- EMC2101 Fan Controller (0x4C)
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- PCF8591 Quad 8-Bit ADC + 8-Bit DAC (0x48 - 0x4F)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x30-0x37, 0x48-0x4F)
0x4D
- Designer Systems pHAT-GSM pHAT-GSM quad-band GSM/GPRS module (0x4D)- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- PCF8591 Quad 8-Bit ADC + 8-Bit DAC (0x48 - 0x4F)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
0x4E
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- PCF8591 Quad 8-Bit ADC + 8-Bit DAC (0x48 - 0x4F)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
0x4F
- INA219 High-Side DC Current/Voltage Sensor (0x40 - 0x4F)
- INA260 Precision DC Current/Power Sensor (0x40 - 0x4F)
- PCF8591 Quad 8-Bit ADC + 8-Bit DAC (0x48 - 0x4F)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
0x50 - 0x5F
- 24LCxx series EEPROMs of various sizes and makes. Example: PC Monitor's EDID (0x50)
- PCA9685. See "Special Cases"
0x50
- Adafruit Mini I2C Gamepad with seesaw (0x50 - 0x53)
- MB85RC FRAM (0x50 - 0x57)
0x51
- Adafruit Mini I2C Gamepad with seesaw (0x50 - 0x53)
- MB85RC FRAM (0x50 - 0x57)
0x52
- Adafruit Mini I2C Gamepad with seesaw (0x50 - 0x53)
- MB85RC FRAM (0x50 - 0x57)
-
Nintendo Nunchuck Controller (0x52 only)
0x53
Adafruit Mini I2C Gamepad with seesaw (0x50 - 0x53)
ADXL343 3-Axis Accelerometer (0x1D or 0x53)
ADXL345 3-Axis Accelerometer (0x1D or 0x53)
LTR390 UV Sensor (0x53)
MB85RC FRAM (0x50 - 0x57)
0x54
- MB85RC FRAM (0x50 - 0x57)
0x55
- MB85RC FRAM (0x50 - 0x57)
0x56
- MB85RC FRAM (0x50 - 0x57)
0x57
- MB85RC FRAM (0x50 - 0x57)
- MAX3010x Pulse & Oximetry Sensor (0x57)
0x58
- AW9523 GPIO Expander and LED Driver (0x58 - 0x5B)
- SGP30 Gas Sensor (0x58 only)
- TPA2016 Class-D Audio Amplifier (0x58 only)
0x59
- AW9523 GPIO Expander and LED Driver (0x58 - 0x5B)
- SGP40 Gas Sensor (0x59 only)
0x5A
- AW9523 GPIO Expander and LED Driver (0x58 - 0x5B)
- MPR121 12-Point Capacitive Touch Sensor (0x5A, 0x5B, 0x5C, 0x5D)
- CCS811 VOC Sensor (0x5A or 0x5B)
- DRV2605 Haptic Motor Driver (0x5A only)
- MLX9061x IR Temperature Sensor (0x5A only)
0x5B
- AW9523 GPIO Expander and LED Driver (0x58 - 0x5B)
- CCS811 VOC Sensor (0x5A or 0x5B)
- MPR121 12-Point Capacitive Touch Sensor (0x5A, 0x5B, 0x5C, 0x5D)
0x5C
- AM2315 Humidity/Temp Sensor (0x5C only)
- AM2320 Humidity/Temp Sensor (0x5C only)
- BH1750 Light Sensor (0x23 or 0x5C)
- LPS22 Pressure Sensor (0x5C, 0x5D)
- LPS25 Pressure Sensor (0x5C, 0x5D)
- LPS33HW Ported Pressure Sensor (0x5C, 0x5D)
- LPS35HW Pressure Sensor (0x5C, 0x5D)
- MPR121 12-Point Capacitive Touch Sensor (0x5A, 0x5B, 0x5C, 0x5D)
0x5D
- LPS22 Pressure Sensor (0x5C, 0x5D)
- LPS25 Pressure Sensor (0x5C, 0x5D)
- LPS33HW Ported Pressure Sensor (0x5C, 0x5D)
- LPS35HW Pressure Sensor (0x5C, 0x5D)
- MPR121 12-Point Capacitive Touch Sensor (0x5A, 0x5B, 0x5C, 0x5D)
0x5E
- TLV493D 3-Axis Magnetometer (0x5E)
0x5F
0x60 - 0x6F
- PCA9685. See "Special Cases"
0x60
- ATECC608 Cryptographic Co-Processor (0x60)
- MCP4725A0 12-Bit DAC (0x60 or 0x61)
- MCP4728 Quad DAC (0x60 only)
- MCP9600 Temperature Sensor (0x60 - 0x67)
- MPL115A2 Barometric Pressure (0x60 only)
- MPL3115A2 Barometric Pressure (0x60 only)
- Si5351A Clock Generator (0x60 or 0x61)
- Si1145 Light/IR Sensor (0x60 only)
- TEA5767 Radio Receiver (0x60 only)
- VCNL4040 Proximity and Ambient Light Sensor (0x60 only)
0x61
- MCP4725A0 12-Bit DAC (0x60 or 0x61)
- MCP9600 Temperature Sensor (0x60 - 0x67)
- Si5351A Clock Generator (0x60 or 0x61)
- SCD30 Humidity/Temperature/CO2 Sensor (0x61)
0x62
- MCP4725A1 12-Bit DAC (0x62 or 0x63)
- MCP9600 Temperature Sensor (0x60 - 0x67)
0x63
- MCP4725A1 12-Bit DAC (0x62 or 0x63)
- MCP9600 Temperature Sensor (0x60 - 0x67)
- Si4713 FM Transmitter with RDS (0x11 or 0x63)
0x64
- MCP4725A2 12-Bit DAC (0x64 or 0x65)
- MCP9600 Temperature Sensor (0x60 - 0x67)
0x65
- MCP4725A2 12-Bit DAC (0x64 or 0x65)
- MCP9600 Temperature Sensor (0x60 - 0x67)
0x66
- MCP4725A3 12-Bit DAC (0x66 or 0x67)
- MCP9600 Temperature Sensor (0x60 - 0x67)
0x67
- MCP4725A3 12-Bit DAC (0x66 or 0x67)
- MCP9600 Temperature Sensor (0x60 - 0x67)
0x68
This address is really popular with real time clocks, almost all of them use 0x68!
- AMG8833 IR Thermal Camera Breakout (0x68 or 0x69)
- DS1307 RTC (0x68 only)
- DS3231 RTC (0x68 only)
- ICM-20649 Accelerometer + Gyroscope (0x68 or 0x69)
- ITG3200 Gyroscope (0x68 or 0x69)
- MPU-9250 9-DoF IMU (0x68 or 0x69)
- MPU-60X0 Accelerometer + Gyroscope (0x68 or 0x69)
- PCF8523 RTC (0x68 only)
0x69
- AMG8833 IR Thermal Camera Breakout (0x68 or 0x69)
- ICM-20649 Accelerometer + Gyroscope (0x68 or 0x69)
- ITG3200 Gyroscope (0x68 or 0x69)
- MPU-9250 9-DoF IMU (0x68 or 0x69)
- MPU-60X0 Accelerometer + Gyroscope (0x68 or 0x69)
0x6A
- ICM330DHC 6-Axis IMU (0x6A or 0x6B)
- L3GD20H Gyroscope (0x6A or 0x6B)
- LSM6DS33 6-Axis IMU (0x6A or 0x6B)
- LSM6DSOX 6-Axis IMU (0x6A or 0x6B)
- LSM9DS0 9-Axis IMU (0x1D or 0x1E for Accel/Mag, 0x6A or 0x6B for Gyro)
0x6B
- ICM330DHC 6-Axis IMU (0x6A or 0x6B)
- L3GD20H Gyroscope (0x6A or 0x6B)
- LSM6DS33 6-Axis IMU (0x6A or 0x6B)
- LSM6DSOX 6-Axis IMU (0x6A or 0x6B)
- LSM9DS0 9-Axis IMU (0x1D or 0x1E for Accel/Mag, 0x6A or 0x6B for Gyro)
0x70 - 0x7F
- PCA9685 Shields, HATs, Breakouts, Wings etc - See "Special Cases"
0x70
- HT16K33 LED Matrix Driver (0x70 - 0x77)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- SHTC3 Temp and Humidity Sensor (0x70)
- TCA9548 1-to-8 I2C Multiplexer (0x70 - 0x77)
0x71
- HT16K33 LED Matrix Driver (0x70 - 0x77)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TCA9548 1-to-8 I2C Multiplexer (0x70 - 0x77)
0x72
- HT16K33 LED Matrix Driver (0x70 - 0x77)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TCA9548 1-to-8 I2C Multiplexer (0x70 - 0x77)
0x73
- HT16K33 LED Matrix Driver (0x70 - 0x77)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TCA9548 1-to-8 I2C Multiplexer (0x70 - 0x77)
0x74
- HT16K33 LED Matrix Driver (0x70 - 0x77)
- IS31FL3731 144-LED CharliePlex driver (0x74 0x75 0x66 or 0x77)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TCA9548 1-to-8 I2C Multiplexer (0x70 - 0x77)
0x75
- HT16K33 LED Matrix Driver (0x70 - 0x77)
- IS31FL3731 144-LED CharliePlex driver (0x74 0x75 0x66 or 0x77)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TCA9548 1-to-8 I2C Multiplexer (0x70 - 0x77)
0x76
- BME280 Temp/Barometric/Humidity (0x76 or 0x77)
- BME680 Temp/Barometric/Humidity/Gas (0x76 or 0x77)
- BMP280 Temp/Barometric (0x76 or 0x77)
- BMP388 Temp/Barometric (0x76 or 0x77)
- BMP390 Temp/Barometric (0x76 or 0x77)
- DPS310 Barometric Sensor (0x76 or 0x77)
- HT16K33 LED Matrix Driver (0x70 - 0x77)
- IS31FL3731 144-LED CharliePlex driver (0x74 0x75 0x66 or 0x77)
- MS5607/MS5611 Barometric Pressure (0x76 or 0x77)
- MS8607 Temp/Barometric/Humidity (0x40 for Humidity and 0x76 for Barometric/Temperature)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TCA9548 1-to-8 I2C Multiplexer (0x70 - 0x77)
0x77
- BMA180 Accelerometer (0x77 only)
- BME280 Temp/Barometric/Humidity (0x76 or 0x77)
- BME680 Temp/Barometric/Humidity/Gas (0x76 or 0x77)
- BMP180 Temp/Barometric (0x77 only)
- BMP085 Temp/Barometric (0x77 only)
- BMP280 Temp/Barometric (0x76 or 0x77)
- BMP388 Temp/Barometric (0x76 or 0x77)
- BMP390 Temp/Barometric (0x76 or 0x77)
- DPS310 Barometric Sensor (0x76 or 0x77)
- HT16K33 LED Matrix Driver (0x70 - 0x77)
- IS31FL3731 144-LED CharliePlex driver (0x74 0x75 0x66 or 0x77)
- MS5607/MS5611 Barometric Pressure (0x76 or 0x77)
- PCT2075 Temperature Sensor (0x28-0x2E, 0x48-0x4F, 0x70-0x77)
- TCA9548 1-to-8 I2C Multiplexer (0x70 - 0x77)
0x78
- Reserved for 10-bit I2C addressing
0x79
- Reserved for 10-bit I2C addressing
0x7A
- Reserved for 10-bit I2C addressing
0x7B
- Reserved for 10-bit I2C addressing
0x7C
- Reserved for future purposes
0x7D
- Reserved for future purposes
0x7E
- Reserved for future purposes
0x7F
- Reserved for Future Purposes
Page last edited March 08, 2024
Text editor powered by tinymce.
Troublesome Chips
Troublesome chips:
Some sensors or chips have non-standard behavior that causes issues when trying to use I2C. Here's a few of the ones to watch for
- AGS20MA - Use a bus speed of 20-30 kHz.
- AM2320 - Automatic sleep behavior causes unreliable scanning.
- ATECCx08 - Use slow-speed I2C to get out of sleep mode.
- BNO055 - Uses clock stretching, violates I2C protocol timing in some cases, and sometimes needs to be reset. Does not work well on i.MX RT10xx chips. Does not work well with ESP32, ESP32-S3 before ESP-IDF 5.3.2. Use CircuitPython 9.2.2 or later.
- BNO085 - Uses clock stretching, violates I2C protocol timing in some cases, and sometimes needs to be reset. Does not work well on i.MX RT10xx chips, ESP32, ESP32-S3.
- CCS811 - Uses clock stretching.
- LC709203F - Repeated start, clock stretching, sleep mode
- MCP9600 (date codes 1845 or before) - bug: duplicate data from register. reads, perhaps due to clock stretching.
- MCP9600, MCP9601 - Repeated start, clock stretching. Often will not respond to zero-length writes, so scanning the I2C bus to find the device can fail.
- PN532 - Clock stretching.
If you're using Raspberry Pi with these chips, check out our guide on how to work-around clock stretching.
Troublesome microcontrollers:
MicroChip Atmel SAMD21, SAMx5x - I2C bus frequency below 95 kHz not available in CircuitPython when
I2CTargetis drive with a 48 MHz clock, which is typical. CircuitPython checks for out-of-range bus frequencies.Espressif ESP32-S3 - Use software that uses Espressif ESP-IDF v5.3.2 or later. When using versions of the Espressif ESP-IDF SDK older than v5.3.2, ESP32-S3 has problems with I2C devices that do clock stretching or have other unusual timing behavior. ESP-IDF is the underlying software used by CircuitPython and the Arduino
esp32board support package. CircuitPython 9.2.2 and later use ESP-IDF 5.3.2 and later. Arduinoesp32v3.2.0 and later use ESP-IDF v5.4.0 and later. These versions support most I2C devices well. However, some of the troublesome chips listed above still don't work well or at all even with ESP-IDF v5.
Page last edited March 08, 2024
Text editor powered by tinymce.