I am designing a HDMI to LVDS Bridge, and am using the TFP401APZP and DS90C387VJDX/NOPB to achieve this.
I am using my computer as a HDMI source and need to exchange the EDID of the TFT i am using. I have been able to retrieve the EDID from the TFT sucessfully.
I am now attempting to use an external EEPROM - M24C02-WMN6TP to store the EDID and transmit it to the computer upon Hot-Plug-Detect going high.
This is where I receive a behaviour i do not understand from my EEPROM. When the HDMI cable is connected it requests the last address (0x7F) of EDID and only the last address. If the last address changes then it will request the new highest address. I do not understand why only the last address is requested. This request and exchange of the last byte occurs 5 times seperated by about 100ms.
When i monitor the EDID exchange on a working screen it looks very differently. The source requests the first address (0x00) about 2 times, and then on the third time the entire 128-Byte data block is transferred and the display begins to display.
To be clear, i am only trying to get the PC to detect that a screen is present. I do not have TFP401APZP or DS90C387VJDX/NOPB currently soldered onto my PCB - The EDID should however be read regardless and it should be displayed on my PC as another monitor correct?
Q1) Is there something different about using my external EEprom and the EEprom thats within the working screen?
Q2) I have an STM32 MC to program the EDID onlo to the EEprom, effectively having a 2-master I2C network, could this cause any issues?
Q3) What am i doing wrong using the external EEprom which results in the HDMI source not even reading the data properly?
Thank you for any insight into my problem, I look forward to hearing from you.
Image Below is the trace from a working scree, showing that data begins from 0x00 and the entire 128-Byte block is transmitted after 2 failed attempts.
Image below is the trace from my design. as you can see, there are very large time lapses between seperate attempts (next attempt is identical but 100ms to the right), and also that the source requests the last byte only? why is the 128-Byte data not transmitted properly?
I have also attached the circuit below: