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.
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
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
TEST PATTERN
953 image and register data
# 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 #i2cset -y 0 0xc 0xB1 0x10 bb #i2cset -y 0 0xc 0xB2 0x11 bb #1st byte of fixed color #i2cset -y 0 0xc 0xB1 0x11 bb #i2cset -y 0 0xc 0xB2 0x77 bb #2nd byte of fixed color #i2cset -y 0 0xc 0xB1 0x12 bb #i2cset -y 0 0xc 0xB2 0xaa bb #3rd byte of fixed color #i2cset -y 0 0xc 0xB1 0x13 bb #i2cset -y 0 0xc 0xB2 0xdd bb #3rd byte of fixed color #i2cset -y 0 0xc 0xB1 0x14 bb #i2cset -y 0 0xc 0xB2 0xff bb #3rd byte of fixed color
954 image and register data
# 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
IMAGE SENSOR Spec
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
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.
|
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
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