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.
Hi team,
I forward a question from one of our customers as follows, can you give some suggestions for troubleshooting
one sending box using serializer is 921, and the receivering box using deserializer is TI DS90UB940.
The sending box power up and down for about 21 times, the LCD of the receivering box show the camera totally black.
we dump the 2 IC's register as blow:
mek_8q_raite:/ # i2cdump -f -y 8 0x2c
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 58 04 00 f0 fe 1e 00 18 00 00 00 00 00 00 00 00 X?.???.?........
10: 00 00 00 00 00 00 00 00 00 01 00 00 23 40 00 00 .........?..#@..
20: 00 00 42 28 08 00 83 84 00 00 00 00 00 00 00 00 ..B(?.??........
30: 00 00 90 25 01 00 00 98 00 00 00 02 20 60 23 00 ..?%?..?...? `#.
40: 43 03 03 00 60 88 00 00 0f 00 00 08 00 00 63 00 C??.`?..?..?..c.
50: 03 10 00 01 80 00 00 00 00 7f 20 20 00 00 00 00 ??.??....? ....
60: 00 00 00 00 10 00 00 00 00 00 00 00 00 04 00 00 ....?........?..
70: 00 00 00 07 07 08 00 00 00 00 00 00 02 00 00 00 ...???......?...
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
a0: 00 00 84 00 00 00 00 00 00 00 00 00 00 00 00 00 ..?.............
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
c0: 00 00 00 00 00 00 00 00 c0 00 00 00 00 00 00 00 ........?.......
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 5f 55 42 39 34 30 00 00 00 00 00 00 00 00 00 00 _UB940..........
mek_8q_raite:/ #
root@s32v234evb:~# i2cdump -y -f 0x02 0x0c
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 18 00 00 d2 80 00 58 00 00 00 00 00 05 00 00 00 ?..??.X.....?...
10: 00 00 00 10 00 00 fe 5e a1 a5 00 00 00 00 00 00 ...?..?^??......
20: 00 00 25 00 00 00 00 00 00 24 00 20 00 00 00 00 ..%......$. ....
30: 03 10 00 00 00 00 08 34 00 0a 20 21 00 00 f0 00 ??....?4.? !..?.
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
50: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
60: 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 ....?...........
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
c0: 00 00 80 00 78 00 00 60 40 00 00 00 00 00 00 00 ..?.x..`@.......
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 5f 55 42 39 32 31 00 00 00 00 00 00 00 00 00 00 _UB921..........
root@s32v234evb:~#
It seems the de-serializer and serializer is LOCK state ,but why no camera stream output?
Best Regards,
Amy Luo
Hi Amy,
Can you share the datasheet of the LCD as well as the video timing?
Do you know if the customer is able to verify the input to the serializer? Has the customer tried using our internal pattern generator to generate video?
Best,
Shu
Hi Shu,
The customer later tested the register value is < 940_921的寄存器值2.txt >, and the register value during normal plotting < 940_921的寄存器值_ok. txt>
The difference is very small. There are some differences in the 3B register at the deserialization end (the normal value is 3F, and the abnormal value is 01 or 02). Can you see the reason from here?
mek_8q_raite:/ # i2cdump -f -y 8 0x2c No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 58 04 00 f0 fe 1e 00 18 00 00 00 00 00 00 00 00 X?.???.?........ 10: 00 00 00 00 00 00 00 00 00 01 00 00 23 40 00 00 .........?..#@.. 20: 00 00 42 28 08 00 83 84 00 00 00 00 00 00 00 00 ..B(?.??........ 30: 00 00 90 25 01 00 00 98 00 00 00 01 20 60 23 00 ..?%?..?...? `#. 40: 43 03 03 00 60 88 00 00 0f 00 00 08 00 00 63 00 C??.`?..?..?..c. 50: 03 10 00 01 80 00 00 00 00 7f 20 20 00 00 00 00 ??.??....? .... 60: 00 00 00 00 10 00 00 00 00 00 00 00 00 04 00 00 ....?........?.. 70: 00 00 00 07 07 08 00 00 00 00 00 00 02 00 00 00 ...???......?... 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ a0: 00 00 84 00 00 00 00 00 00 00 00 00 00 00 00 00 ..?............. b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 00 00 00 00 00 00 c0 00 00 00 00 00 00 00 ........?....... d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 5f 55 42 39 34 30 00 00 00 00 00 00 00 00 00 00 _UB940.......... mek_8q_raite:/ # root@s32v234evb:~# i2cdump -y -f 0x02 0x0c No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 18 00 00 d2 80 00 58 00 00 00 00 00 05 00 00 00 ?..??.X.....?... 10: 00 00 00 10 00 00 fe 5e a1 a5 00 00 00 00 00 00 ...?..?^??...... 20: 00 00 25 00 00 00 00 00 00 24 00 a0 00 00 00 00 ..%......$.?.... 30: 03 10 00 00 00 00 08 34 00 0a 20 21 00 00 f0 00 ??....?4.? !..?. 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 50: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 60: 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 ....?........... 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 80 00 78 00 00 60 40 00 00 00 00 00 00 00 ..?.x..`@....... d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 5f 55 42 39 32 31 00 00 00 00 00 00 00 00 00 00 _UB921..........
mek_8q_raite:/ # mek_8q_raite:/ # i2cdump -f -y 8 0x2c No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 58 04 00 f0 fe 1e 00 18 00 00 00 00 00 00 00 00 X?.???.?........ 10: 00 00 00 00 00 00 00 00 00 01 00 00 23 40 00 00 .........?..#@.. 20: 00 00 42 28 08 00 83 84 00 00 00 00 00 00 00 00 ..B(?.??........ 30: 00 00 90 25 01 00 00 98 00 00 00 3f 20 60 23 00 ..?%?..?...? `#. 40: 43 03 03 00 60 88 00 00 0f 00 00 08 00 00 63 00 C??.`?..?..?..c. 50: 03 10 00 01 80 00 00 00 00 7f 20 20 00 00 00 00 ??.??....? .... 60: 00 00 00 00 10 00 00 00 00 00 00 00 00 04 00 00 ....?........?.. 70: 00 00 00 07 07 08 00 00 00 00 00 00 02 00 00 00 ...???......?... 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ a0: 00 00 84 00 00 00 00 00 00 00 00 00 00 00 00 00 ..?............. b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 00 00 00 00 00 00 c0 00 00 00 00 00 00 00 ........?....... d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 5f 55 42 39 34 30 00 00 00 00 00 00 00 00 00 00 _UB940.......... mek_8q_raite:/ # root@s32v234evb:~# i2cdump -y -f 0x02 0x0c No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 18 00 00 d2 80 00 58 00 00 00 00 00 05 00 00 00 ?..??.X.....?... 10: 00 00 00 10 00 00 fe 5e a1 a5 00 00 00 00 00 00 ...?..?^??...... 20: 00 00 25 00 00 00 00 00 00 24 00 a0 00 00 00 00 ..%......$.?.... 30: 03 10 00 00 00 00 08 34 00 0a 20 21 00 00 f0 00 ??....?4.? !..?. 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 50: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 60: 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 ....?........... 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 80 00 78 00 00 60 40 00 00 00 00 00 00 00 ..?.x..`@....... d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 5f 55 42 39 32 31 00 00 00 00 00 00 00 00 00 00 _UB921..........
Thanks,
Amy
Hi Amy,
Register 3B corresponds to the Adaptive Equalizer. There could be a signal strength issue. Do you know if the customer has tested the signal quality of the FPD-Link?
Also can you clarify what the two separate register dumps are? Does the customer have other 921-940 systems that are working correctly and just one that is not outputting video?
If you have pictures of the setup to share along with any schematics that would be appreciated. We don't know if there is a hardware issue or device configuration so the first step is to make sure all the hardware is correct.
Best,
Shu
Hello Shu,
The customer feedback:
1.The hardware is ok, and the problem is occur in low probability, attached is the 940 and 921 schematics.
And 940 deserializer schematic :940.pdf
2. I check the 940 code ,and find the below test code to draw color bar, but I #define the 'CONFIG_GEN_COLOR_BAR'
and not take effect, I doubt if the code is invalid or not, I can't find the register 33,B0,B1,B2 on my 940 data sheet, can you help to confirm it ?
static int init_deserializer(struct ds90ub940_data *data)
{
int ret = 0;
LOGD_INFO("df_camera_log: %s ++", __func__);
des_write(data, 0x01, 0x02);
#ifdef CONFIG_GEN_COLOR_BAR
LOGD_INFO("df_camera_log: %s CONFIG_GEN_COLOR_BAR", __func__);
des_write(data,0x33, 0x03);
des_write(data,0xB0, 0x02); // IA_AUTO_INC=1
des_write(data,0xB1, 0x01); // PGEN_CTL
des_write(data,0xB2, 0x01); // PGEN_ENABLE=1
des_write(data,0xB2, 0xb3); // PGEN_CFG
des_write(data,0xB2, 0x1E); // PGEN_CSI_DI \u6b64\u5904\u53ef\u4fee\u6539data type YUV/RGB/RAW data
des_write(data,0xB2, 0x05); // PGEN_LINE_SIZE1
des_write(data,0xB2, 0x00); // PGEN_LINE_SIZE0 line size\uff0c\u5217\u6570
des_write(data,0xB2, 0x00); // PGEN_BAR_SIZE1
des_write(data,0xB2, 0xF0); // PGEN_BAR_SIZE0
des_write(data,0xB2, 0x02); // PGEN_ACT_LPF1
des_write(data,0xB2, 0xd0); // PGEN_ACT_LPF0 active line per frame\uff0c\u884c\u6570
des_write(data,0xB2, 0x03); // PGEN_TOT_LPF1
des_write(data,0xB2, 0x00); // PGEN_TOT_LPF0
des_write(data,0xB2, 0x0C); // PGEN_LINE_PD1
des_write(data,0xB2, 0x67); // PGEN_LINE_PD0
des_write(data,0xB2, 0x0A); // PGEN_VBP
des_write(data,0xB2, 0x0A); // PGEN_VFP
des_write(data,0xB2, 0xAA); // PGEN_COLOR0
des_write(data,0xB2, 0x33); // PGEN_COLOR1
des_write(data,0xB2, 0xF0); // PGEN_COLOR2
des_write(data,0xB2, 0x7F); // PGEN_COLOR3
des_write(data,0xB2, 0x55); // PGEN_COLOR4
des_write(data,0xB2, 0xCC); // PGEN_COLOR5
des_write(data,0xB2, 0x0F); // PGEN_COLOR6
des_write(data,0xB2, 0x80); // PGEN_COLOR7
des_write(data,0xB2, 0x00); // PGEN_COLOR8
des_write(data,0xB2, 0x00); // PGEN_COLOR9
des_write(data,0xB2, 0x00); // PGEN_COLOR10
des_write(data,0xB2, 0x00); // PGEN_COLOR11
des_write(data,0xB2, 0x00); // PGEN_COLOR12
des_write(data,0xB2, 0x00); // PGEN_COLOR13
des_write(data,0xB2, 0x00); // PGEN_COLOR14
des_write(data,0xB2, 0x00); // Reserved
#else
LOGD_INFO("df_camera_log: %s data->index = %d", __func__, data->index);
if(data->index == 0)
{
#if 0
des_write(data, 0x0C, 0x2B);
des_write(data, 0x4C, 0x01);
des_write(data, 0x58, 0x5E);
des_write(data, 0x6D, 0x7C);
des_write(data, 0x72, 0xE4);
des_write(data, 0x4C, 0x12);
des_write(data, 0x4B, 0x1E);
des_write(data, 0x7C, 0xe0);
des_write(data, 0x70, 0x5E);
des_write(data, 0x20, 0x00);
des_write(data, 0x33, 0x01);
des_write(data, 0xBC, 0x0);
#endif
}
else
{
#if 0
des_write(data, 0x0C, 0x2B);
des_write(data, 0x4C, 0x01);
des_write(data, 0x58, 0x5A);
des_write(data, 0x6D, 0x7C);
des_write(data, 0x72, 0xE4);
des_write(data, 0x4C, 0x12);
des_write(data, 0x4B, 0x1E);
des_write(data, 0x7C, 0xe0);
des_write(data, 0x70, 0x5E);
des_write(data, 0x20, 0x00);
des_write(data, 0x33, 0x01);
des_write(data, 0xBC, 0x0);
#endif
}
#endif
return ret;
}
Next I will check the Built-In Self Test (BIST) function of 940.
Hi Amy,
We do not have registers 0xB0, 0xB1 and 0xB2 on the 940 deserializer. If the customer if trying to generate a color bar test, can you have them follow the below app note?
https://www.ti.com/lit/an/snla132g/snla132g.pdf?ts=1648849443187
Best,
Shu
Hello Shu,
Can you check with the customer on how they came up with the 0xB0/B1/B2 registers?
I will check with the customer.
The customer feedback:
internal pattern generator , can you provide a list of registers filling value to enable internal pattern generator ? We are trying but not success now.
I can type:
[vm1] mek_8q:/ # i2cset -f -y 8 0x2c 0x64 0x05
to enable 940 deserializer's self pattern generator color bar successfully now ,but I also want to get color bar from 921 serializer ,can you give me some suggest ?
Here is the customer's feedback:
OK, maybe the macro 'CONFIG_GEN_COLOR_BAR' is waste code ,I just omit it.
And We tested and find ,when problem occur ,I try to display pattern ("i2cset -f -y 8 0x2c 0x64 0x05") and not pattern display at all ,and I reset the ub940 chip, then display pattern and normal camera output are all ok, so we think the ub940 maybe have some issue.
Because we dumped the register of ub940 when issue occur ,and seems it is not different from normal ok situation, so we only need to check some pin signal to debug this issue?
Hi Amy,
In order for customer to use 921 color bar/pat gen, they just need to go through the same process as described in the Pattern Generator App Note but set the pat gen registers in the 921.
One thing to note, if the customer wishes to use internal pclk, the internal oscillator for the 921 runs at 200 MHz rather than the 940's 140 MHz. The N divider value would need to be set to the proper value to get the desired clk rate.
I want to verify my understanding of the situation with you:
1. Customer is able to successfully use 940 to generate pattern to the LCD?
Is this done with just powering up the 940 side and using internal pclk (no connection to sending box)? what is the pclk?
2. Occasionally, when customer try 940 patgen, there is not a display until a reset is done on the 940?
Is the serializer being powered down and up when this is happening?
In End-to-End set up - Typically if the serializer is being powered cycled, it distrubs the timing coming into the deserializer and requires a soft reset on the 940 side to recover and regenerate the timing.
Can you also share the timing that the customer is using?
As for checking the status of the 940, the CLK and CSI data outputs would be useful to monitor. Since customer is just using 940 patgen at the moment and having issues, checking CMLout would not be helpful.
Best,
Shu
Hello Shu,
Here are the customer's feedbacks:
==>Yes, I use 'i2cset -f -y 8 0x2c 0x64 0x05' to set the 0x64 register of 940,to generate pattern ,when the problem not occur.When the problem occur, I use above command line will not generate pattern.
==>Yes, when the problem occur.
3.Typically if the serializer is being powered cycled, it distrubs the timing coming into the deserializer and requires a soft reset on the 940 side to recover and regenerate the timing.
==>If we not soft reset on the 940, does 940 knows that it need to be soft reset? Or notified from 921 to reset? We do powered cycled and PIN 21=PDB of 921 will low for 1 second the up. When the problem occur, the PIN7=PASS and PIN1=LOCK of 940 are all high, so 940 can't detect that it should be soft reseted, can you give us some suggestion? Thanks !
Our problem is ,when the problem occur, the camera stream can be shown on the LCD, but the 940 's PIN7=PASS and PIN1=LOCK of 940 are all high,the LOCK bit in the register 0x1c is '1',we don't know how to walkaround it.
Hello Amy,
When this issue happens, can you try doing a digital reset to the 940 to see if the situation is recovered and the display comes up?
Set 0x01[0] = 1 to reset the 940.
Best Regards,
Casey
Set 0x01[0] = 1 to reset the 940.
==>Yes, both soft reset 940 or 921,or hard reset 940 or 921,will recovery this problem and the LCD can show the stream from camera.
And we are checking the CMLOUTP/CMLOUTL to check the eye-diagram, and do we should set some registers to make eye-diagram output ?
Hi Amy,
To enable CMLOUT, the below registers from the 940 datasheet needs to be set.
Best,
Shu