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-Q1: DS90UB953 + DS90UB954 no display from image sensor to monitor.

Part Number: DS90UB953-Q1

Dear Sir,

I have some issue using DS90UB953 + DS90UB954 such as below organization. we can't show camera image data to monitor.

Image sensor -> DS90UB953 --(STP cable)--> DS90UB954 -> ISP+CPU -> Monitor

We tested BIST and pattern generator function for DS90UB953 and DS90UB954. but image of  pattern generator is not normal.

please check below image data, schematic, BIST register. can you advise to me any information for that.

SCHEMATIC 953, 954

WDP5437M2A_UB953_CSI2 NEW-SCH.pdfCSI2DES_UB954_V02_simple.pdf

INITIAL data

init.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
i2cset -y 0 0x30 0x4c 0x1 bb # RX0
i2cset -y 0 0x30 0x58 0x58 bb # I2C Pass through Enabled
i2cset -y 0 0x30 0x5c 0x18 bb # SER ID
i2cset -y 0 0x30 0x5d 0x6C bb # sensor ID
i2cset -y 0 0x30 0x65 0x6C bb # sensor ID
i2cset -y 0 0x30 0x33 0x1 bb # csi output
i2cset -y 0 0x30 0x20 0x00 bb # forwarding
/bin/sleep 1
echo "get 953 revision"
i2cget -y 0 0x0c 0x50 bb
echo ""
i2cset -y 0 0x0c 0x01 0x01 bb # reset 953.
i2cset -y 0 0x0c 0x03 0x02 bb #synchronous mode.
i2cset -y 0 0x0c 0x0e 0x60 bb # gpio1 reset output
i2cset -y 0 0x0c 0x0d 0x02 bb # gpio1 reset output
/bin/sh /usr/local/bin/init.sh --ov2718_mipi
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

TEST PATTERN

953 image and register data

953_patt.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# 954 set.
i2cset -y 0 0x30 0x4c 0x1 bb # RX0
i2cset -y 0 0x30 0x58 0x58 bb
i2cset -y 0 0x30 0x5c 0x18 bb # SER ID
i2cset -y 0 0x30 0x5d 0x6C bb # sensor ID
i2cset -y 0 0x30 0x65 0x6C bb # sensor ID
i2cset -y 0 0x30 0x33 0x1 bb #
i2cset -y 0 0x30 0x20 0x00 bb # forwarding
echo "get 953 revision"
i2cget -y 0 0x0c 0x50 bb
echo ""
# 953 set.
i2cset -y 0 0x0c 0x0e 0x60 bb # gpio1 reset output
i2cset -y 0 0x0c 0x0d 0x02 bb # gpio1 reset output
# enable pat gen
i2cset -y 0 0xc 0xB0 0x00 bb
i2cset -y 0 0xc 0xB1 0x01 bb
i2cset -y 0 0xc 0xB2 0x01 bb #enable pattern generator
i2cset -y 0 0xc 0xB1 0x02 bb
i2cset -y 0 0xc 0xB2 0x33 bb #fixed color pattern 8 color bars block size of 5
#i2cset -y 0 0xc 0xB2 0xb3 bb #fixed color pattern 8 color bars block size of 5
i2cset -y 0 0xc 0xB1 0x03 bb
i2cset -y 0 0xc 0xB2 0x24 bb #CSI Data Identifier (0x24 = RGB888 0x2C = RAW12 0x2B = RAW10 bb
i2cset -y 0 0xc 0xB1 0x04 bb
i2cset -y 0 0xc 0xB2 0x16 bb #line size (15:8 bb
i2cset -y 0 0xc 0xB1 0x05 bb
i2cset -y 0 0xc 0xB2 0x80 bb #line size (7:0 bb
i2cset -y 0 0xc 0xB1 0x06 bb
i2cset -y 0 0xc 0xB2 0x02 bb #bar size (15:8 bb
i2cset -y 0 0xc 0xB1 0x07 bb
i2cset -y 0 0xc 0xB2 0xd0 bb #bar size (7:0 bb
i2cset -y 0 0xc 0xB1 0x08 bb
i2cset -y 0 0xc 0xB2 0x04 bb #active lines per frame (15:8 bb
i2cset -y 0 0xc 0xB1 0x09 bb
i2cset -y 0 0xc 0xB2 0x38 bb #active lines per frame (7:0 bb
i2cset -y 0 0xc 0xB1 0x0a bb
i2cset -y 0 0xc 0xB2 0x04 bb #total lines per frame (15:8 bb
i2cset -y 0 0xc 0xB1 0x0b bb
i2cset -y 0 0xc 0xB2 0x65 bb #total lines per frame (7:0 bb
i2cset -y 0 0xc 0xB1 0x0c bb
i2cset -y 0 0xc 0xB2 0x0B bb #line period (15:8 bb
i2cset -y 0 0xc 0xB1 0x0d bb
i2cset -y 0 0xc 0xB2 0x93 bb #line period (7:0 bb
i2cset -y 0 0xc 0xB1 0x0e bb
i2cset -y 0 0xc 0xB2 0x21 bb #vertical back porch
i2cset -y 0 0xc 0xB1 0x0f bb
i2cset -y 0 0xc 0xB2 0x0a bb #vertical front porch
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

954 image and register data

954_patt.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 954 set.
i2cset -y 0 0x30 0x4c 0x1 bb # RX0
i2cset -y 0 0x30 0x58 0x58 bb
i2cset -y 0 0x30 0x5c 0x18 bb # SER ID
i2cset -y 0 0x30 0x5d 0x6C bb # sensor ID
i2cset -y 0 0x30 0x65 0x6C bb # sensor ID
i2cset -y 0 0x30 0x33 0x1 bb #
i2cset -y 0 0x30 0x20 0x00 bb # forwarding
echo "get 953 revision"
i2cget -y 0 0x0c 0x50 bb
echo ""
# 953 set.
i2cset -y 0 0x0c 0x0e 0x60 bb # gpio1 reset output
i2cset -y 0 0x0c 0x0d 0x02 bb # gpio1 reset output
#enable pat gen
i2cset -y 0 0x30 0xB0 0x00 bb
i2cset -y 0 0x30 0xB1 0x01 bb
i2cset -y 0 0x30 0xB2 0x01 bb
i2cset -y 0 0x30 0xB1 0x02 bb
i2cset -y 0 0x30 0xB2 0x33 bb
i2cset -y 0 0x30 0xB1 0x04 bb
i2cset -y 0 0x30 0xB2 0x0f bb
i2cset -y 0 0x30 0xB1 0x05 bb
i2cset -y 0 0x30 0xB2 0x00 bb
i2cset -y 0 0x30 0xB1 0x06 bb
i2cset -y 0 0x30 0xB2 0x01 bb
i2cset -y 0 0x30 0xB1 0x07 bb
i2cset -y 0 0x30 0xB2 0xe0 bb
i2cset -y 0 0x30 0xB1 0x08 bb
i2cset -y 0 0x30 0xB2 0x02 bb
i2cset -y 0 0x30 0xB1 0x09 bb
i2cset -y 0 0x30 0xB2 0xd0 bb
i2cset -y 0 0x30 0xB1 0x0a bb
i2cset -y 0 0x30 0xB2 0x04 bb
i2cset -y 0 0x30 0xB1 0x0b bb
i2cset -y 0 0x30 0xB2 0x1a bb
i2cset -y 0 0x30 0xB1 0x0c bb
i2cset -y 0 0x30 0xB2 0x0c bb
i2cset -y 0 0x30 0xB1 0x0d bb
i2cset -y 0 0x30 0xB2 0x67 bb
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

IMAGE SENSOR Spec

OV2718_Sensor_Spec.pdf

  • Hi Dexter,

    thanks for message. Can you help me understand it better?

    1.  when you attached the two color bar pictures, which are displayed in the panel? it has color bar but NOT correct, is it right?

    2. please check how the ISP received the data, is it raw or RGB888? in your pattern gen., it is RGB888, can it be accepted by your ISP?

    best regards,

    Steven

  • Dear Steven,

    I clicked resolved button by my mistake.

    please check reply form you questions.

    1.  when you attached the two color bar pictures, which are displayed in the panel? it has color bar but NOT correct, is it right?

    Which are displayed in the panel that is color bar.

    2. please check how the ISP received the data, is it raw or RGB888? in your pattern gen., it is RGB888, can it be accepted by your ISP?

    the ISP received I raw data.

    you mean pattern gen is RGB888? it is not raw data of both 953 and 954 pattern?

    the 953,954 can make raw data of pattern gen?

  • Hi, yes, you can check the pattern gen. code in your attached, the pattern data type is set as RGB888. below is one example on RAW8 pattern generation for your reference, the DI is 0x2A as indicated as RED.

    # CSI patgen: CSI_patgen_RAW8_1920x1080p30

    # CSI cont clk and CSI enable                          
    # board.WriteReg(0x32, 0x01)                           
    board.WriteReg(0x33, 0x03)               
      
    board.WriteReg(0xB0, 0x02)                # IA_AUTO_INC=1
    board.WriteReg(0xB1, 0x01)                # PGEN_CTL

    board.WriteReg(0xB2, 0x01)                # PGEN_ENABLE=1
    board.WriteReg(0xB2, 0x33)                # PGEN_CFG
    board.WriteReg(0xB2, 0x2A)                # PGEN_CSI_DI
    board.WriteReg(0xB2, 0x07)                # PGEN_LINE_SIZE1
    board.WriteReg(0xB2, 0x80)                # PGEN_LINE_SIZE0
    board.WriteReg(0xB2, 0x00)                # PGEN_BAR_SIZE1
    board.WriteReg(0xB2, 0xF0)                # PGEN_BAR_SIZE0
    board.WriteReg(0xB2, 0x04)                # PGEN_ACT_LPF1
    board.WriteReg(0xB2, 0x38)                # PGEN_ACT_LPF0
    board.WriteReg(0xB2, 0x04)                # PGEN_TOT_LPF1
    board.WriteReg(0xB2, 0x65)                # PGEN_TOT_LPF0
    board.WriteReg(0xB2, 0x0B)                # PGEN_LINE_PD1
    board.WriteReg(0xB2, 0x93)                # PGEN_LINE_PD0
    board.WriteReg(0xB2, 0x0A)                # PGEN_VBP
    board.WriteReg(0xB2, 0x0A)                # PGEN_VFP
    board.WriteReg(0xB2, 0xAA)                # PGEN_COLOR0
    board.WriteReg(0xB2, 0x33)                # PGEN_COLOR1
    board.WriteReg(0xB2, 0xF0)                # PGEN_COLOR2
    board.WriteReg(0xB2, 0x7F)                # PGEN_COLOR3
    board.WriteReg(0xB2, 0x55)                # PGEN_COLOR4
    board.WriteReg(0xB2, 0xCC)                # PGEN_COLOR5
    board.WriteReg(0xB2, 0x0F)                # PGEN_COLOR6
    board.WriteReg(0xB2, 0x80)                # PGEN_COLOR7
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR8
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR9
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR10
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR11
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR12
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR13
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR14
    board.WriteReg(0xB2, 0x00)                # Reserved

    best regards,

    Steven

  • Dear Steven.

    This example code is 953 side? or 954?

    thanks.

  • Dear Steven,

    I tested RAW10, RAW12, RGB888, but all same displayed as below.

    Can you advise me any check point.

  • Dear Steven.

    Could you let me know check point?

    Thanks.

  • HI Choi,

    My proposal now is that please try to identify it is from UB954/953 or from the following ISP chip?

    1. If you can observe any data in ISP side? any error is detected in ISP side?

    2. can you change the pattern gen. inside UB953/954, if the pattern is fixed, what is the output? this is to isolate if the issue is going with the UB954's setting, and then observe some rules in your case.

    0x02 PGEN_CFG         Pattern Generator Configuration Register
        7 PGEN_FIXED_EN RW 1'b0 Fixed Pattern Enable
    Setting this bit enables Fixed Color Patterns.
    0 : Send Color Bar Pattern
    1 : Send Fixed Color Pattern
        6 RESERVED RW 1'b0 Reserved
        5:4 NUM_CBARS RW 2'h3 Number of Color Bars
    00 : 1 Color Bar
    01 : 2 Color Bars
    10 : 4 Color Bars
    11 : 8 Color Bars
        3:0 BLOCK_SIZE RW 4'h3

    Block Size.
    For Fixed Color Patterns, this field controls the size of the fixed color field in bytes.  Allowed values are 1 to 12.

     

     

     

     

     

  • Dear Sir,

    1. no error is detected in ISP side.

    2. pattern is fixed Pgen_cfg form 0x33 to 0xb3. please attached file.

  • So, now for any pattern, the output always has color bar (wrong bars)?

    once the Patten is set in UB953 side, can you check the reg. 0x73/74/75/76 in UB954, is it correct or not?

    also, I more concerns that the ISP setting has some issues here. please note our UB953 or UB954 can output RAW / YUV / RGB data, please make sure that they are aligned between the pattern and ISP's video processing.

    Best regards,

    Steven

  • Dear Steven,

    Thank you for your reply,

    now the output always has color bar that is wrong bars...


    I will check your comment and let you know the reg 0x73/74/75/76 in UB954.

    Thanks.

  • Dear Steven,

    please refer to the below reg 0x73/74/75/76 in UB954. when set in UB953 as below reg.

    //write U953 reg.

    WriteI2C(0xB0,0x00) # Indirect Pattern Gen Registers

    WriteI2C(0xB1,0x01) # PGEN_CTL

    WriteI2C(0xB2,0x01)

    WriteI2C(0xB1,0x02) # PGEN_CFG

    WriteI2C(0xB2,0x33)

    WriteI2C(0xB1,0x03) # PGEN_CSI_DI

    WriteI2C(0xB2,0x24) # RGB888

    WriteI2C(0xB1,0x04) # PGEN_LINE_SIZE1

    WriteI2C(0xB2,0x16)

    WriteI2C(0xB1,0x05) # PGEN_LINE_SIZE0

    WriteI2C(0xB2,0x80)

    WriteI2C(0xB1,0x06) # PGEN_BAR_SIZE1

    WriteI2C(0xB2,0x02)

    WriteI2C(0xB1,0x07) # PGEN_BAR_SIZE0

    WriteI2C(0xB2,0xD0)

    WriteI2C(0xB1,0x08) # PGEN_ACT_LPF1

    WriteI2C(0xB2,0x04)

    WriteI2C(0xB1,0x09) # PGEN_ACT_LPF0

    WriteI2C(0xB2,0x38)

    WriteI2C(0xB1,0x0A) # PGEN_TOT_LPF1

    WriteI2C(0xB2,0x04)

    WriteI2C(0xB1,0x0B) # PGEN_TOT_LPF0

    WriteI2C(0xB2,0x65)

    WriteI2C(0xB1,0x0C) # PGEN_LINE_PD1

    WriteI2C(0xB2,0x0B)

    WriteI2C(0xB1,0x0D) # PGEN_LINE_PD0

    WriteI2C(0xB2,0x93)

    WriteI2C(0xB1,0x0E) # PGEN_VBP

    WriteI2C(0xB2,0x21)

    WriteI2C(0xB1,0x0F) # PGEN_VFP

    WriteI2C(0xB2,0x0A)

    //read UB954 reg

    # i2cget -y 0 0x30 0x73 bb

    0x04

    # i2cget -y 0 0x30 0x74 bb

    0x38

    # i2cget -y 0 0x30 0x75 bb

    0x16

    # i2cget -y 0 0x30 0x76 bb

    0x80

    I additionally will check ISP side.

    Thanks.

  • Hi,

    for reg. 0x73/74 = 0x0438, it means the line count is 1080 (decimal)

    for reg. 0x75/76 = 0x1680, it means the line length is 5760 bytes. If you set the line length is 1920 pixels, it means every pixel has 3bytes, so this means your setting still is RGB888. Since the following chip after UB954 is one ISP which just needs raw data, so the setting is not correct. as I talked with you, you need send out the raw data to the ISP. I had provide done RAW12 generation script for your previously.

    best regards,

    Steven

  • re-paste the raw8 data for your reference.

    # CSI patgen: CSI_patgen_RAW8_1920x1080p30

    # CSI cont clk and CSI enable                          
    # board.WriteReg(0x32, 0x01)                           
    board.WriteReg(0x33, 0x03)               
      
    board.WriteReg(0xB0, 0x02)                # IA_AUTO_INC=1
    board.WriteReg(0xB1, 0x01)                # PGEN_CTL

    board.WriteReg(0xB2, 0x01)                # PGEN_ENABLE=1
    board.WriteReg(0xB2, 0x33)                # PGEN_CFG
    board.WriteReg(0xB2, 0x2A)                # PGEN_CSI_DI
    board.WriteReg(0xB2, 0x07)                # PGEN_LINE_SIZE1
    board.WriteReg(0xB2, 0x80)                # PGEN_LINE_SIZE0
    board.WriteReg(0xB2, 0x00)                # PGEN_BAR_SIZE1
    board.WriteReg(0xB2, 0xF0)                # PGEN_BAR_SIZE0
    board.WriteReg(0xB2, 0x04)                # PGEN_ACT_LPF1
    board.WriteReg(0xB2, 0x38)                # PGEN_ACT_LPF0
    board.WriteReg(0xB2, 0x04)                # PGEN_TOT_LPF1
    board.WriteReg(0xB2, 0x65)                # PGEN_TOT_LPF0
    board.WriteReg(0xB2, 0x0B)                # PGEN_LINE_PD1
    board.WriteReg(0xB2, 0x93)                # PGEN_LINE_PD0
    board.WriteReg(0xB2, 0x0A)                # PGEN_VBP
    board.WriteReg(0xB2, 0x0A)                # PGEN_VFP
    board.WriteReg(0xB2, 0xAA)                # PGEN_COLOR0
    board.WriteReg(0xB2, 0x33)                # PGEN_COLOR1
    board.WriteReg(0xB2, 0xF0)                # PGEN_COLOR2
    board.WriteReg(0xB2, 0x7F)                # PGEN_COLOR3
    board.WriteReg(0xB2, 0x55)                # PGEN_COLOR4
    board.WriteReg(0xB2, 0xCC)                # PGEN_COLOR5
    board.WriteReg(0xB2, 0x0F)                # PGEN_COLOR6
    board.WriteReg(0xB2, 0x80)                # PGEN_COLOR7
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR8
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR9
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR10
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR11
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR12
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR13
    board.WriteReg(0xB2, 0x00)                # PGEN_COLOR14
    board.WriteReg(0xB2, 0x00)                # Reserved

  • Dear Steven,

    Thans you for your support. Happy new Year!!

    write your code in 953. but it show same image....as attached.

  • Hi, Dexter,

    For our UB953 or UB954, it can generate RAW data or RGB888/YUV422. In the referred code above, we provide the RAW8 data with 1920x1080@30fps resolution. Please make sure that if the ISP accept this data well? generally ISP need align and transfer the RAW data to RGB or YUV and then this video data can be displayed in the panel. So could you please check if the ISP setting is correct or not here?

    In our UB954, you can check if the pattern generation is correct or not from reg. 0x73/74 (line count) and 0x75/76 ( line length).

    best regards,

    Steven