TIDA-00421: Cannot get an image from TIDA-00421 with the deserializer DS90UB960-Q1:

Part Number: TIDA-00421
Other Parts Discussed in Thread: DS90UB960-Q1,

Hello,

I'm trying to configure the TIDA-00421 with a Deserializer DS90UB960-Q1, but I'm not able to get an Image.

The sensor is configured with DVP RAW12 not compressed. (Configuration used is from the supplier).

Here my system:

TIDA-00421 (OV10640+Serializer 913A) ----- Coax ------ [Port 0] { Deserializer (DS90UB960-Q1) } [CSI 0] ----- MIPI-CSI Link -------- [ECU Snapdragon]

- Power over Coax is used

- The coax cable is connected to the Port 0 of the deserializer.

- The CSI0 of the deserializer is used to output the images.

in the attachment you will find the configuration I used for that.

I'm working on an Android 10 environnement.

Could you please verify my configuration, and If you have an example of working configuration for the TIDA-00421 I will be thankful.

Thanks,

Best regards,

Mahdi,

Serdes_cfg.c
//-----------------------------DS90UB960-Q1 Deserializer Config

			write_cfg->reg_setting[0].reg_addr = 0x1F;
			write_cfg->reg_setting[0].reg_data = 0x05;
			
			write_cfg->reg_setting[0].reg_addr = 0x4C;
			write_cfg->reg_setting[0].reg_data = 0x01;

			write_cfg->reg_setting[0].reg_addr = 0x58;
			write_cfg->reg_setting[0].reg_data = 0x58;

			write_cfg->reg_setting[0].reg_addr = 0x6D;
			write_cfg->reg_setting[0].reg_data = 0x7E;
			
			write_cfg->reg_setting[0].reg_addr = 0x5D;
			write_cfg->reg_setting[0].reg_data = 0xB0;
	
			write_cfg->reg_setting[0].reg_addr = 0x65;
			write_cfg->reg_setting[0].reg_data = 0xB0;
		
			write_cfg->reg_setting[0].reg_addr = 0x5E;
			write_cfg->reg_setting[0].reg_data = 0x62;
	
			write_cfg->reg_setting[0].reg_addr = 0x66;
			write_cfg->reg_setting[0].reg_data = 0x64;
			
			msleep(100);
			
			write_cfg->reg_setting[0].reg_addr = 0x7C;
			write_cfg->reg_setting[0].reg_data = 0x24;

			write_cfg->reg_setting[0].reg_addr = 0x6E;
			write_cfg->reg_setting[0].reg_data = 0x99;
			
			write_cfg->reg_setting[0].reg_addr = 0x70;
			write_cfg->reg_setting[0].reg_data = 0x2B;

			write_cfg->reg_setting[0].reg_addr = 0x71;
			write_cfg->reg_setting[0].reg_data = 0x2C;
			
			write_cfg->reg_setting[0].reg_addr = 0xB0;
			write_cfg->reg_setting[0].reg_data = 0x1C;
			
			msleep(100);
			
			write_cfg->reg_setting[0].reg_addr = 0xB1;
			write_cfg->reg_setting[0].reg_data = 0x13;
	
	
			write_cfg->reg_setting[0].reg_addr = 0xB2;
			write_cfg->reg_setting[0].reg_data = 0x1F;
	
			write_cfg->reg_setting[0].reg_addr = 0x32;
			write_cfg->reg_setting[0].reg_data = 0x01;
	
			write_cfg->reg_setting[0].reg_addr = 0x33;
			write_cfg->reg_setting[0].reg_data = 0x03;
	
	
			write_cfg->reg_setting[0].reg_addr = 0x20;
			write_cfg->reg_setting[0].reg_data = 0x00;
	
	
			write_cfg->reg_setting[0].reg_addr = 0x10;
			write_cfg->reg_setting[0].reg_data = 0x81;
	
	
			write_cfg->reg_setting[0].reg_addr = 0x11;
			write_cfg->reg_setting[0].reg_data = 0xA1;
	
			write_cfg->reg_setting[0].reg_addr = 0x12;
			write_cfg->reg_setting[0].reg_data = 0xC1;

			write_cfg->reg_setting[0].reg_addr = 0x19;
			write_cfg->reg_setting[0].reg_data = 0x00;
	
			write_cfg->reg_setting[0].reg_addr = 0x1A;
			write_cfg->reg_setting[0].reg_data = 0x8A;
	
			write_cfg->reg_setting[0].reg_addr = 0x1B;
			write_cfg->reg_setting[0].reg_data = 0x04;
	
			write_cfg->reg_setting[0].reg_addr = 0x1C;
			write_cfg->reg_setting[0].reg_data = 0x04;
	
			write_cfg->reg_setting[0].reg_addr = 0x1C;
			write_cfg->reg_setting[0].reg_data = 0xE1;
	
			write_cfg->reg_setting[0].reg_addr = 0x18;
			write_cfg->reg_setting[0].reg_data = 0x01;

//-----------------------------DS90UB960-Q1 Deserializer Config

//-----------------------------OV10640 Serializer 913A Config


        write_cfg->reg_setting[0].reg_addr = 0x03;
        write_cfg->reg_setting[0].reg_data = 0xC5;

        write_cfg->reg_setting[0].reg_addr = 0x0D;
        write_cfg->reg_setting[0].reg_data = 0x99;
		
//-----------------------------OV10640 Serializer 913A Config

  • Hello Mahdi,

    Firstly, welcome to E2E. We will be looking into your question and will update this post as we gather relevant data. I have some questions that should help this problem move forward:

    • Would it be possible to upload your code again with comments so I can better understand what is happening?

    • Do you happen to have the register sequence provided by the OEM? And if so could you upload that?

    • Are you able to communicate to the serializer? If so then the problem is more then likely on the imager side of things.

  • Hello Taylor,

    Thank you for your reply, I will answer you questions below :

    • Would it be possible to upload your code again with comments so I can better understand what is happening?
      • You will find it in the attachment
    • Do you happen to have the register sequence provided by the OEM? And if so could you upload that?
      • I cannot publish it as it's under NDA.
    • Are you able to communicate to the serializer? If so then the problem is more then likely on the imager side of things.
      • Yes I'm able to communicate to the serializer.

    Could you please send me the driver of the TIDA-00421 ? because I cannot find it in the TI VISION SDK ?

    Thanks,

    Kind regards,

    //----------------------------- Start ---  DS90UB960-Q1 Deserializer Config
    
    			write_cfg->reg_setting[0].reg_addr = 0x1F; // Clock 100Mhz and CSI_TX_SPEED 1.2 Gbps serial rate
    			write_cfg->reg_setting[0].reg_data = 0x05;
    			
    			write_cfg->reg_setting[0].reg_addr = 0x4C; // Select Channel 0
    			write_cfg->reg_setting[0].reg_data = 0x01;
    
    			write_cfg->reg_setting[0].reg_addr = 0x58; // Enable Back Channel, set to 2.5Mbps for ub913 compatibility
    			write_cfg->reg_setting[0].reg_data = 0x58;
    
    			write_cfg->reg_setting[0].reg_addr = 0x6D; // FPD3 Input mode : RAW12 High Freq
    			write_cfg->reg_setting[0].reg_data = 0x7E;
    			
    			write_cfg->reg_setting[0].reg_addr = 0x5D; // SlaveID
    			write_cfg->reg_setting[0].reg_data = 0xB0;
    	
    			write_cfg->reg_setting[0].reg_addr = 0x65; //Serializer Address
    			write_cfg->reg_setting[0].reg_data = 0xB0;
    		
    			write_cfg->reg_setting[0].reg_addr = 0x5E; //Another sensor used but not connected
    			write_cfg->reg_setting[0].reg_data = 0x62;
    	
    			write_cfg->reg_setting[0].reg_addr = 0x66; //Sensor OV10640 Address
    			write_cfg->reg_setting[0].reg_data = 0x64;
    			
    			msleep(100);
    			
    			write_cfg->reg_setting[0].reg_addr = 0x7C; // Set LV_POLARITY and FV_POLARITY to automatic and discard first video line
    			write_cfg->reg_setting[0].reg_data = 0x24;
    
    			write_cfg->reg_setting[0].reg_addr = 0x6E; // Back Channel GPIO0 to High, GPIO 1 to High (Only one sensor connected for the moment no need to FrameSync)
    			write_cfg->reg_setting[0].reg_data = 0x99;
    			
    			write_cfg->reg_setting[0].reg_addr = 0x70; //RAW10 for port 0
    			write_cfg->reg_setting[0].reg_data = 0x2B;
    
    			write_cfg->reg_setting[0].reg_addr = 0x71; //RAW12 for port 0
    			write_cfg->reg_setting[0].reg_data = 0x2C;
    			
    			write_cfg->reg_setting[0].reg_addr = 0xB0; //Choose FPD link port 0 
    			write_cfg->reg_setting[0].reg_data = 0x1C;
    			
    			msleep(100);
    			
    			write_cfg->reg_setting[0].reg_addr = 0xB1; //Select Register
    			write_cfg->reg_setting[0].reg_data = 0x13;
    	
    	
    			write_cfg->reg_setting[0].reg_addr = 0xB2; //Select Register
    			write_cfg->reg_setting[0].reg_data = 0x1F;
    	
    			write_cfg->reg_setting[0].reg_addr = 0x32; // Enable TX port 0
    			write_cfg->reg_setting[0].reg_data = 0x01; 
    	
    			write_cfg->reg_setting[0].reg_addr = 0x33; // Enable continuous clock mode and CSI output Enable
    			write_cfg->reg_setting[0].reg_data = 0x03;
    	
    	
    			write_cfg->reg_setting[0].reg_addr = 0x20; // Forwarding and using CSI port 0
    			write_cfg->reg_setting[0].reg_data = 0x00;
    	
    	
    			write_cfg->reg_setting[0].reg_addr = 0x10; //GPIO0 Ctrl
    			write_cfg->reg_setting[0].reg_data = 0x81;
    	
    	
    			write_cfg->reg_setting[0].reg_addr = 0x11; //GPIO1 Ctrl
    			write_cfg->reg_setting[0].reg_data = 0xA1;
    	
    			write_cfg->reg_setting[0].reg_addr = 0x12; //GPIO2 Ctrl
    			write_cfg->reg_setting[0].reg_data = 0xC1;
    
    			write_cfg->reg_setting[0].reg_addr = 0x19; //FS_HIGH_TIME_1 Register
    			write_cfg->reg_setting[0].reg_data = 0x00;
    	
    			write_cfg->reg_setting[0].reg_addr = 0x1A; //FS_HIGH_TIME_0 Register
    			write_cfg->reg_setting[0].reg_data = 0x8A;
    	
    			write_cfg->reg_setting[0].reg_addr = 0x1B; //FS_LOW_TIME_1 Register
    			write_cfg->reg_setting[0].reg_data = 0x04;
    	
    			write_cfg->reg_setting[0].reg_addr = 0x1C; //FS_LOW_TIME_0 Register
    			write_cfg->reg_setting[0].reg_data = 0xE1;
    	
    			write_cfg->reg_setting[0].reg_addr = 0x18; //FS_CTRL_REGISTER
    			write_cfg->reg_setting[0].reg_data = 0x01;
    
    //--------------------------------End --- DS90UB960-Q1 Deserializer Config
    
    //----------------------------- Start---- Serializer 913A Config
    
    
            write_cfg->reg_setting[0].reg_addr = 0x03; //General Configuration (Default value)
            write_cfg->reg_setting[0].reg_data = 0xC5;
    
            write_cfg->reg_setting[0].reg_addr = 0x0D; // GPIO0 and GPIO1 Configuration
            write_cfg->reg_setting[0].reg_data = 0x99;
    		
    //----------------------------- End ----- Serializer 913A Config

  • Hello Mahdi,

    So the files for the imager you're using in SDK are located in:

    C:\PROCESSOR_SDK_VISION_03_08_00_00\ti_components\drivers\pdk_01_10_04_05\packages\ti\drv\vps\src\devices\ov10640

    This may very well contain the files you need to get the imager up and running. Please let me know if that works.

    Also while I'm here, could you upload a font/back photo of the TIDA-00421 board so I can see the connections and such? Thank you.

  • Hello Taylor,

    Yes I tried the driver inside the ov10640, but it's for MIPI connection and not DVP.

    The TI DS90UB913A supports only DVP configuration so the sensor cannot be in MIPI, that's why. Could you please check this issue ?

    Here below the photos front and back of the TIDA-00421:

    Thanks,

    Best regards,

    Mahdi,