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.

TDA4VE-Q1: Deserialzier to RTOS CSI0 ,MIPI-RX cannot receive the camera data

Part Number: TDA4VE-Q1


Tool/software:

Hi Expert,

  Now we have a problem where the deserializer MIPI-tx has data to send, but MIPI-RX does not receive data。

 1. IssSensor_CreateParams config

2. Measurement of the MIPI-TX clock waveform

3. Measurement of the MIPI-TX lane waveform

4. read regster 0x04504020  =0x63

我提供以上测试信息,麻烦给一下解决问题的建议

  • I provide the above test information, please give me some suggestions to solve the problem

  • Hi,

    The corresponding expert will get back to you.

    Regards

  • Hi Brijesh,

    Update the latest test:

    1. Below is the register difference compared with normal scenario.

    The read value of DPHY_RX_MMR_SLV register is always changing.

    Could you please help check that Rx didn't receive packet or it received the wrong packet?

    2. 

    The signal and timing is same with the normal Serdes;

    3. 

    We config MIPI TX 4lane, 2.2Gbps/lane, how should we select  CSIRX_LANE_BAND_SPEED?

    4. 

    Is there any register in MIPI RX that can be used to record packet counter? If yes, can we use this register to check if DPHY link is OK?

  • Hi Xingyu,

    Can you please make sure that

    - the number of lanes are correctly configure and are matching with the output from deserializer?

    - the lane polarity is correct and matching with the deserializer?

    - Data type and virtual channel id;s are matching with the deserializer?

    - sensor and deserializer output is started only in the streamon callback and not before this callback? 

    Regards,

    Brijesh

  • Hi Brijech,

    - the number of lanes are correctly configure and are matching with the output from deserializer?

       Yes, the lane number and data rate could match, x4 lane, data rate=2.2Gbps, how to select the setting of CSIRX_LANE_BAND_SPEED? 

    - the lane polarity is correct and matching with the deserializer?

       Yes, the polarity also match.

    - Data type and virtual channel id;s are matching with the deserializer?

       Yes, the VC=0, data type=0x1E.

    - sensor and deserializer output is started only in the streamon callback and not before this callback?

       Yes, deserializer output is later than streamon callback.

  • Hi Ming,

    What's the lane speed that you are using? Is it also matching with the deserialzier output? 

    Regards,

    Brijesh

  • Hi Brijesh,

    The deserializer output =2.2Gbps/lane, TDA4VE-Q1 setting = CSIRX_LANE_BAND_SPEED_1350_TO_1500_MBPS.

    I am not sure the band speed selection is correct or not.

    Thanks

  • Hi Ming,

    Can you try 2000_TO_2250_MBPS or 2250_TO_2500_MBPS lane speed in the CSIRX settings? Also can you please confirm that deskew calibration is enabled in the deserializer ?

    Regards,

    Brijesh

  • We do not enable the deskew calibration, due to captured the waveform of deserializer Maxim96722 + TI soc, there is not deskew calibration pattern outputting from Maxim96722, display is ok.

  • At such high speed transmission, deskew calibration output is required, so can be you please enable it in deserializer and check the output? 

  • Hi Brijesh,

    We compared the MIPI Tx waveforms of our deserializer and Maxim96722, the timing of TLPX/THS-PREPARE/THS-ZERO/THS-SYNC/THS-TRAIL are matched.

    Dumped the TI SOC CSIRX register, did not find abnormal, please help to confirm.

    /dev/mem opened.
    Memory mapped at address 0xffffb8b40000.
    Read at address  0x02A30000 (0xffffb8b40000): 0x66A0EA00
    /dev/mem opened.
    Memory mapped at address 0xffffb6730000.
    Read at address  0x02A30008 (0xffffb6730008): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff9f6f0000.
    Read at address  0x02A3000C (0xffff9f6f000c): 0x00000008
    /dev/mem opened.
    Memory mapped at address 0xffff8c740000.
    Read at address  0x02A30010 (0xffff8c740010): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff7fa60000.
    Read at address  0x02A3003C (0xffff7fa6003c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff9e360000.
    Read at address  0x02A30040 (0xffff9e360040): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb8e50000.
    Read at address  0x02A30080 (0xffffb8e50080): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff84c90000.
    Read at address  0x02A300C0 (0xffff84c900c0): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff995b0000.
    Read at address  0x02A3013C (0xffff995b013c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff99520000.
    Read at address  0x02A30140 (0xffff99520140): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffaa860000.
    Read at address  0x02A30180 (0xffffaa860180): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff93530000.
    Read at address  0x02A301C0 (0xffff935301c0): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff83ce0000.
    Read at address  0x02A30200 (0xffff83ce0200): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb95b0000.
    Read at address  0x02A30204 (0xffffb95b0204): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff94500000.
    Read at address  0x02A30208 (0xffff94500208): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff94ba0000.
    Read at address  0x02A3020C (0xffff94ba020c): 0x00000000
    
    /dev/mem opened.
    Memory mapped at address 0xffffab400000.
    Read at address  0x04500008 (0xffffab400008): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff8b4c0000.
    Read at address  0x04500010 (0xffff8b4c0010): 0x00000E01
    /dev/mem opened.
    Memory mapped at address 0xffff9d2a0000.
    Read at address  0x04500020 (0xffff9d2a0020): 0x8C00001E
    /dev/mem opened.
    Memory mapped at address 0xffff9e130000.
    Read at address  0x04500024 (0xffff9e130024): 0x00010000
    /dev/mem opened.
    Memory mapped at address 0xffff8c4d0000.
    Read at address  0x04500028 (0xffff8c4d0028): 0x00000000
    
    /dev/mem opened.
    Memory mapped at address 0xffffb75f0000.
    Read at address  0x04504000 (0xffffb75f4000): 0x8421164C
    /dev/mem opened.
    Memory mapped at address 0xffff968a0000.
    Read at address  0x04504004 (0xffff968a4004): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff84660000.
    Read at address  0x04504008 (0xffff84664008): 0x43210410
    /dev/mem opened.
    Memory mapped at address 0xffff88a70000.
    Read at address  0x04504010 (0xffff88a74010): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff8cd00000.
    Read at address  0x04504018 (0xffff8cd04018): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffae6f0000.
    Read at address  0x0450401C (0xffffae6f401c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb6930000.
    Read at address  0x04504020 (0xffffb6934020): 0x00000002
    /dev/mem opened.
    Memory mapped at address 0xffffa3f10000.
    Read at address  0x04504024 (0xffffa3f14024): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa47b0000.
    Read at address  0x04504028 (0xffffa47b4028): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff8dae0000.
    Read at address  0x0450402C (0xffff8dae402c): 0x000F03B1
    /dev/mem opened.
    Memory mapped at address 0xffffa7980000.
    Read at address  0x04504040 (0xffffa7984040): 0x0001F01F
    /dev/mem opened.
    Memory mapped at address 0xffff9ebc0000.
    Read at address  0x04504048 (0xffff9ebc4048): 0x00333306
    /dev/mem opened.
    Memory mapped at address 0xffffbc8d0000.
    Read at address  0x0450404C (0xffffbc8d404c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa82b0000.
    Read at address  0x04504050 (0xffffa82b4050): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff824c0000.
    Read at address  0x04504060 (0xffff824c4060): 0x20000000
    /dev/mem opened.
    Memory mapped at address 0xffffb5be0000.
    Read at address  0x04504074 (0xffffb5be4074): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb30c0000.
    Read at address  0x04504080 (0xffffb30c4080): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffad800000.
    Read at address  0x04504100 (0xffffad804100): 0x00000001
    /dev/mem opened.
    Memory mapped at address 0xffffa7cf0000.
    Read at address  0x04504104 (0xffffa7cf4104): 0x80000113
    /dev/mem opened.
    Memory mapped at address 0xffffb3940000.
    Read at address  0x04504108 (0xffffb3944108): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff9fe40000.
    Read at address  0x0450410C (0xffff9fe4410c): 0x00000100
    /dev/mem opened.
    Memory mapped at address 0xffff954f0000.
    Read at address  0x04504110 (0xffff954f4110): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff821e0000.
    Read at address  0x04504114 (0xffff821e4114): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa3890000.
    Read at address  0x04504118 (0xffffa3894118): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffba7f0000.
    Read at address  0x0450411C (0xffffba7f411c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff872e0000.
    Read at address  0x04504120 (0xffff872e4120): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffab910000.
    Read at address  0x04504124 (0xffffab914124): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff86e00000.
    Read at address  0x04504128 (0xffff86e04128): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff87010000.
    Read at address  0x04504200 (0xffff87014200): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff83fc0000.
    Read at address  0x04504204 (0xffff83fc4204): 0x00000100
    /dev/mem opened.
    Memory mapped at address 0xffffa7e00000.
    Read at address  0x04504208 (0xffffa7e04208): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa7b90000.
    Read at address  0x0450420C (0xffffa7b9420c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb9ce0000.
    Read at address  0x04504210 (0xffffb9ce4210): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff909e0000.
    Read at address  0x04504214 (0xffff909e4214): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff7f650000.
    Read at address  0x04504218 (0xffff7f654218): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb44b0000.
    Read at address  0x0450421C (0xffffb44b421c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb0c90000.
    Read at address  0x04504220 (0xffffb0c94220): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff80b60000.
    Read at address  0x04504224 (0xffff80b64224): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa0aa0000.
    Read at address  0x04504228 (0xffffa0aa4228): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff9d640000.
    Read at address  0x04504300 (0xffff9d644300): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffbd9f0000.
    Read at address  0x04504304 (0xffffbd9f4304): 0x00000100
    /dev/mem opened.
    Memory mapped at address 0xffffb9710000.
    Read at address  0x04504308 (0xffffb9714308): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa6310000.
    Read at address  0x0450430C (0xffffa631430c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa62a0000.
    Read at address  0x04504310 (0xffffa62a4310): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff8d110000.
    Read at address  0x04504314 (0xffff8d114314): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb78e0000.
    Read at address  0x04504318 (0xffffb78e4318): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa3e90000.
    Read at address  0x0450431C (0xffffa3e9431c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa8600000.
    Read at address  0x04504320 (0xffffa8604320): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff9c4c0000.
    Read at address  0x04504324 (0xffff9c4c4324): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb1f60000.
    Read at address  0x04504328 (0xffffb1f64328): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff8ea90000.
    Read at address  0x04504400 (0xffff8ea94400): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa09b0000.
    Read at address  0x04504404 (0xffffa09b4404): 0x00000100
    /dev/mem opened.
    Memory mapped at address 0xffff9a930000.
    Read at address  0x04504408 (0xffff9a934408): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff92440000.
    Read at address  0x0450440C (0xffff9244440c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff94820000.
    Read at address  0x04504410 (0xffff94824410): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff91810000.
    Read at address  0x04504414 (0xffff91814414): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff81630000.
    Read at address  0x04504418 (0xffff81634418): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffaf4c0000.
    Read at address  0x0450441C (0xffffaf4c441c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff9f780000.
    Read at address  0x04504420 (0xffff9f784420): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff99b50000.
    Read at address  0x04504424 (0xffff99b54424): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff98040000.
    Read at address  0x04504428 (0xffff98044428): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff7f8c0000.
    Read at address  0x04504900 (0xffff7f8c4900): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff95900000.
    Read at address  0x04504904 (0xffff95904904): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb5ff0000.
    Read at address  0x04504908 (0xffffb5ff4908): 0x0000007F
    /dev/mem opened.
    Memory mapped at address 0xffff97510000.
    Read at address  0x0450490C (0xffff9751490c): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff929e0000.
    Read at address  0x04504910 (0xffff929e4910): 0x0000007F
    /dev/mem opened.
    Memory mapped at address 0xffff94ed0000.
    Read at address  0x04504920 (0xffff94ed4920): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff823a0000.
    Read at address  0x04504924 (0xffff823a4924): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffaf440000.
    Read at address  0x04504928 (0xffffaf444928): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb5920000.
    Read at address  0x04504930 (0xffffb5924930): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb7860000.
    Read at address  0x04504934 (0xffffb7864934): 0x00000001
    /dev/mem opened.
    Memory mapped at address 0xffffb3f50000.
    Read at address  0x04504938 (0xffffb3f54938): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffbe740000.
    Read at address  0x04504940 (0xffffbe744940): 0x00003FFF
    /dev/mem opened.
    Memory mapped at address 0xffff9ac60000.
    Read at address  0x04504944 (0xffff9ac64944): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb0430000.
    Read at address  0x04504FFC (0xffffb0434ffc): 0x50220200
    
    /dev/mem opened.
    Memory mapped at address 0xffffa85d0000.
    Read at address  0x04508000 (0xffffa85d8000): 0x6690A200
    /dev/mem opened.
    Memory mapped at address 0xffffa3e30000.
    Read at address  0x04508010 (0xffffa3e38010): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff89b30000.
    Read at address  0x04508014 (0xffff89b38014): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa9b30000.
    Read at address  0x04508100 (0xffffa9b38100): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb3a50000.
    Read at address  0x04508104 (0xffffb3a58104): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff81fe0000.
    Read at address  0x04508300 (0xffff81fe8300): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff9fd30000.
    Read at address  0x04508304 (0xffff9fd38304): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffac440000.
    Read at address  0x04508500 (0xffffac448500): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffff8f4f0000.
    Read at address  0x04508504 (0xffff8f4f8504): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb0ff0000.
    Read at address  0x04508700 (0xffffb0ff8700): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffac9e0000.
    Read at address  0x04508704 (0xffffac9e8704): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffb3e20000.
    Read at address  0x04508A80 (0xffffb3e28a80): 0x00000000
    /dev/mem opened.
    Memory mapped at address 0xffffa3eb0000.
    Read at address  0x04508A84 (0xffffa3eb8a84): 0x00000000
    

    Here is our questions:

    1) How to enable MIPI CSIRx Frame Monitor function? we want try to capture the input video frame in Soc side.

    2) How to check MIPI CSIRx has received the video packet?

    Thanks.

  • OK, we will try to enable the deskew calibration in deserializer output.

  • Sure, please make sure to enable this when lane speed is more than 1.5gpbs per lane. 

    Regards,

    Brijesh

  • Hi Brijesh,

    We have tried to enable skew calibration, still has the same results, not get video stream in CSIRX.

    Also, checked below CSIRX registers value, we consider that the DPHY link is fine now, but do not clear why CSIRX still cannot get video stream, could you help to confirm the status of CSIRX? Thanks.

    1) readback 0x04504048, the value keeps changing from 0x0033306  to 0x0022206

    2) readback 0x04580B00, the value=0x00000252

    3) try to reset CSI_RX_IF module by setting 0x04504100 bit4, get the same results.

    because we find below issue in Errata.

    4) readback CSIRX_error_irqs register, the value=0x00.

    5) readback CSIRX_dphy_err_status_irq register, the value=0x00.

  • Hi Ming,

    ok, is the lane speed configuration matching with the CSIRX? 

    When do you configure sensor and deserialzier? Is it possible to move this complete configuration to streamon callback in imaging folder?

    Regards,

    Brijesh

  • Yes, the lane speed configuration is matched.

    we have moved the sensor and deserializer configuration in streamon callback.

    Hi Brijesh,

    Could we confirm from the 0x04504104 register that CSIRx has received video stream?

    Repeat reading this register, find the value keeps changing.

  • hi Min,

    But this means data is being received by CSIRX. Is CSIRX configured correctly with data type and virtual channel id? Can you please read  CSI_RX_IF_SHIM_DMACNTX register to confirm the same? 

    Regards,

    Brijesh

  • Hi Brijesh,

    Thanks for your reply.

    CSI_RX_IF_SHIM_DMACNTX, 0x04500020 = 0x8C00001E, virtual channel=0, data type=0x1E.

  • Hi Ming

    Datatype is set to YUV422, is it correct? How many channels are you trying to capture? Do you have CCS + JTAG on this board? I want to put breakpoint on few APIs to see if it is getting hit.

    Regards,

    Brijesh

  • Yes, Data type=0x1E, it means YUV422 8-bit. we are trying to capture one channel.

    Can we download and install CCS from the link?  https://www.ti.com/tool/CCSTUDIO#downloads

    we could purchase the JTAG tool if needs, do you have the model or link?

    Thanks.

  • Hi Ming,

    ok, since you currently dont have CCS+JTAG, can you please add some prints in the below API in the PDK driver (packages\ti\drv\csirx\src\csirx_drvUdma.c) and see if it is getting called? 

    CsirxDrv_udmaCQEventCb

    If this API is getting called, then most likely capture is working. There is some other issue because of which your application is not working. So lets first check if capture is working or not.

    Regards,

    Brijesh

  • Hi Brijesh,

    Today we add print in CsirxDrv_udmaCQEventCb, confirmed the API is not called.

  • Hi ming,

    ok, then it is not capturing. Are you seeing any other error like CRC/ECC/ or incorrect packet header? If this is the case, it will not be able to identify the packet and then will not capture this frame..

    Regards,

    Brijesh