I want to rise the problem again. Now I have a NHD-7.0-800480EF-ATXL-CTP that had been working inside our testbench for several months and now it's touch suddenly stopped functioning. I want to underline that we didn't change or play with its schematics for a long period.
So, the touch does not work, but I2C device is present on the bus in lunux. And I can read it using i2cget utility or try to use i2cdump.
However, once I try to read registers I see not FT5x06 register data but a copy of register address. If I try to dump all registers in one go I usually get total i2c core hangup, no registers are read at all, timeout is caught instead.
As I understand, reading register addresses instead of data could be caused bu FT5x06 MCU not running while the I2C is already set up as a slave interface. Once it shifts in the register address it sends interupt to MCU core to update I2C transmit data register. Howerver, MCU does not precess this (internal) interrupt so the shift register remains unchanged holding a previous value been shifted. That value is exactly an address so we just get it back.
I tried to play with a WAKE signal, to put it low and then high as mentioned earlier. This does not help. Touch chip just stops answering to any I2C read request even if it returned address before WAKE pulse.
Now we need to know it this is a bug in FT6x06 or it is a problem of our schematics. This is already a second case when the display touch stops functioning after device has been assemblied, tested and configured. We are discouraged by this and also poor documentation of not only FT5x06 chip itself but also a touch controller based on it.
For example, there is no explanation between WAKE signal and RST. Why the WAKE signal is marked RST on touch cable? Why the WAKE should be zero during power up? Why the INT, SDA, SCL should be zero during power up if they all are pulled up signals? Why the chip disappear from bus by manual pulsing WAKE low? What happens there?