I have interfaces Atmel 24C04 EEPROM to raspberry PI 3b+ and used i2cdetect to verify if the interfacing is done properly. I am new to this area and trying to learn by doing some hands on.

After interfacing i2cdetect is showing two address 0x51 and 0x52 :-( As far as I know there should be only one address assigned to each device.

I have interfaced only one EEPROM and there is no other i2c device interfaced with the board. Please helpenter image description here

  • 1
    I have the same experience from time to time. Sometimes even three addresses show up but only one device is connected. Some of the following tricks might help: (1) Shorten the connecting wires, if possible to less than 30 cm. (2) Remove (desolder) the I2C EEPROM on board 4k7 pullup resistor (because Rpi SCL/SDA already have 1k7, which if strong enough. (3) Try another module. Modules do differ in input/pullup impedance (capacitance matters!)
    – tlfong01
    Aug 14, 2019 at 12:24
  • And if you are using Rpi4B Raspbian 10 buster release July 10, you can try to set I2C speed down to even as slow as 10kHz, to see if situation improves. This I2C speed setting works only for Rpi4 buster, NOT for Rpi3B+ stretch (because of a Rpi design bug, as I have heard).
    – tlfong01
    Aug 14, 2019 at 13:10
  • 2
    Please don't use pictures of text. Instead paste the text direct into the question.
    – Ingo
    Aug 14, 2019 at 17:45
  • My experience was with Rpi3B+ stretch. Now I am experimenting with Rpi4B Rapsbian 10 buster jul10 release, using 32kByte EEPROM: (1) AliExpress LC Tech AT24C256 I2C EEPROM Module - US$0.7 fr.aliexpress.com/item/32811471056.html (2) Hobbytronics AT24C256 I2C EEPROM Module (24LC256) hobbytronics.co.uk/arduino-external-eeprom. The module has 3 address jumpers to select 8 I2C addresses, from 0x50 to 0x57. I found that i2cdetect -y 1 detects ONLY ONE ADDRESS, from 0x50 to 0x57, depends on my jumper setting.
    – tlfong01
    Aug 16, 2019 at 6:57

1 Answer 1


The 4K EEPROM only uses the A2 and A1 device address bits with the third bit being a memory page address bit. The two device address bits must compare to their corresponding hard-wired input pins. The A0 pin is no connect.

Have you connected A0 to ground?

Does the device operate properly?

It sounds like you are seeing normal behaviour of the paging bit (P0). P0 will be 0 to address page 0, 1 to address page 1. It is probably an artefact of the i2cdetect command itself.

  • Yes the A0 is connected to ground but the result is same even if it is not connected to anything. And I have also tried write/read from the device and it works fine with both the addresses. Aug 14, 2019 at 15:50
  • That sounds like normal behaviour (as far as a brief look at the datasheet suggests). It uses the different addresses for the different pages.
    – joan
    Aug 14, 2019 at 16:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.