On my board I have among others the above components (FRAM is a 85RC256V module with 32KB).
The memory has an I2C address from 0x50 to 0x57, while the DS has 0x68 for the RTC and again from 0x50 to 0x57 for the onboard RAM.
When I run a R/W test for the FRAM without the RTC installed everything is fine, but when I insert the RTC too I get wrong results from the FRAM, as if something is interfering.
The odd happens running the I2Cscanner; it returns this:
Scanning...
I2C device found at address 0x03 //AS3935 module
I2C device found at address 0x50 //FRAM module AND RTC RAM module
I2C device found at address 0x51 //RTC RAM module
I2C device found at address 0x52 //RTC RAM module
I2C device found at address 0x53 //RTC RAM module
I2C device found at address 0x54 //RTC RAM module
I2C device found at address 0x55 //RTC RAM module
I2C device found at address 0x56 //RTC RAM module
I2C device found at address 0x57 //RTC RAM module
I2C device found at address 0x68 //RTC
I2C device found at address 0x76 //BME280 module
I2C device found at address 0x7C // unknown address ??
done
Even changing the DS ram address, just to test, from the default 0x57 to 0x56 does not change and this is clear since the 0x57 or 0x56 address should never be used.
So seems that the problem comes from the 0x50 RTC address that is the same of the FRAM.
This last can be changed too, but the overlap will still be present anyway.
I wonder why the I2Cscanner 'sees' all the RTC addresses and how to hide then if possible.
Note: I tried 3 different RTC modules just to be sure none was defective.
It is very weird and I can not find any explanation.
This happens even if I only mount the RTC leaving apart all the other modules: the scanners sees all the addresses.
Since I'm usin a Lolin Wemos Mini D1, which does not have any resistors on the I2C pins (according to the schematic) I added two 7.5K resistors; I think they should be enough for a 3.3V VCC, right?
If A0,A1,A2 are actually pulled-up then the default address would be 0x57
If for some reason they are floating, then it will respond to any/all address between 0x50 and 0x57.
I suspect there may be missing/wrong pull-ups, bad traces bad solder joints on the PCB
Which Arduino board do you use ? I wonder how all the 5V and 3.3V I2C devices are connected to the I2C bus.
Can you give links to everything that is connected to the I2C bus ?
Do you use a rechargeable battery or a normal battery for the RTC ?
Using a normal battery and removing the charging circuit as alto777 wrote is the best. Or you can buy good things instead of crappy things. Good DS3231: https://www.adafruit.com/product/3028
Do you have small cutting pliers ? Just cut the EEPROM from the board.
The only thing I know for certain is that if it is responding to all address between 0x50 and 0x57, then either A0,A1,A2 are all floating or it's not an AT24C32 EEPROM
True but the datasheet also states:
The A2, A1 and A0 pins are device address
inputs that are hard wired or left not connected for hardware compatibility with
AT24C16.
Then read the AT24C16 datasheet
Well, this is going to be a Sherlock Holmes case...
I soldered all the pads to ground, so I should get ONLY a 0x50 address, according to a note I found on WEB:
By default, all three address inputs are pulled HIGH using onboard pullups,
In any case, I should read 0x50 or 0x57.
I tried three different values for the I2C pull-up: 4.7K, 7.5K and 10K. Pls consider that using just the RTC section (no memory), the module works ok even without any resistor.
For @ jim-p: the onboard eeprom chip is a 24C02 (see the image if I can include here).
For @ alto777: the recharging diode was already cut off.
If I do not find a real solution, my only alternative is to do what @ Koepel suggest: cut off the eeprom (which I do not use anyway), but this is the last chanche.