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.

TDA4VM: Camera connection of two different de-serializers(the same resolution)

Part Number: TDA4VM

Tool/software:

We have two cameras connected to MAX96719 (CIS port0) and MAX96714 (CSI port1), respectively, and the cameras are output to YUV422 as vc0 (RGB) and vc1 (IR), respectively, from the built-in ISP.
It is operating normally with a single capture node.

However, if you connect the two cameras to MAX96719 and MAX96714, select "sensorObj->num_camera_enabled = 4; //add number of camera" and set it as below, the data will not come out of the capture node.

params.instId[0] = 0
params.instId[1] = 1
captureObj->params.numDataLanes = 4
captureObj->params.dataLanesMap[0] = 1
captureObj->params.dataLanesMap[1] = 2
captureObj->params.dataLanesMap[2] = 3
captureObj->params.dataLanesMap[3] = 4

captureObj->params.chVcNum[0] = 0; // port0
captureObj->params.chInstMap[0] = 0;

captureObj->params.chVcNum[1] = 1;
captureObj->params.chInstMap[1] = 0;

captureObj->params.chVcNum[2] = 2;
captureObj->params.chInstMap[2] = 1;

captureObj->params.chVcNum[3] = 3;
captureObj->params.chInstMap[3] = 1;

In EVM board, VC channel is working properly even if multiple cameras are connected.
Please give me a solution.

  • Hi Yang,

    Do you mean both the cameras are working independently on both the CSIRX instances?

    Regards,

    Brijesh

  • Hi Yang,

    We have two cameras connected to MAX96719 (CIS port0) and MAX96714 (CSI port1)

    Are these 2 cameras the same (i.e., using the same sensor driver)?

  • HI Brijesh Jadav

    Yes, the two graphs are organized independently, so they are working well as shown in the picture below.

    However, if you configure one capture node with one graph and operate multi-camera (CSI0&CSI1), it is not working.
    The camera is the same camera and the same sensor.

    As far as I know, it works with CSI 0 & CSI1 camera with one graph and one capture node, and its EVM board is also working well.

    Is it possible to make DDS output into one from two graphs?

    Alren yang

  • HI Gang Hua

    The camera is the same sensor and uses the same driver.

    Regards

    Alren yang

  • Hello Yang,

    Well, on EVM, in multi-camera example, the assumption is that first 4 virtual channels are captured from CSI RX instance0, next 4 channels (although same virtual channels) are captured from CSIRX instance1 and so on. This is how channel mask are defined and sensor are configured in the sensor framework. 

    Looking at your configuration below, it seems you are using virtual0 and 1 on CSIRX instance0 and virtual2 and 3 on CSIRX instance1. Which means you are trying to capture 4 channels/camera, isn't it? Also can you please check and confirm that both the sensor are getting correctly configured? Are all CSI parameters (lane speed, number of lanes etc) are between these two CSI instances? 

    captureObj->params.chVcNum[0] = 0; // port0
    captureObj->params.chInstMap[0] = 0;

    captureObj->params.chVcNum[1] = 1;
    captureObj->params.chInstMap[1] = 0;

    captureObj->params.chVcNum[2] = 2;
    captureObj->params.chInstMap[2] = 1;

    captureObj->params.chVcNum[3] = 3;
    captureObj->params.chInstMap[3] = 1;

    Regards,

    Brijesh

  • HI Brijesh Jadav.

    Are there any other modifications other than the checkpoint you mentioned? I checked the part you said.


    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    F=icmuOD_configure_capture_params,L=76 capture_params ch mask = 0x[f]....
    F=icmuOD_configure_capture_params,L=91 captureObj->params.numInst = [2]
    F=icmuOD_configure_capture_params,L=93 captureObj->params.numCh = [4]
    F=icmuOD_configure_capture_params,L=98 params.instId[0] = 0
    F=icmuOD_configure_capture_params,L=101 captureObj->params.numDataLanes = 4
    F=icmuOD_configure_capture_params,L=109 captureObj->params.dataLanesMap[0] = 1
    F=icmuOD_configure_capture_params,L=109 captureObj->params.dataLanesMap[1] = 2
    F=icmuOD_configure_capture_params,L=109 captureObj->params.dataLanesMap[2] = 3
    F=icmuOD_configure_capture_params,L=109 captureObj->params.dataLanesMap[3] = 4
    F=icmuOD_configure_capture_params,L=98 params.instId[1] = 1
    F=icmuOD_configure_capture_params,L=101 captureObj->params.numDataLanes = 4
    F=icmuOD_configure_capture_params,L=109 captureObj->params.dataLanesMap[0] = 1
    F=icmuOD_configure_capture_params,L=109 captureObj->params.dataLanesMap[1] = 2
    F=icmuOD_configure_capture_params,L=109 captureObj->params.dataLanesMap[2] = 3
    F=icmuOD_configure_capture_params,L=109 captureObj->params.dataLanesMap[3] = 4
    F=icmuOD_configure_capture_params,L=115 captureObj->params.chVcNum[0] = 0....
    F=icmuOD_configure_capture_params,L=116 captureObj->params.chInstMap[0] = 0....
    F=icmuOD_configure_capture_params,L=120 captureObj->params.chVcNum[1] = 1....
    F=icmuOD_configure_capture_params,L=121 captureObj->params.chInstMap[1] = 0....
    F=icmuOD_configure_capture_params,L=126 captureObj->params.chVcNum[2] = 2....
    F=icmuOD_configure_capture_params,L=127 captureObj->params.chInstMap[2] = 1....
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


  • Hi Yang,

    Two questions, 

    - Is the virtual channel id correct for the cameras connected over CSIRX Instance1? You are using virtual channel id as 2 and 3, but it can very well starts from 0. So please check in your single camera application, what's the virtual channel id for both of these cameras?

    - Is the channel mask of 0xF value properly handled in the sensor framework for sensor configuration? Can you please check them?

    Regards,

    Brijesh

  • Hi,

    Adding to the above,

    When 2 cam connected at any ports are provided (i.e. for eg. ch_mask - 0x11), two changes has to be done additionally to the application.
    1. manually change ch_mask to 0x11 after the API app_querry_sensor()
    2. Modify the starting channel parameter in app_init_aewb() to take the respective ports as starting channel.

    Regards,

    Nikhil

  • Hi Yang,

    2. Modify the starting channel parameter in app_init_aewb() to take the respective ports as starting channel.

    We have a patch for the starting channel in vision apps.

    Please refer to this commit

    https://git.ti.com/cgit/processor-sdk/vision_apps/commit/?h=main&id=8cc9845dd1d18a468f59f67c102a72c6408a19c1

  • HI Brijesh Jadav.

    - Is the virtual channel id correct for the cameras connected over CSIRX Instance1? You are using virtual channel id as 2 and 3, but it can very well starts from 0. So please check in your single camera application, what's the virtual channel id for both of these cameras?

    ==> The sensor used has a built-in ISP, so vc0 and vc1 are fixed.

    It is connected as follows.

    - Is the channel mask of 0xF value properly handled in the sensor framework for sensor configuration? Can you please check them?

    ==>Yes. I checked the channel mask value.

  • Hi Yang,

    But in below code, you are setting virtual channel as 2 and for the instance 1, Can you please set them to 0 and 1 in this case? 

    F=icmuOD_configure_capture_params,L=126 captureObj->params.chVcNum[2] = 2....
    F=icmuOD_configure_capture_params,L=127 captureObj->params.chInstMap[2] = 1....
    F=icmuOD_configure_capture_params,L=131 captureObj->params.chVcNum[3] = 3....
    F=icmuOD_configure_capture_params,L=132 captureObj->params.chInstMap[3] = 1....

    Regards,

    Brijesh

  • HI Brijesh Jadav.

    Thanck you.