Skip to main content
JFox.1
Associate III
October 22, 2026
Question

M24M04E-F slave address

Are the 4 MSbits of the M24M04E-F slave address completely fixed at 1010? So incompatible with another I2C peripheral on the same bus sharing the same 4 MSbits slave address, yes? Is there a clever way around this? (I know it can be changed on the M24M02E-F.)

17 replies

Associate
October 22, 2026

Yes, the 4 MSBs of the M24M04E-F I²C slave address are permanently fixed at 1010 and therefore you cannot use the same address for another IC on the same bus. You can get around this in hardware using an I²C Multiplexer quite easily!

 

Kind regards,

Oz

JFox.1
JFox.1Author
Associate III
October 22, 2026

Thank you, Oz. When you say I2C multiplexer, are you talking about using another chip for this function?

Andrew Neil
Super User
October 22, 2026
A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.
Andrew Neil
Super User
October 22, 2026

As ​@ozammo said, the obvious solution would be an I2C multiplexer.

Other options include:

  • If you have pins & board space available, use a separate bus
  • Some STM32 I2C controllers can be routed to different pins,  so you could reconfigure pins depending on which slave(s) you need to address - effectively making an internal bus multiplexer ...
A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.
JFox.1
JFox.1Author
Associate III
October 22, 2026

Thank you for your help. None of those options are a practical possibility given highly constrained space limitation so we cannot use it. It’s a shame, especially as the 8-pin packages have three unused pins that would have been ripe for address configuration.

Associate
October 22, 2026

So we get the full picture, could you explain how many I2C devices you are trying to communicate too, if they are all M24M04E-Fs and if you can give any guidance on how much space you have to play with as this multiplexer (TCA9543APWR) would be suitable for your applications and is only 5mm x 4.4mm.

 

JFox.1
JFox.1Author
Associate III
October 22, 2026

Our overall board size for our device is about 10mmx5mm double sided, already heavily populated. Thanks again for your help.

Associate
October 22, 2026

A multiplexer will be the most suitable route if you have the board space for it,  otherwise if you have the pins to use a seperate bus as ​@Andrew Neil pointed out then that would be a route forward too.

 

The main thing to consider when picking a multiplexer, make sure your multiplexer has a clock frequency capable of your desired mode:

  • M24M04E Modes
    • 1MHz (Fast-mode Plus)
    • 400kHz (Fast-mode)
    • 100kHz (Standard-mode)

Make sure that all ICs attached to the multiplexer would run at a suitable frequency for your desired application and for its own requirements.

 

JFox.1
JFox.1Author
Associate III
October 22, 2026

As an aside, how has/does ST come to the decision to set the 4 MSbits as 1010?

Associate
October 22, 2026

The decision to set the MSB to 1010 is not actually a choice. It is a compliance legacy requirement dictated by the official I²C Bus Specification.

Had the same question about a different product a few years ago and came across that conclusion.

JFox.1
JFox.1Author
Associate III
October 22, 2026

Thanks for the document link but I couldn’t see in that document where it specifies much about slave addressing, only device ID for manufacturers which is, of course, not the same thing. I believe some addresses are reserved but there is still plenty of choice.

I just find it odd that the 4Mbit I2C EEPROM silicon (which therefore comprehensively occupies all 4 LSbits of the slave address with A18, A17 and A16 of the memory address) was not designed with a way to change at least one of the 4 bits of the device address for when a designer (me in this case) wants to use a component from a different manufacturer with the same (non-configurable) 4 MSbit slave address on the same bus, or even a designer who wants to use more than one M24M04E-F on the same bus. Plenty of EEPROMs have been designed previously with address configurable pins, and this model has 3 unused pins on its 8-pin packages. I don’t understand why it wouldn’t have been implemented on the silicon.

The M24M02E-F was designed with a crafty way to change the bit that is now occupied by A18, and we were able to implement that. As the memory size gets bigger, it becomes more important to allow user configurable slave addressing, not less, yet I think this is the biggest I2C serial EEPROM memory in this particular power bracket, available in beautifully small sizes, and low power, and yet the first ST device of this type where there is now no option to change the slave address! I find it bizarre.