TDA4VH-Q1: TDA4VH SDK11 CSIRx not receiving data issue

Part Number: TDA4VH-Q1
Other Parts Discussed in Thread: TDA4VH

TDA4VH SDK11 CSIRx not receiving data issue

SDK verison:11_00_00_06

Background:
The SOC is connected to three cameras: 8M (x8d10), 8M (imx728), and 2.5M (imx623).

The imx728 is connected to AM62A and UB971 respectively through the MIPI repeater.

image.png

After the TDA4VH MCU2_0 is powered on, start configuring the serializer and deserializer, and keep the deserializer's csi output disabled.Then start the "vision_app" to create an "openvx capture node" for receiving data.

ISSUE:

Before configuring the serializer and deserializer in MCU2_0, if AM62A has already transmitted data to TDA4VH through the MIPI repeater, the TDA4VH capture node can normally receive the data.

If when configuring the serializer and deserializer on MCU2_0, AM62A fails to send data to TDA4VH via the MIPI repeater(for example, if AM62A power late), the TDA4VH capture node will not receive all channel data.

DEBUG:

1. After the capture node got stuck, a reset operation was performed on the FPD-link, but the SOC still couldn't receive any data.
2. By checking the csi_if related registers, it was found that stream0 (CAP) was in the idle state. No long packet was received. There were no ecc/crc errors. STREAM_FSM = STREAM_WAIT_CTRL_DATA, PROTOCOL_FSM = PROT_WAIT_CTRL.
3. At the same time, the Dphy related registers were analyzed, and no obvious errors were found.

4. When the capture node gets stuck, try performing a soft reset on csi_rx_if (CSI_RX_IF_VBUS2APB_SOFT_RESET), but still no data is received.


The attachments are the register information of the abnormal and normal states.

reg_read_result_normal.txt

reg_read_result_abnormal.txt 

  • Hi Zewen Xi,

    Before configuring the serializer and deserializer in MCU2_0, if AM62A has already transmitted data to TDA4VH through the MIPI repeater, the TDA4VH capture node can normally receive the data.

    Could not understand the usage of repeater here. Is it transmitting data to two ports? One for AM62A and the other for UB971? 

    In general, deserializer and sensors must be enabled only after DPHY is configured in CSIRX. So can you please make sure that this is taken care? 

    Regards,

    Brijesh

  • One output goes to AM62A, and the other output goes to UB971.

    When you say "deserializer and sensors must be enabled," do you mean the general register configuration or the deserializer CSI port output enable?

  • Hi,

    I meant CSI output enable. 

    Regards,

    Brijesh

  • After Dphy configuration is complete, the deserializer CSI output is enabled. This is certain.

  • Can you please check and make sure to not enable the output before dphy configuration is done? We had seen that by default the output is enabled as part of the configuration and that makes CSIRX not able to detect the input stream. 

    Regards,

    Brijesh

  • 1. The process of the TI capture node example is as follows: first, obtain the sensor-related parameters; then, configure the sensors and SERDES registers; next, initialize the Fvid2 driver; and finally, enable streamOn (enable the deserializer CSI output).

    2. By default, CSI output is disabled in the 9702. It must be manually enabled during streamOn.

  • Hi Xi,

    Can you explicitly disable CSITX output from 9702 before starting csirx? and enable it only in streamon?

    Regards,

    Brijesh

  • Hi 

    I tried manually disabling CSI output before configuring the 9702, but that didn't help.

  • Hi Xi,

    Are you using OpenVX node to receive images from all three channels? and when AM62A does not output data, you dont get any frames from capture node? 

    Then this might be expected as capture node will wait to receive frames from all channels before sending it to the next node or to the application. Can you please print the performance statistics to know if the other two channels are capturing? 

    Regards,

    Brijesh 

  • Hi Brijesh

    Three nodes (TIVX_TARGET_CAPTURE1, TIVX_TARGET_CAPTURE2, TIVX_TARGET_CAPTURE3) are used to receive data from the three channels respectively.

    If the physical connection to the AM62A is disconnected and TDA4 is started, data from the other two channels can be received normally.

    When TDA4 is started while the AM62A is connected, because the AM62A transmits data relatively slowly, all three capture nodes will fail to receive data.

    Can you analyze the cause of the problem from the register information?

  • Hi Xi,

    Are you sure that the UB970 is transmitting data in this case? Because CSIRX remains same in both the cases, so wondering if somehow UB970 stopped outputting data. Can you read some status registers to know if it is still transmitting data? 

    Regards,

    Brijesh

  • Hi Brijesh

    It can be confirmed that UB971 is sending data. If it gets stuck, restarting TDA4 will allow it to receive data normally.