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: Unable to initialize the camera through the serializer

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

Currently we are working on the following setup:

AR0220 Camera <-> 953 Serializer <->  FAKRA Cable <-> 954 De-Serializer* <-> MIPI Adapter* <-> S32V234 EVB2

We tried the attached script in ALP tool to initialize the camera but were unable to do so.

The output we received in the ALP tool is also attached.

Note: GPIO3 of the serializer is connected to the reset pin of the camera.

import time
#reset and initialize sensor from DES using 953

# Set up IDs
UB954 = 0x60
UB953ID = 0x30
UB953 = 0x18
SensorID = 0x20
Sensor = 0xC4

# Set up Port0
board.WriteI2C(UB954, 0x4C, 0x01)

# Set up Back Channel Config (0x58)
board.WriteI2C(UB954,0x58,0x5E)

# Set up SER ID
#board.WriteI2C(UB954,0x5B,UB953ID)
# Set up SER Alias ID
board.WriteI2C(UB954,0x5C,UB953)
# Set up Slave/Camera ID
board.WriteI2C(UB954,0x5D,SensorID)
# Set up Slave/Camera Alias ID
board.WriteI2C(UB954,0x65,Sensor)

# Set GPIO2 and GPIO3 to outputs, where GPIO3 = SER_RESETB_IMG and GPIO2 = SER_TRIG_IMG
board.WriteI2C(UB953,0x0E,0x80)
board.WriteI2C(UB953,0x0D,0x08)
# Set GPIO2 and GPIO3 to High - bring sensor out of power down mode
#board.WriteI2C(UB953,0x0D,0x0C)
time.sleep(0.1)
# Bring GPIO3 low to place sensor in reset
#board.WriteI2C(UB953,0x0D,0x08)
#time.sleep(1)
# Bring GPIO3 high again to prepare sensor for initialization
#board.WriteI2C(UB953,0x0D,0x0C)
print "Sensor Reset"

#Initialize Sensor
#get configuration requirements from sensor manufacturer & write to sensor

# board.WriteI2C(Sensor, regAddr, value) #if two byte address are required use, board.WriteI2C(Sensor, regAddr byte 1, [regAddr byte 2, value])
print "Writting"
board.WriteI2C(Sensor,0x3008,0x071C)
print "Sleeping"
time.sleep(1)
print "Reading = ",hex(board.ReadI2C(Sensor,0x3008))

#repeat as required

# Seeing if CSI data is transmitting
print "CSI Error = ",hex(board.ReadI2C(UB953, 0x5C, 1))
print "Packet Header data = ", hex(board.ReadI2C(UB953, 0x61, 1))
print "Packer Header Word Count 0 = ", hex(board.ReadI2C(UB953, 0x62, 1))
print "Packer Header Word Count 1 = ", hex(board.ReadI2C(UB953, 0x63, 1))

  • import time
    
    #reset and initialize sensor from DES using 953
    
    # Set up IDs
    UB954 = 0x7A
    UB953ID = 0x30
    UB953 = 0x18
    sensorID = 0x60
    sensorAlias = 0xC4
    
    # Set up Port0
    board.WriteI2C(UB954, 0x4C, 0x01)
    
    # Set up Back Channel Config (0x58)
    board.WriteI2C(UB954,0x58,0x5E)
    
    # Set up SER ID
    #board.WriteI2C(UB954,0x5B,UB953ID)
    # Set up SER Alias ID
    board.WriteI2C(UB954,0x5C,UB953)
    # Set up Slave/Camera ID
    board.WriteI2C(UB954,0x5D,sensorID)
    # Set up Slave/Camera Alias ID
    board.WriteI2C(UB954,0x65,sensorAlias)
    
    # Set GPIO2 and GPIO3 to outputs, where GPIO2 = RESET and GPIO3 = PWDN
    board.WriteI2C(UB953,0x0E,0xC0)
    # Set GPIO2 and GPIO3 to High - bring sensor out of power down mode
    board.WriteI2C(UB953,0x0D,0x0C)
    time.sleep(0.1)
    # Bring GPIO3 low to place sensor in reset
    board.WriteI2C(UB953,0x0D,0x08)
    time.sleep(1)
    # Bring GPIO3 high again to prepare sensor for initialization
    board.WriteI2C(UB953,0x0D,0x0C)
    print "Sensor Reset"
    
    #Initialize sensor
    board.WriteI2C(sensorAlias,_____,______)
    time.sleep(0.1)
    Hi Aditya,

    I think one issue is that you need to initialize the sensor Alias. I have a script to initialize a different camera and that's one of the key differences I see between our code. I will attach the relevant part for you so you can take a look. I initialize the sensor Alias after line 24 in your code and in line 44 I talk to the sensor alias instead of the sensor directly. Please let me know if this helps.

  • We tried modifying the code as per your suggestion but the output is same as attached above. Can you suggest the following:
    1) Is there any other issue which can cause this problem?
    2) Is it possible to read the remote sensor register values through the deserializer?
    3) Is there any serializer register which shows the status of remote sensor register?

  • Hi Aditya, 

    1. I have run this script before myself and have not had issues. Could it be that one of the cameras has issues or is the length of the coax cable very long? Can you establish that you have link status? 
    To read the value of the sensor, you need to do it from the scripting tab and you will need to know the address of that device. We do not have registers on the serializer or deserializer to check the status.