Post Go back to editing

ADV7511W all registers read 0x13,why?

hi, i have a problem,when i write adv7511w by i2c with address 0x72,it seems to be normal,but when i read from adv7511w,all registers eq 0x13,i dont know why?

and,i find many users have faced this problem,so,how to fix it?

i'm sure the hpd pull high ,and my schematic as follows:



add pic
[edited by: NewBee at 8:58 AM (GMT 0) on 2 Sep 2019]
Parents on Sep 9, 2019 10:10 AM in reply to PoornimaSubramani

One thing to keep in mind is we use 8-bit addressing while some drivers use 7-bit addressing.  If your driver expects 7-bit addressing then you have to right the 8-bit address by one before sending it to the driver.  Just a thought.  0x74 >> 1 -> 0x39

  • thanks.

    what i use is 8-bit addressing.and write & read both can receive "ack".

    I2C_write_8bit(0x39,0x41,0x10);usleep(1000);
    I2C_write_8bit(0x39,0x98,0x03);usleep(1000);
    I2C_write_8bit(0x39,0x9A,0xE0);usleep(1000);
    I2C_write_8bit(0x39,0x9C,0x30);usleep(1000);
    I2C_write_8bit(0x39,0x9D,0x61);usleep(1000);
    I2C_write_8bit(0x39,0xA2,0xA4);usleep(1000);
    I2C_write_8bit(0x39,0xA3,0xA4);usleep(1000);
    I2C_write_8bit(0x39,0xE0,0xD0);usleep(1000);
    I2C_write_8bit(0x39,0xF9,0x00);usleep(1000);

    I2C_write_8bit(0x39,0x15,0x00);usleep(1000);
    I2C_write_8bit(0x39,0x16,0x30);usleep(1000);
    I2C_write_8bit(0x39,0x17,0x02);usleep(1000);
    I2C_write_8bit(0x39,0x56,0x1a);usleep(1000);

    I2C_write_8bit(0x39,0x18,0x40);usleep(1000);
    I2C_write_8bit(0x39,0xAF,0x06);usleep(1000);

    I2C_read_8bit(0x39,0x41,&read_buf); xil_printf("0x41=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x98,&read_buf); xil_printf("0x98=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x9A,&read_buf); xil_printf("0x9A=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x9C,&read_buf); xil_printf("0x9C=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x9D,&read_buf); xil_printf("0x9D=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0xA2,&read_buf); xil_printf("0xA2=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0xA3,&read_buf); xil_printf("0xA3=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0xE0,&read_buf); xil_printf("0xE0=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0xF9,&read_buf); xil_printf("0xF9=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x15,&read_buf); xil_printf("0x15=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x16,&read_buf); xil_printf("0x16=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x17,&read_buf); xil_printf("0x17=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x56,&read_buf); xil_printf("0x56=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0x18,&read_buf); xil_printf("0x18=%x\n\r",read_buf);usleep(1000);
    I2C_read_8bit(0x39,0xAF,&read_buf); xil_printf("0xAF=%x\n\r",read_buf);usleep(1000);

  • ok,thanks.but it can not solve the problem.

  • Hi,

    Are you using FPGA on your custom board ? If so please try FPGA reference design forum:https://ez.analog.com/fpga/.Please crosscheck with reference schematics of ADV7511W
    And also reading back is a 2 step process. First you write the index register address you want to read back from and then send another Start bit, slave read address and then read back the data.  The second Start is sometimes referred to as a repeat start.

    Thanks,

    Poornima

  • HI,

    YES,i am using fpga on our custom board,and it is zynqMP.

    Today,i move the operation from xilinx SDK to linux,when i use i2c-tools,it work but also has a problem.

    i can read and write some registers.like :i read reg-0x15=0x00,and write 0x10,then read again but it back 0x00 from reg-0x15.

    whether the PD pin high or low,the i2c address is always  0x39,which mean 0x72.

    whether the PD pin high or low,i read 0x41 & 0x42 register, reg-0x41=0x50,reg-0x42=0xf0,and i can not config reg-0x41 to 0x10,it read back reg-0x41=0x50.

    note: i measure the hpd=high,i measure the PD when i change the power.

    so ,what can be the reason ?

    so ,i have to use your lib & driver to config registers? 

  • Reply
    • HI,

      YES,i am using fpga on our custom board,and it is zynqMP.

      Today,i move the operation from xilinx SDK to linux,when i use i2c-tools,it work but also has a problem.

      i can read and write some registers.like :i read reg-0x15=0x00,and write 0x10,then read again but it back 0x00 from reg-0x15.

      whether the PD pin high or low,the i2c address is always  0x39,which mean 0x72.

      whether the PD pin high or low,i read 0x41 & 0x42 register, reg-0x41=0x50,reg-0x42=0xf0,and i can not config reg-0x41 to 0x10,it read back reg-0x41=0x50.

      note: i measure the hpd=high,i measure the PD when i change the power.

      so ,what can be the reason ?

      so ,i have to use your lib & driver to config registers? 

    Children
    No Data