Chris Collins

Tools · embedded

I²C address finder

Pick the devices on an I²C bus and see the 7-bit address map with clashes and reserved addresses, the address-pin strapping that makes them fit, and a TCA9548A multiplexer plan when they can't share one bus — for 53 common sensors, displays, expanders, ADCs, RTCs and EEPROMs.

Added

Works with

How to use it

Add each device on your bus (with how many of each). The tool shows:

  • The bus as wired — every device at its default address, with clashes in red. The classic one: an MPU-6050 and a DS3231 real-time clock both default to 0x68.

  • A working assignment — which address each device can take and how to set it: the address pin to tie high or low (AD0 → VDD), the part number to order (SHT4x, MCP4725), or for time-of-flight sensors and the MLX90614, the address to write in software at start-up.

  • A multiplexer plan — when strapping can’t fit everything (three MPU-6050s, seventeen INA219s), how to split the devices across the channels of a TCA9548A.

Striped cells are addresses the I²C specification reserves (general call, CBUS, Hs-mode codes, and the 10-bit addressing prefix 0x78–0x7B; NXP UM10204, Table 4). The tool also flags addresses some parts answer besides their own: the PCA9685’s All Call address 0x70 (enabled at power-up — the same address as a TCA9548A strapped low) and the magnetometer an MPU-9250 exposes at 0x0C in bypass mode.

Addresses are 7-bit, as used by Arduino Wire, ESP-IDF and Linux i2cdetect. Address options come from each part’s datasheet. Pull-up resistor sizing is in the MCU timing tool; register decoding for common sensors in the sensor decoder; cables in Connector pinouts.

Sharing

Share link copies a URL with the devices on your bus: d lists device ids, with *n for a count — for example /tools/i2c/?d=mpu6050.

Runs entirely in your browser; nothing you type leaves this page.