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.