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
- Pico hardware bench IoT and embeddedscans a real bus with a Pico and opens the devices it found here
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.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.