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.

DS90UB954-Q1EVM: Getting Random values while reading the sensor data through Deserializer.

Part Number: DS90UB954-Q1EVM
Other Parts Discussed in Thread: DS90UB953-Q1EVM, ALP, DS90UB953-Q1

I am currently encountering a challenge related to reading the register value of Sensor from Deserializer (DS90UB954) through I2C [Sensor->Ser->Deser->Host]. When reading Sensor register value through Serializer (DS90UB953-Q1EVM) using I2C, I can successfully obtain the register value. However, when attempting to retrieve the register value from Deserializer(DS90UB954), I can only achieve this through a loop [out of 50 we could only able to get one time and the remaining are all random numbers].

  • Hello, 

    When using the DS90UB954EVM to access the registers on the DS90UB953 I2C pass through should be enabled in register 0x58. If I2C pass through all is enabled, all I2C transactions will pass through the FPD-Link. If I2C passthrough is enabled, only I2C transactions matching the target alias and target IDs will pass through. 

    Additionally, when completing the test described, is ALP being used? If ALP is being used, only the UB954 EVM should be active on ALP. If attempting to read the sensor or UB953 registers from the 954 while the 953 I2C port is also being used, the I2C bus would be in conflict. 

    Please let me know if the issue continues with these suggestions in mind or if any clarification is needed. 

    Best,

    Zoe

  • Hi Zoe,
       Thank you for getting back to me. 

    1. The I2C pass-through is in the enabled state (0x58>>0xDA).

    2. We were able to observe the data going to the sensor by probing it using an oscilloscope (the sensor is enabled with only I2C). However, at the Deserializer (DS90UB954EVM) end, we couldn't see any reflection, as we were unable to read the expected values from the sensor's register (we are getting some garbage values and zeros). In contrast, we were able to read the expected register values of Serializer (DS90UB953) through Deserializer (DS90UB954EVM).

    3. Yes, the test is being conducted through ALP, and only the Deserializer (DS90UB954EVM) is active on ALP.


      

  • Hello, 

    Is the sensor being configured as a target alias (0x65-0x6C) and ID (0x5D-0x64)? ALP configures this automatically for the connected serializer. We recommend only enabling I2C passthrough all (0x58[7]) or I2C passthrough (0x58[6]). 

    Does only selecting I2C pass through all (0x58[7]) resolve the issue? 

    Best,

    Zoe

  • Hi Zoe,
         1, yes, the sensor is configured as target alias(0x65>>Sensor_Alias) and target ID (0x5D>>SensorID).
          2, Even when selecting only the I2C pass-through, we still couldn't read from it (0x58>>0x9E). We also attempted writing to it as (0x58>>0x8E).
          3,Below are the configurations we've implemented. Could you please advise on what specific modifications or additions we need to make in order to read the       data from the Sensor connected in the Serializer (DS90UB953-Q1) from Deserializer(DS90UB954). 

     board.WriteI2C(Deserid,0x01,0x01)#reset the device

     

    board.WriteI2C(Deserid,0x02,0x3E) #set the General Configuration

     

    board.WriteI2C(Deserid,0x4C,0x01) #Port Setup

     

    board.WriteI2C(Deserid,0x07,0xFE) #bcc Watch dog

     

    board.WriteI2C(Deserid,0x08,0x1C) #I2C Device Setup1

     

    board.WriteI2C(Deserid,0x09,0x10) #I2C Device Setup2

     

    board.WriteI2C(Deserid,0x0C,0x81) #RX_Port_Ctl

     

    board.WriteI2C(Deserid,0x4A,0x10) #FPD3_CAP

     

    board.WriteI2C(Deserid,0x20,0x10) #RX_Port_Ctl

     

    board.WriteI2C(Deserid,0x5B,Serid) #Write the serializer ID

     

    board.WriteI2C(Deserid,0x5C,SeridAlias) #Write the Serializer Alias ID

     

    board.WriteI2C(Deserid,0x5D,Sensor) #Set up Slave/Camera  ID

     

    board.WriteI2C(Deserid,0x65,SensorAlias) #Set up Slave/Camera Alias ID

     

    board.WriteI2C(Deserid,0x58,0x9E) #RX_Port_Ctl 

     

    board.WriteI2C(Deserid,0x59,0x05) #RX_Port_Ctl


       

  • Hello, 

    Thanks for sharing the configuration script! I do not see any issues pertaining to the I2C configuration. Previously in the E2E, it was stated that an oscilloscope was used to observe the transaction. Would you be able to share the scope shots for this? Ideally, the I2C captures are best taken with a Logic Analyzer or Saleae. Additionally, is the 953 a custom design? If so, would you be able to share the schematic for this? 

    Best,

    Zoe