I'm trying to read the content of a P24C08C EEPROM (I2C) to get the firmware stored inside it.
I tried many things, none of them worked:
Using a CH341A programmer, but the hardware is malfunctionning even when I tried fixing the capacitance problem it has.
Using example codes from the I2C_EEPROM library. It connects and read the chip. But it struggles to even understand the size of the chip (sometimes it tells that it is a 2ko EEPROM, which it is not.). And tells me the chip is always empty (full 0 or FF, depending on whatever is happening in the code for some reason)
Using example codes from the library JC_EEPROM. It can't even detect the chip, and I can't seem to be able to do anything about it.
It reads the chip but always tell me "Value @ Addr X is: 3", which seems to be absurd. The EEPROM was used in an industrial SFP, it should have been programmed correctly I suppose. And the memory has no read protection, so I don't think it has to do with that.
Does someone has any idea on how to retrieve the hex table from that EEPROM? (It must not be erased beforehand of course).
PS : I have scanned addresses before communicating with the chip. It founds 8 address starting from 0x50, seems normal considering that we can hard configure the chip address between 8 different configs.
I have no experience with the P24C08C so it is not tested the library.
I might be compatible, or not.
Do you have a link to the data sheet of the P24C08C?
Back to your problem:
Use this constructor to set the size. Do not use determineSize () or determineSizeNoWrite().
Thanks for trying to help.
Unfortunately, I already had the datasheet in hand, and it was no use. Or at least, I can't understand it properly.
For example, the memory address seems to be off, on the datasheet it says that I can address it via 0b1011xxxx
But the I2C scanner recognises address 0x50 and so forth (0101xxxx). Something may be wrong.
If I don't succeed rapidly, I might as well find an entirely different approach to my project that does not recquire EEPROM readings.
How to you expect to pass a word (e.g. uint16_t) when you declare your parameter as an 8 bit value?
And after you fix that, the P24C08C has a 10 bit address (A9...A0) and according to the datasheet, you have to put A9 and A8 into the lower bits of the chip Address byte. Remember that the Wire library shifts the address byte 1 bit internally and then adds the R/W bit. so your code should look something like this
Okay, one of my misunderstanding came from the fact that I did not know the Wire library shifted one byte, wich made the address seems a bit odd to me.
Thank you for your help, I think that is enough hints for me to achieve my target goal.