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.

DS90UB953-Q1EVM: Checksum errors at the serializer end

Part Number: DS90UB953-Q1EVM

Hello Everyone,

I have previously implemented 2 sensors using two DS90UB953-Q1EVM with a DS90UB954 deserializer board. Everything works as expected. 

Now, I have implemented a bridge ic to combine two sensor data into four (they share the same clock frequency of 24Mhz) and send 4 MIPI data lanes to the serializer. I have changed only the data lanes setting in both the serializer and deserializer. As both sensors have the same address, I have nothing to change as they receive the same i2c commands and the bridge does the 2+2 into 4lanes thing. Now if I check the error status registers, I am getting checksum errors in all data packs. if I change the clock frequency for the sensors the data lane errors also show up, but that's obvious. 

What could be the cause of the checksum errors? Any suggestion would be really appreciable.

Thanks,

Mizan

  • Hello Mizan,

    Any CSI error including the Checksum error indicates that the issue is with the CSI-2 source or the connection between the CSI-2 source to the serializer. 

  • Hello Hamzeh,

    I can understand your point. The thing is I am getting the signal at the all data lanes of serializer when I initializer the sensors, could it be possible to ignore the checksum in the serializer (like in the deserializer) and send it to the deserializer as it is?

  • Mizan,

    The SER does not do anything to the signal, even if the signal completely corrupted, it will be forwarded futher to the DES.

    The SER just reports that there are errors.

  • But i can see the data come at data lanes of the serializer with an oscilloscope, but no data output at deserializer (checked with an oscilloscope). I have select 4 lanes. It was working fine with 2 lanes. Do I have to change something rather than the data lanes settings?

  • Can you provide a dump from the following registers:

    UB953 : 953: 0x02, 0x03, 0x51, 0x52, 0x54-0x56, 0x5C-0x60, 0x64, 0x77, 0x79


    UB954 : 0x04, 0x05, 0x06, 0x36, 0x37, 0x41, 0x4D, 0x4E, 0x55, 0x56, 0x57, 0x6D, 0x72-0x76, 0x7A, 0x7B, 0xD2-0xDB.

  • Here is data I found from the serializer and deserializer:

    UB953:
    0x02:  0x73
    0x51:  0xc0
    0x52:  0x45
    0x54:  0x0
    0x55:  0x0
    0x56:  0x0
    0x5C:  0xff
    0x5D:  0x4
    0x5E:  0x0
    0x5F:  0x0
    0x60:  0x0
    0x64:  0xa4
    0x77:  0x0
    0x79:  0x0
       
    UB954:
    0x04:  0x0
    0x05:  0x0
    0x06:  0x1
    0x36:  0x0
    0x37:  0x0
    0x41:  0xc8
    0x4D:  0x0
    0x55:  0x0
    0x56:  0x0
    0x57:  0x0
    0x6D:  0xbc
    0x64:  0x0
    0x72:  0xe4
    0x73:  0x0
    0x74:  0x0
    0x75:  0x0
    0x76:  0x0
    0x7A:  0x0
    0x7B:  0x0
    0xD2:  0x94
    0xD3:  0x2
    0xD4:  0x60
    0xD5:  0xf2
    0xD6:  0x0
    0xD7:  0x1
    0xD8:  0x0
    0xD9:  0x0
    0xDA: 0x0 0xDB: 0x0
  • Hello Mizan,

    the 954 register values can't be correct! For example in register 0x04 you have 0x00. This can't be, because default is 0xC3 !!! Can you re-check?

  • sorry it was typo in my code, I placed ub953 instead of ub954. the value is d4 for 0x04. The others are same except 0xd3, the value of 0xd3 is 0x0e

  • Can you please again list the correct values under each device, similar to above? Thanks.

  • UB953:
    0x02:  0x73
    0x51:  0xc0
    0x52:  0x65
    0x54:  0x0
    0x55:  0x0
    0x56:  0x0
    0x5C:  0xff
    0x5D:  0x4
    0x5E:  0x0
    0x5F:  0x0
    0x60:  0x0
    0x64:  0x24
    0x77:  0x0
    0x79:  0x49
       
    UB954:
    0x04:  0xd3
    0x05:  0x0
    0x06:  0x1
    0x36:  0x0
    0x37:  0x0
    0x41:  0xc8
    0x4D:  0x0
    0x55:  0x0
    0x56:  0x0
    0x57:  0x0
    0x6D:  0xbc
    0x64:  0x0
    0x72:  0xe4
    0x73:  0x0
    0x74:  0x0
    0x75:  0x0
    0x76:  0x0
    0x7A:  0x0
    0x7B:  0x0
    0xD2:  0x94
    0xD3:  0x3
    0xD4:  0x60
    0xD5:  0xf2
    0xD6:  0x0
    0xD7:  0x3
    0xD8:  0x0
    0xD9:  0x0
    0xDA:  0x0
    0xDB:  0x0

    Want to mention, i can see when i initialize the sensor, i get either get one or two full horizontal line of data. Then it stops.
    Again same happens when i restart the sensor.
  • Could it be a problem with the coax cable? it is 5meter long and I have soldered it at the serializer end. 

  • No, Coax cable is not the problem.

    From revieweing the registers below, it looks like you are sumping the wrong 954 port. In the DES it is showing No Pass and No LOCK, but in the SER there is LOCK!

    Please make sure which RX port are you using and dump this!

    Also as you can see below, all received CSI data by the SER are having CSI errors (Checksum and ECC). Please check the combiner device!

    UB953:
    0x02: 0x73
    0x03: Missing! you did not provide value!
    0x51: 0xc0
    0x52: 0x65 - Indicating RX LOCK + CRC Errors
    0x54: 0x0
    0x55: 0x0
    0x56: 0x0
    0x5C: 0xff - CSI Error counter is at maximum, which indicates wrong CSI-Data is being received!
    0x5D: 0x4 - CSI Checksum errors
    0x5E: 0x0
    0x5F: 0x0
    0x60: 0x0
    0x64: 0x24 - CSI ECC errors
    0x77: 0x0
    0x79: 0x49

    UB954:
    0x04: 0xd3 - No LOCK, No PASS
    0x05: 0x0
    0x06: 0x1
    0x36: 0x0
    0x37: 0x0
    0x41: 0xc8 - change to 0xA9
    0x4D: 0x0
    0x4E: Missing! you did not provide value!
    0x55: 0x0
    0x56: 0x0
    0x57: 0x0 - Not needed!
    0x58: Missing! you did not provide value!
    0x6D: 0xbc - why changed bits 7,6 from default? should be 01 not 10.
    0x64: 0x0 - Not needed!
    0x72: 0xe4
    0x73: 0x0
    0x74: 0x0
    0x75: 0x0
    0x76: 0x0
    0x7A: 0x0
    0x7B: 0x0
    0xD2: 0x94
    0xD3: 0x3
    0xD4: 0x60
    0xD5: 0xf2
    0xD6: 0x0
    0xD7: 0x3
    0xD8: 0x0
    0xD9: 0x0
    0xDA: 0x0
    0xDB: 0x0

  • WriteI2C(0x30, 0x4C, 0x03)  -> My both ports are enabled, isn't it?

    the i2c connection was always dropping middle of taking the values in the serializer, not in the deserializer part. I am accessing the serializer through the deserializer via coax, not locally.

    The values I get at once without interruption in i2c communication as follows, I have changed. reg 0x41 from default to A9 and reg 0x6d to 7. Still there is no lock and pass, but I can see the output at the deserializer part.

    UB953: before changing UB953:

    after changing

    0x02:  0x73 0x02:  0x73
    0x03:  0x58 0x03:  0x58
    0x51:  0xc0 0x51:  0xc0
    0x52:  0x65 0x52:  0x45
    0x54:  0x0 0x54:  0x0
    0x55:  0x0 0x55:  0x0
    0x56:  0x0 0x56:  0x0
    0x5C:  0xff 0x5C:  0xff
    0x5D:  0x4 0x5D:  0x4
    0x5E:  0x0 0x5E:  0x0
    0x5F:  0x0 0x5F:  0x0
    0x60:  0x0 0x60:  0x0
    0x64:  0x24 0x64:  0x24
    0x77:  0x0 0x77:  0x0
    0x79:  0x1 0x79:  0x0
           
    UB954: UB954:
    0x04:  0xd3 0x04:  0xd3
    0x05:  0x0 0x05:  0x0
    0x06:  0x1 0x06:  0x1
    0x36:  0x0 0x36:  0x0
    0x37:  0x3 0x37:  0x0
    0x41:  0xc8 0x41:  0xa9
    0x4D:  0x0 0x4D:  0x0
    0x4E:  0x2 0x4E:  0x2
    0x55:  0x0 0x55:  0x0
    0x56:  0x0 0x56:  0x0
    0x58:  0x0 0x58:  0x0
    0x6D:  0xbc 0x6D:  0x7c
    0x72:  0xe4 0x72:  0xe4
    0x73:  0x0 0x73:  0x0
    0x74:  0x0 0x74:  0x0
    0x75:  0x0 0x75:  0x0
    0x76:  0x0 0x76:  0x0
    0x7A:  0x0 0x7A:  0x0
    0x7B:  0x0 0x7B:  0x0
    0xD2:  0x94 0xD2:  0x94
    0xD3:  0x37 0xD3:  0x2
    0xD4:  0x60 0xD4:  0x60
    0xD5:  0xf2 0xD5:  0xf2
    0xD6:  0x0 0xD6:  0x0
    0xD7:  0x5 0xD7:  0x2
    0xD8:  0x0 0xD8:  0x0
    0xD9:  0x0 0xD9:  0x0
    0xDA:  0x0 0xDA:  0x0
    0xDB:  0x0 0xDB:  0x0
  • Hello Mizan,

    You can enable both RX ports at the same time but only for writing, not for reading.

    For reading you need to access each RX port seperately. For dumping RX port0, you need to write in reg 0x4C = 0x01, and for dumping RX port1, you need to write in reg 0x4C = 0x12.

    You can't have communication between SER and DES, or signal coming into the DES, if LOCK is low. Please re-check your provided register dumps!

  • Apologies for replying late. I have checked and am not getting lock for both ports, but still, I am getting the data!! (even though that's what I needed). Varying SFilter value to default solved the problem before. Thanks