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.

Linux/DS90UB964-Q1: I can't read registers for 913/ov10640.

Part Number: DS90UB964-Q1

Tool/software: Linux

hi ti

 4*ov10640->4*du90ub913->ds90ub964->ov490

After setting, I can use ov490 to read and write 913 and ov10640 registers through 964, but at present I can only read 913 and ov10640 registers of port 0 and 1, and the values of registers read from ports 2 and 3 are all 0xff.

I select the port by setting the value of register 0x4c of 964.

port 0    write964(0x4c,0x01)

port1    write964(0x4c,0x12)

port 2    write964(0x4c,0x24)

port 3    write964(0x4c,0x38)

Reg[0x00]->data[ff] 

The data read is shown above.

I want to know why I can read the data of ports 0 and 1, but can't read the data of ports 2 and 3??

thanks.

  • Hello,

    Can you clarify your system setup? Are you using a 964 EVM +TDAx3?

    Or are you using your own board or just the 964 EVM?

    It would be helpful to share the full procedure as well (what script you are using to initialize 913/ov10640) and exactly the command you are using to read from the 913/ov10640.

    Regards,
    Zoe
  • hi Zoe

    4*ov10640->4*du90ub913->ds90ub964->ov490->tda2x
    using ov490 api

    void HostControl_GetEx(unsigned char host_cmd, unsigned char* paraIn, unsigned short
    numberIn, unsigned char* paraOut, unsigned short numberOut)
    {
    unsigned short i = 0;
    //Host reset OV490_status_register;
    I2C_Write8(OV490_STATUS_ADDR, 0);
    // Host write parameters to OV490 SRAM;
    For (i=0; i< numberIn; i++)
    {
    I2C_Write8(HOST_CMD_PARA_ADDR+i, *(paraIn+i));
    }
    //Host send I2C CMD to OV490 to start task:
    I2C_Write8(OV490_HOST_INT_ADDR, host_cmd);
    // Host check OV490_status_register val to determine whether the task is
    finished or not while (I2C_Read8(OV490_STATUS_ADDR) != STATUS_FINISH)
    {
    // if task is not finished, wait n ms;
    Host_wait(n);
    }
    // Host read results from OV490 SRAM;
    For (i=0; i< numberOut; i++)
    {
    *( paraOut +i) = I2C_Read8(HOST_CMD_RESULT_ADDR+i);
    }
    }


    unsigned char paraIn[5] = {
    0x7B, // [7:1], slave address: 0x7A, [0], 1: read
    0x00, //high 8 bit address
    0x01, //low 8 bit address
    0x00, //reserved
    0x00 //8bit address access
    };
    unsigned char value=0;
    HostControl_GetEx(CMD_SNR_REG_ACCESS, paraIn, sizeof(paraIn), &value,1);

    With the above API, first set the address to 964 0x7a.The value of 0x65 for 964 is then read.The register of 10640 is read with this value.The register of 913 is accessed through the value of the 0x5c register.Access the different 913/1640 by setting the 0x4c register of 964.

    thanks.
  • hi zoe
    I found the reason. I used two ov490.One can only control two ports.I can read the data using another one.

    thanks