AT24C01 EEPROM FAQ (Frequently Asked Questions)

1. How can I use an iPort to access an Atmel AT24C01 EEPROM?

The Atmel AT24C01, a 128 byte EEPROM, is an interesting memory device. Its read and write operations use the I2C Bus in a unique way.

It looks like the AT24C01 allows each byte within the chip to act like separate I2C Bus slave device. This uses up the bus slave address space, but if it is the only device on the bus, this might be OK.

The AT24C01 acknowledges all 7-bit I2C Bus slave addresses (0x00...0xFE), so no other slave device can be on the bus. It uses the seven MS (most significant) bits of the I2C Bus slave address as its internal memory address for subsequent writes or reads. Most memory devices use the first message data byte to set the internal memory address, so in some ways, the AT24C01 is more efficient if you don't mind it using all available addresses on the bus.

To write to this device, you will need to set the Most Significant 7-bits of the I2C Bus slave address to the address of the EEPROM byte you want to access. For instance, you would set the MasterTx slave address to 0x02 to access the byte at address 0x01 in the chip. Slave address 0x04 would access the byte at address 0x02 in the chip. Remember, each byte in this chip has its own I2C Bus address. The MasterTx or MasterRx routines will automatically set or clear the least significant bit if the I2C Bus slave address.

A potential problem with this chip is reading from memory address 0x00. In the I2C Bus world, address 0x00 is the broadcast (write only) address. The iPort will not read from this address, as it is designed to obey I2C rules. Atmel does not seem to mind bending the rules.

To read from memory address 0x00, you will need to read two bytes starting at address 0xFF (this is I2C Bus slave address 0xFE). Ignore the first byte read, and the second byte read will be the memory address 0x00.

As of this writing, we do not have one of these Atmel devices, so we cannot prove the all the above is correct. However, our experience with the I2C Bus, and with our iPort leads us to believe the above is correct. You should test the out with the iPort Message Manager software included with the iPort.

If you work with this part, and find out our above interpretation of its I2C Bus interface is not correct, please let us know.

Can't find the answer to your question here? Then e-mail your question to us at

I2C is just a mouse click away TM