This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DS90UB947-Q1: Unable to see remote slave I2C touch driver across FPD link BCC with DS90UB948

Part Number: DS90UB947-Q1

Hello all, 

I am attempting to get touch functionality across the BCC. To preface, here's a diagram of the application: 

When the TOUCH I2C is connected directly to the IMX6, the touch address 0x41 shows up on the bus and works normally. 

When the IMX6 device is connected to the Serializer 947 as shown in the diagram above, I see the serializer as expected:

And adding in the passthrough enable, slave id, and slave alias, I see the deserializer 948.

i2cset -y -f 0 0x1a 0x03 0xda
i2cset -y -f 0 0x1a 0x07 0x41
i2cset -y -f 0 0x1a 0x08 0x41

i2cset -y -f 0 0x2c 0x03 0xf8

At this point when I enable the passthrough, I expect to see both the Deserializer and touch. However as you can see, I am only seeing the Deserializer. I am unsure what I am missing here and would appreciate any advice with how to see the remote slave touch at 0x41 across the FPD LINK BCC.

Thanks, 

Shivam

 

  • Hi Shivam,

    To read the remote external slave devices from the SER side, you will need to write to the Slave ID and Slave Alias registers on the SER side. So you will need to write the Touch I2C ID and alias on the 947 to read it from the serializer.

    This video might be a good reference: www.ti.com/.../5503353885001

    Best regards,
    Ikram

  • Hi Ikram,

    Thank you for the response. Unfortunately I am unable to write to the Slave ID and Slave Alias registers because on the bus, the address is not showing up. As you can see from my original post, I set the pass through along with setting the Slave ID and Slave Alias but on the bus, as seen in the last attached image, I am still not seeing the chip address 0x41 show up. Is there an additional register I must set to see remote slaves on top of enabling the pass through?

    Thanks, 

    Shivam

  • Hi Shivam,

    Could you please try probing the I2C connection between DES and Touch device? Can you currently read/write to the DES? The BCC should be enabled as well, is there any other register writes you do between these operations? 

    Regards,
    Ikram

  • Hi Shivam,

    For the Touch device, is 0x41 the 7-bit I2C address? The Slave ID and Slave alias addresses use 8-bit address. The other addresses in your chart (0x1A, 0x2C) also seem to be 7-bit.
    If so, change the slave ID and alias registers to 0x82; 0x41 << 1 = 0x82.

    Best regards,
    Ikram

  • Hi Ikram,

    I can currently read and write to the deserializer with no issue. The BCC is enabled. For the register writes, I updated it with the 8-bit slave ID and slave alias of 0x82. You are correct, the touch device 7-bit address is 0x41. 

    i2cset -y -f 0 0x1a 0x03 0xda
    i2cset -y -f 0 0x1a 0x07 0x82
    i2cset -y -f 0 0x1a 0x08 0x82

    i2cset -y -f 0 0x2c 0x03 0xf8

    i2cset -y -f 0 0x2c 0x07 0x82

    i2cset -y -f 0 0x2c 0x08 0x82

    Here are the register dumps for the Serializer and Deserializer, respectively, after writing to the registers. 

     

    Even after all these changes, I am not seeing the touch device on the bus nor able to read/write to it.  Are there any other potential settings that may need to be enabled? I have looked at all the registers in the datasheet on both the serializer and deserializer side but have not seen any applicable solutions. 

    Thanks,

    Shivam

  • Hi Shivam, you do not need to write to deserializer 0x7 and 0x8 registers. So these two lines can be removed:

    i2cset -y -f 0 0x2c 0x07 0x82
    i2cset -y -f 0 0x2c 0x08 0x82

    Could you please reset the devices and try again after removing those lines?


    Were you able to oscilloscope probe the I2C traces to the Touch device? Can it be confirmed that the I2C signaling in those paths are correct?

    - Ikram

  • I removed those 2 lines and reset. When I probed those lines, IMX6 >> SER>>DESER>>PROBE>>TOUCH, I am not seeing any throughput on the I2C.This lines up with not being able to see the touch device on the bus. Independently, I have confirmed the touch works from IMX6>>TOUCH. Also working in the reverse to ensure the deserializer is not at fault, I tested IMX6>>DESER>>SER and can access the SER registers through the FPD link. 

  • Shivam, when you tested IMX6>>DESER>>SER, could you please connect the TOUCH to the SER and set up the Slave ID and Alias and check if you can read the Touch from the IMX6? Also, are you testing these with TI EVMs?

  • Hi Ikram,

    These are being tested using custom PCBs. I am seeing the touch when going from IMX6>>DESER>>SER>>TOUCH. Attached image shows the bus after using this write to the registers, 

    i2cset -y -f 0 0x2c 0x03 0xf8
    i2cset -y -f 0 0x2c 0x07 0x82
    i2cset -y -f 0 0x2c 0x08 0x82
    i2cset -y -f 0 0x1a 0x03 0xda
    i2cset -y -f 0 0x1a 0x07 0x82
    i2cset -y -f 0 0x1a 0x08 0x82
    i2cset -y -f 0 0x1a 0x17 0x9e
    i2cset -y -f 0 0x2c 0x03 0xf8
    i2cset -y -f 0 0x2c 0x05 0x9e
    ~

    I know I did leave some unnecessary register writes from previous attempts in this last trial but I am unsure as to why it works in one direction vs the other. 


    Thank you!

    Shivam

  • Hi Shivam,

    That's interesting that it works this way. It could be an issue with the I2C bus. Could you please share part of the schematic and check the voltage rails from the Touch device to DES. Is possible, also try a different device and scope the I2C lines to check if there is any data passing through.

  • Ikram, 

    I sent you a private message regarding schematics. It does seem like all voltage rails to match up. In the mean time, I will see if I can find a different compatible device to scope the I2C lines. 
    Thanks,
    Shivam

  • Hi Shivam,

    Just wanted to check back in the this thread for future reference, was this issue resolved? We noticed that you are getting CRC errors on register 0x0C. Could you read that register and CRC error registers, in regular intervals (such as 30 sec or 1 min) and clear using CRC Error Reset. Do the errors accumulate quickly? This could be an issue with the connector and cable.

    Also, please probe the LOCK pin on the 948 to check if there are lock drops.

    Best regards,
    Ikram

  • Hi Ikram,

    This issue is still not resolved. I will double check the CRC errors here in a short bit. I have previously cleared them using CRC error reset and once cleared, the counter remains at 0. I believe that is due adjustments I needed to make on the cable harness.

    We ended up purchasing the eval boards for both serializer and deserializer and still end up with the same issues. This time though, I am not seeing the touch device on the bus in either IMX6>> SER >> DESER > > TOUCH config and IMX6 >> DESER >> SER >> TOUCH config. 

    Thanks,

    Shivam 

  • Shivam, could you please probe the I2C lines again on the EVMs with a logic analyzer. Similar to how you did it with the custom boards. With a logic analyzer we can observe the transactions better, and see what is passed through here.

    Also, with the EVMs, you could try to test lock and output display with Pattern Generation or end-to-end video to verify the link is set up.

    Best regards,
    Ikram

  • Hi Ikram,

    I found the issue with the hardware causing the TS_RST line to cycle high and low for the touch driver. Once fixed, I am able to see the touch device on the bus and was able to get touch working. Thank you and your team for all your help!