I2C Address list

Incomplete list of I2C address usage

Hopefully this might save you having to scroll to page 46 of a datasheet just to find the prefix

Also see Adafruit's THE LIST though note they use right-justified/Arduino form so remember to multiply by 2

Terms:

  • 0,1 binary bits
  • A= bit set by external pin strapping
  • B= factory set bit usually reflected in the part number
  • X= bit that may be 0 or 1
  • R=the READ bit, 0=write 1=read

Left-justified bit ordering is preferred as the 4-bit prefix fits entirely in the first hex digit and the pin-strapped address+R/W bit fits in the second hex digit. The process of using a bitwise-or operation to add the "read" bit fits well with common "C" programming practice.

Arduino sketches typically use Right-justified addressing, meaning that I2C addresses taken from sketches need to be multiplied by 2. This fits well with assembly language where the Read bit might be passed in the processor's "carry" bit and combined with the 7 bit address using a rotate instruction.

It appears that the Microchip MCC (XC8) uses right-justified addressing as well. At this time I am uncertain what address format the earlier peripheral library used.

Disadvantages of the right-justified form:

  • the 4-bit prefix spills over into the second digit making I2C addresses harder to interpret
  • the address typically needs to be left-shifted at runtime every time it is used

Unavailable

0000xxxx Reserved addresses

00000000 I2C General call

00000001 Start Byte, an interesting one: where devices use software polling a master can transmit this as a "wake up" code. Bacause of the lack of transitions a relatively low poll rate is sufficient to detect bus activity

0000001X Reserved for CBUS, no longer in use.

0000010X Reserved for different bus formats

0000011X Reserved, just reserved...

00001XXX Reserved for high speed mode, serves to "warn off" incompatible devices.

1111xxxx Reserved addresses

11110xxx 10 bit addressing prefix

11111xxx Reserved again.

0001 prefix

This range appears largely unused

0010 prefix

This range appears largely unused

0011 prefix

0011XXXR Many sensing devices use this address range

0011011R TC654 fan controller (fixed address)

0011AAAR MCP9808 temperature sensor

0100 prefix

0100AAAR PCF8575 I/O expander

0100AAAR Microchip MCP23008, MCP23017 GPIO devices

010000AR PCAL6416A Voltage translating GPIO, very configurable

0101 prefix

01010AA0 MAX521 octal 8 bit DAC (Write only)

0101AAA0 MAX520 quad 8 bit DAC (Write only)

0101AAAR SC18IS602/602B/603 I2C-bus to SPI bridge

0101AAAR LM96080 System Hardware Monitor

0101110R LM96000 Hardware Monitor with Integrated Fan Control (Default address)

010110AR LM96000 Alternate addressing, loses one fan to provide an address pin

01010001 Honeywell ASDX pressure sensor common "2A3" or "2A5" variant (read only)

100 prefix

100AAAAR INA260 Current and Power sensor (uses two "4 state" address pins)

1001 prefix

1001BBBR TC74 Temperature sensor

1001101R TC74A5 Temperature sensor common variant

1001AAAR PCF8591 8 bit ADC and DAC

1001BBBR MCP3021 10 bit ADC

1001BBBR MCP3221 12 bit ADC

1001101R MCP3221A5 12 bit ADC common variant, 1001000R variant also seen

1001AAAR Alternate address for MCP9808 temperature sensor from datasheet, factory order only and there is no mention of a special part number so unlikely to be found "in the wild"

1010 prefix

1010XXXR Memory devices 1010XXXR Some Microchip EEPROMS

1010AAAR Typical EEPROM

1100 prefix

1100BBAR MCP4725 DAC Fixed VDD Vref

1100BBBR MCP4726 DAC with Vref pin

1100BBBR MCP4728 Quad 12 bit DAC with internal reference, default 1100000R but address bits stored in EEPROM, rewritable (requires manipulation of LDAC pin)

1100AAAR TPIC2810 open drain 40V driver

1101 prefix

1101000R PCF8523 Real Time Clock and other RTC

1101BBBR MCP3421 18 bit ADC (6 pin package) 1101000R and 1101001R common

1101BBBR MCP3422 18 bit ADC (8 pin package, 2 channel) 1101000R common

1101AAAR MCP3423, MCP3424 using three-state inputs to get 3 bits from two address pins

11011AAR Relatively unused sub-range, worth considering for microcontroller devices

Special

BBB10001 Honeywell ASDX pressure sensor note device is read only, also the datasheet address is given in 7 bit format, address code "2" converts to control byte 0x51.

AAAAAAAR NXP devices using the newer 4-state address scheme: PCA9698 40 pin GPIO,

1AAAAAAR PCA9685 PWM/LED controller has 6 address pins

Two bit per pin address method

Newer devices may allow twice as many bits to be set, by allowing each pin to have 4 states. Address pins may be wired to VSS, VDD, SDA or SCL, encoding 4 states. In the PCA9698 the resulting 6 bit value is expanded into a 7 bit address space in a way that leaves some "gaps".


Please log in to post comments.