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.

DS90UB933-Q1: Cannot get data from DS90UB933 to DS90UB954

Part Number: DS90UB933-Q1


Tool/software:

Good day.


We have a DS90UB933 solution that is connected to DS90UB954
We use one channel that is configured.
We connect to DS90UB933 via I2C and it works.


12 bits of data with synchronization signals from the sensor come to the input of the DS90UB933 DVP.
But at the output of the CSI DS90UB954, there is no signal (we look at the signal with an oscilloscope).
The CSI data lines of the DS90UB954 are set to the LP11 state.


In the DS90UB954 registers:

        BCC_CONFIG [0x58] = 0x58

        PORT_CONFIG [0x6D] = 0x7D

                   FPD3_MODE =  01: RAW12 Mode/50 MHz (DS90UB913A/933 compatible)

If we check the Mode Select register DS90UB933 we get
Mode Select[0x05] = 0x10

    MODE_UP_TO_DATE [bit 4] = 1: Status of mode select from deserializer is up-to date.

Which indicates that the mode is selected and configured by the deserializer, but why then is bit 3 not set in the Mode Select[0x05] register
(Pin_MODE_12–bit mode in the Mode Select[0x05] register)
After all, the RAW12 Mode/50 MHz mode (DS90UB913A/933 compatible) is selected in the DS90UB954.

In DS90UB933 we use internal OSC clock to feed into PLL
Register - PLL Clock Overwrite[0x35] = 0x01

Tell me what else needs to be configured to get a signal on the CSI line DS90UB954?


There is nothing in the error registers of DS90UB954

  • Hello Ivan,

    I am looking into this and will get back to you asap

  • Thanks for the answer.


    We have done a lot of experiments, but we can't get a signal on the CSI bus
    At the same time, the forward and reverse channels for the I2C bus work fine.
    I really need some kind of hint.


    Thanks.

  • Hello Ivan,

    can you provide readings from the following UB954 registers?

    0x02-0x06, 0x1F-0x24, 0x33-0x37, 0x40-0x49, 0x4B-0x58, 0x5B-0x6D, 0x70-0x76, 0x7A-0x7D, 0xA5, 0xD2-0xDB.

    If your camera is connected to UB954 RX port0, then before reading the above registers you must write DES reg 0x4C = 0x01. If using RX port1 then 0x4C = 0x12.

  • Thank you very much for your reply.
    Below the value in the DS90UB954 register, we only use port RX 0

    General Configuration [0x02] = 0x1E
    Revision/Mask ID [0x03]        = 0x20
    DEVICE_STS [0x04]              = 0xDF
    PAR_ERR_THOLD_xx [0x05:0x06] = 0x0100

    CSI_PLL_CTL [0x1F]       = 0x00
    FWD_CTL1 [0x20]           = 0x20
    FWD_CTL2 [0x21]           = 0x01
    FWD_STS [0x22]             = 0x00
    INTERRUPT_CTL [0x23] = 0x00
    INTERRUPT_STS [0x24] = 0x00

    CSI_CTL [0x33]       = 0x21
    CSI_CTL2 [0x34]     = 0x40
    CSI_STS [0x35]       = 0x00
    CSI_TX_ICR [0x36] = 0x00
    CSI_TX_ISR [0x37] = 0x00

    RESERVED [0x40]      = 0x00
    SFILTER_CFG [0x41] = 0xA7
    AEQ_CTL1 [0x42]       = 0x71
    AEQ_ERR_THOLD [0x43] = 0x01
    RESERVED [0x44] = 0x00
    RESERVED [0x45] = 0x00
    RESERVED [0x46] = 0x00
    RESERVED [0x47] = 0x00
    RESERVED [0x48] = 0x00
    RESERVED [0x49] = 0x00

    RAW_EMBED_DTYPE [0x4B] = 0x12
    FPD3_PORT_SEL [0x4C]  = 0x01
    RX_PORT_STS1 [0x4D]    = 0x13
    RX_PORT_STS2 [0x4E]    = 0x04
    RX_FREQ_xx [0x4F:0x50] = 0x3461
    SENSOR_STS_0 [0x51] = 0x00
    SENSOR_STS_1 [0x52] = 0x00
    SENSOR_STS_2 [0x53] = 0x00
    SENSOR_STS_4 [0x54] = 0x00
    RX_PAR_ERR_xx [0x55:0x56] = 0x0000
    BIST_ERR_COUNT [0x57] = 0x00
    BCC_CONFIG [0x58] = 0x58

    SER_ID [0x5B] = 0xB0
    SER_ALIAS_ID [0x5C] = 0xB0
    TargetID[0] [0x5D] = 0x5E
    TargetID[1] [0x5E] = 0x00
    TargetID[2] [0x5F] = 0x00
    TargetID[3] [0x60] = 0x00
    TargetID[4] [0x61] = 0x00
    TargetID[5] [0x62] = 0x00
    TargetID[6] [0x63] = 0x00
    TargetID[7] [0x64] = 0x00
    TargetAlias[0] [0x65] = 0x5E
    TargetAlias[1] [0x66] = 0x00
    TargetAlias[2] [0x67] = 0x00
    TargetAlias[3] [0x68] = 0x00
    TargetAlias[4] [0x69] = 0x00
    TargetAlias[5] [0x6A] = 0x00
    TargetAlias[6] [0x6B] = 0x00
    TargetAlias[7] [0x6C] = 0x00
    PORT_CONFIG [0x6D] = 0x7D

    RAW10_ID [0x70] = 0x2B
    RAW12_ID [0x71] = 0x2C
    CSI_VC_MAP [0x72] = 0xE4
    LINE_COUNT_xx [0x73:0x74] = 0x0000
    LINE_LEN_x [0x75:0x76] = 0x0000

    CSI_RX_STS [0x7A] = 0x00
    CSI_ERR_COUNTER [0x7B] = 0x00
    PORT_CONFIG2 [0x7C] = 0x20
    PORT_PASS_CTL [0x7D] = 0x00

    REFCLK_FREQ [0xA5] = 0x19

    AEQ_CTL2 [0xD2] = 0x94
    AEQ_STATUS [0xD3] = 0x06
    ADAPTIVE EQ BYPASS [0xD4] = 0x60
    AEQ_MIN_MAX [0xD5] = 0xF2
    RESERVED [0xD6] = 0x00
    RESERVED [0xD7] = 0x00
    PORT_ICR_HI [0xD8] = 0x00
    PORT_ICR_LO [0xD9] = 0x00
    PORT_ISR_HI [0xDA] = 0x00
    PORT_ISR_LO [0xDB] = 0x00

    We use a specific sensor from which the signal to the DS90UB933 PKLC input is intermittent.
    It goes in packets synchronously with the VSYNK signal
    VSYNK is an active frequency that comes to the DS90UB933 input.
    VSYNK is not active PKLC = 0
    In other words, the image sensor turns on the pixel clock signal only when it transmits data.
    Could this be the cause of our problem?

    We use the
    7.4.2 DS90UB933/934 Operation With Pixel Clock From Imager as Reference Clock mode

    Thanks.

  • Hello Ivan,

    from the provided register values, the link between the SER and the DES is fine. But there is no video data is being sent to the DES. Please check the output from the Image sensor and keep PCLK present all the time.

  • Hello, Hamzeh Jaradat.

    Thank you for your reply.


    We would like to clarify and analyze our connection in more detail.


    We use the internal DS90UB933 generator in which the PLL is synchronized from PCLK.
    The pixel sampling clock frequency comes from our sensor to the PCLK input of the DS90UB933.


    As was written earlier, this frequency is interrupted when there is no data from the sensor.
    There is output data from the sensor (we look at it with an oscilloscope).


    Our sensor cannot output a continuous PCLK.

    So the question is what can be done to make the DS90UB933 work and transmit data to the DS90UB954.

    The documentation discusses the second option for synchronization from an external 48 MHz generator.
    But if we connect this option, we will still get an intermittent PCLK from the sensor.


    How will the DS90UB933 work in this case?
    In this case, is it possible to transfer video data to DS90UB954.

    Thanks again.

  • Hello Ivan,

    In this case you will need to use the external REFCLK to the UB933 (for example 48MHz). The SER will use this CLK to generate the FPD-Link forward channel which will be transmitting continuously, independent of input data/clk from imager is available or not.

  • Hi.

    We have modified the circuit and added an external 48 MHz oscillator.
    The pixel clock from our sensor is intermittent.
    As before, we cannot get a signal on the CSI lines of the DS90UB954 deserializer.

    The DS90UB933 registers are configured as follows.

    General Configuration [0x03] = 0xC6
    Mode Selest [0x05] = 0x3A
    General Status [0x0C] = 0x11
    PLL Clock Overwrite [0x35] = 0x02

    The following modes are selected in the PLL Clock Overwrite [0x35] register
                   1: Routes GPO3 directly to PLL
                    0: Allows PLL to lock to either PCLK or external clock from GPO3
    Am I correct in understanding that the LOCK2OSC bit = 0 allows working with intermittent PCLK?

    In our test circuit, the PCLK coming from the sensor is 72 MHz.

    Tell me, is this the correct PCLK frequency with a resolution of 12 bits and an external generator frequency of 48 MHz?

  • Hi Ivan, thank you for sharing the information. We will check this and get back to you in 2-3 days.

    Best regards,
    Ikram

  • Hi Ikram, any update for us ? It is URGENT for us. Thank you, Ivan

  • Hi,

    Am I correct in understanding that the LOCK2OSC bit = 0 allows working with intermittent PCLK?

    This one does not have to do with intermittent or not. This bit for selecting either the internal CLK or the external CLK. But it should be okay to use intermittent PCLK while using the external CLK from GPIO3.

    Tell me, is this the correct PCLK frequency with a resolution of 12 bits and an external generator frequency of 48 MHz?

    Yes, that is correct.

    Question, what is the value of the following registers on the UB954 now?

    0x02-0x06, 0x1F-0x24, 0x33-0x37, 0x40-0x49, 0x4C-0x58, 0x5B-0x6D, 0x70-0x76, 0x7A-0x7C, 0xD2-0xDB.

  • Question, what is the value of the following registers on the UB954 now?

    Hello.
    We monitor the output signal of the CSI UB954 with an oscilloscope.
    Sometimes, at startup, the output signal appears briefly.
    When reading the UB954 registers, we get the following

    General Configuration [0x02] = 0x1E
    Revision/Mask ID [0x03]        = 0x20
    DEVICE_STS [0x04]              = 0xDF
    PAR_ERR_THOLD_xx [0x05:0x06] = 0x0100
    
    CSI_PLL_CTL [0x1F]       = 0x00
    FWD_CTL1 [0x20]           = 0x20
    FWD_CTL2 [0x21]           = 0x01
    FWD_STS [0x22]             = 0x00
    INTERRUPT_CTL [0x23] = 0x00
    INTERRUPT_STS [0x24] = 0x00
    
    CSI_CTL [0x33]       = 0x21
    CSI_CTL2 [0x34]     = 0x40
    CSI_STS [0x35]       = 0x00
    CSI_TX_ICR [0x36] = 0x00
    CSI_TX_ISR [0x37] = 0x00
    
    RESERVED [0x40]      = 0x00
    SFILTER_CFG [0x41] = 0xA7
    AEQ_CTL1 [0x42]       = 0x71
    AEQ_ERR_THOLD [0x43] = 0x01
    RESERVED [0x44] = 0x00
    RESERVED [0x45] = 0x00
    RESERVED [0x46] = 0x00
    RESERVED [0x47] = 0x00
    RESERVED [0x48] = 0x00
    RESERVED [0x49] = 0x00
    
    RAW_EMBED_DTYPE [0x4B] = 0x12
    FPD3_PORT_SEL [0x4C]  = 0x01
    RX_PORT_STS1 [0x4D]    = 0x13
    RX_PORT_STS2 [0x4E]    = 0x14
    RX_FREQ_xx [0x4F:0x50] = 0x3461
    SENSOR_STS_0 [0x51] = 0x00
    SENSOR_STS_1 [0x52] = 0x00
    SENSOR_STS_2 [0x53] = 0x00
    SENSOR_STS_4 [0x54] = 0x00
    RX_PAR_ERR_xx [0x55:0x56] = 0x0000
    BIST_ERR_COUNT [0x57] = 0x00
    BCC_CONFIG [0x58] = 0x58
    
    SER_ID [0x5B] = 0xB0
    SER_ALIAS_ID [0x5C] = 0xB0
    TargetID[0] [0x5D] = 0x5E
    TargetID[1] [0x5E] = 0x00
    TargetID[2] [0x5F] = 0x00
    TargetID[3] [0x60] = 0x00
    TargetID[4] [0x61] = 0x00
    TargetID[5] [0x62] = 0x00
    TargetID[6] [0x63] = 0x00
    TargetID[7] [0x64] = 0x00
    TargetAlias[0] [0x65] = 0x5E
    TargetAlias[1] [0x66] = 0x00
    TargetAlias[2] [0x67] = 0x00
    TargetAlias[3] [0x68] = 0x00
    TargetAlias[4] [0x69] = 0x00
    TargetAlias[5] [0x6A] = 0x00
    TargetAlias[6] [0x6B] = 0x00
    TargetAlias[7] [0x6C] = 0x00
    PORT_CONFIG [0x6D] = 0x7E
    
    RAW10_ID [0x70] = 0x2B
    RAW12_ID [0x71] = 0x2C
    CSI_VC_MAP [0x72] = 0xE4
    LINE_COUNT_xx [0x73:0x74] = 0x001C
    LINE_LEN_x [0x75:0x76] = 0x029A
    
    CSI_RX_STS [0x7A] = 0x00
    CSI_ERR_COUNTER [0x7B] = 0x00
    PORT_CONFIG2 [0x7C] = 0x20
    PORT_PASS_CTL [0x7D] = 0x00
    
    REFCLK_FREQ [0xA5] = 0x19
    
    AEQ_CTL2 [0xD2] = 0x94
    AEQ_STATUS [0xD3] = 0x05
    ADAPTIVE EQ BYPASS [0xD4] = 0x60
    AEQ_MIN_MAX [0xD5] = 0xF2
    RESERVED [0xD6] = 0x00
    RESERVED [0xD7] = 0x00
    PORT_ICR_HI [0xD8] = 0x00
    PORT_ICR_LO [0xD9] = 0x00
    PORT_ISR_HI [0xDA] = 0x00
    PORT_ISR_LO [0xDB] = 0x10
    

    If the PCLK frequency is set to 37 MHz, there will be a signal at the CSI UB954 input, but this signal will randomly disappear.

    Are there any recommendations for the PLCK frequency range with a 48 MHz reference generator?

  • Hi IEvan,

    I looked at your provided register values. Now I can see you are receiving data from the camera, but very low resolution. Is this expected?

    0x33 - [5:4] = 10 which is 2-lanes. If you want 4-lanes change to 00
    0x35 = 00 which means there is no CSI data at the DES output.
    0x4E = 0x14 - Buffer error
    0x4F = 0x34 = 52MHz
    LINE_COUNT_xx [0x73:0x74] = 0x001C - 28 lines!
    LINE_LEN_x [0x75:0x76] = 0x029A - 666 x3/3 = 444 pixels/line

    If the PCLK frequency is set to 37 MHz, there will be a signal at the CSI UB954 input, but this signal will randomly disappear.

    You can't use 37MHz PCLK this is below the minimum supported by the SER. The UB933 supports min 37.5MHz by 12-bit mode and min 50MHz by 10-bit mode.

    Are there any recommendations for the PLCK frequency range with a 48 MHz reference generator?

    When using 48MHz external REFCLK then your PCLK must be 72MHz in 12-bit mode and must be 96MHz in 10-bit mode.

  • Now I can see you are receiving data from the camera, but very low resolution. Is this expected?

    Yes, our sensor has a low resolution of 512x512.

    We changed the clock scheme.
    We apply 48 MHz to the UB933 CKLIN input.
    At the UN933 CLKOUT output 24 MHz.
    CLKOUT 24 MHz is multiplied by 3 (we get 72 MHz) and applied to the sensor input.
    Our sensor cannot multiply the frequency internally.
    With this connection, the PCLK frequency of the sensor is also 72 MHz.

    We receive these synchronization signals from the sensor.

    But there is nothing at the CSI output.


    As an experiment, we want to reduce the frequency of
    CKLIN to 25 MHz, which will give us 37.5 MHz PCLK.

    What other ideas are there?
    We really need to run UB954 – UB933 where PCLK is intermittent.

    I am attaching the state of UB954 registers.

    General Configuration  [0x02] = 0x1E 
    Revision/Mask ID       [0x03] = 0x20
    DEVICE_STS             [0x04] = 0xDF
    PAR_ERR_THOLD_xx  [0x05:0x06] = 0x0100
    
    CSI_PLL_CTL            [0x1F] = 0x00
    FWD_CTL1               [0x20] = 0x20
    FWD_CTL2               [0x21] = 0x01
    FWD_STS                [0x22] = 0x00
    INTERRUPT_CTL          [0x23] = 0x00
    INTERRUPT_STS          [0x24] = 0x00
    
    CSI_CTL                [0x33] = 0x21
    CSI_CTL2               [0x34] = 0x40
    CSI_STS                [0x35] = 0x00
    CSI_TX_ICR             [0x36] = 0x00
    CSI_TX_ISR             [0x37] = 0x03
    
    RESERVED               [0x40] = 0x00
    SFILTER_CFG            [0x41] = 0xA7
    AEQ_CTL1               [0x42] = 0x71
    AEQ_ERR_THOLD          [0x43] = 0x01
    RESERVED               [0x44] = 0x00
    RESERVED               [0x45] = 0x00
    RESERVED               [0x46] = 0x00
    RESERVED               [0x47] = 0x00
    RESERVED               [0x48] = 0x00
    RESERVED               [0x49] = 0x00
    
    RAW_EMBED_DTYPE        [0x4B] = 0x12
    FPD3_PORT_SEL          [0x4C] = 0x01
    RX_PORT_STS1           [0x4D] = 0x13
    RX_PORT_STS2           [0x4E] = 0x14
    RX_FREQ_xx        [0x4F:0x50] = 0x3000
    SENSOR_STS_0           [0x51] = 0x00
    SENSOR_STS_1           [0x52] = 0x00
    SENSOR_STS_2           [0x53] = 0x00
    SENSOR_STS_4           [0x54] = 0x00
    RX_PAR_ERR_xx     [0x55:0x56] = 0x0000
    BIST_ERR_COUNT         [0x57] = 0x00
    BCC_CONFIG             [0x58] = 0x58
    
    SER_ID                 [0x5B] = 0xB0
    SER_ALIAS_ID           [0x5C] = 0xB0
    TargetID[0]            [0x5D] = 0x5E
    TargetID[1]            [0x5E] = 0x00
    TargetID[2]            [0x5F] = 0x00
    TargetID[3]            [0x60] = 0x00
    TargetID[4]            [0x61] = 0x00
    TargetID[5]            [0x62] = 0x00
    TargetID[6]            [0x63] = 0x00
    TargetID[7]            [0x64] = 0x00
    TargetAlias[0]         [0x65] = 0x5E
    TargetAlias[1]         [0x66] = 0x00
    TargetAlias[2]         [0x67] = 0x00
    TargetAlias[3]         [0x68] = 0x00
    TargetAlias[4]         [0x69] = 0x00
    TargetAlias[5]         [0x6A] = 0x00
    TargetAlias[6]         [0x6B] = 0x00
    TargetAlias[7]         [0x6C] = 0x00
    PORT_CONFIG            [0x6D] = 0x7D
    
    RAW10_ID               [0x70] = 0x2B
    RAW12_ID               [0x71] = 0x2C
    CSI_VC_MAP             [0x72] = 0xE4
    LINE_COUNT_xx     [0x73:0x74] = 0x0000
    LINE_LEN_x        [0x75:0x76] = 0x0000
    
    CSI_RX_STS             [0x7A] = 0x00
    CSI_ERR_COUNTER        [0x7B] = 0x00
    PORT_CONFIG2           [0x7C] = 0x20
    PORT_PASS_CTL          [0x7D] = 0x00
    
    REFCLK_FREQ            [0xA5] = 0x19
    
    AEQ_CTL2               [0xD2] = 0x94
    AEQ_STATUS             [0xD3] = 0x06
    ADAPTIVE EQ BYPASS     [0xD4] = 0x60
    AEQ_MIN_MAX            [0xD5] = 0xF2
    RESERVED               [0xD6] = 0x00
    RESERVED               [0xD7] = 0x00
    PORT_ICR_HI            [0xD8] = 0x00
    PORT_ICR_LO            [0xD9] = 0x00
    PORT_ISR_HI            [0xDA] = 0x00
    PORT_ISR_LO            [0xDB] = 0x03
    

  • Hi Evan,

    I am not really sure how to make it work. It looks like this mode is probably not compatible with the SER. 
    Also, in the latest provided register dump it looks like the DES is not receiving any data. 

  • Good day.

    Thank you for your reply.
    After the break, we continue our research.

    We managed to get data on the CSI line.
    We decreased the value in the register
    FV_MIN_TIME (Address 0xBC)

    The data on the CSI line can now be seen by the oscilloscope, but our system does not perceive this data.

    We do not receive an image.

    For the FV_MIN_TIME register, how to correctly determine the value that needs to be written to it?

  • Hello, 

    Due to US public holiday, support will resume on Tuesday, September 2nd. Thank you for your patience. 

    Regards, 

    Logan

  • Hello Ivan,

    For your use case, RAW12HF, you should program 195 (Hex 0xC3) to this register.