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.

ds90ub927 i2c数据透传给ds90ub928,可以透传但通信失败

Hi  Ti

       目前928测接的屏幕显示正常,主控SOC可以读取到927 928的ID。

927的i2c数据透传给928, 目前在928测可以测量到SCL SDA脚出来的波形。但928接入的从设备touchscreen没有ack响应,导致i2c通信失败。

截图为928 SCL SDA脚测量的波形。

初始化如下:

log("[read id927] 0x00= 0x%02x\n", ds90ub927_read_reg(0x00));

ds90ub927_write_reg(0x03, 0xDA); // pass through enable
ds90ub927_write_reg(0x07, ADDR_GT9XX_8BIT);//UB927 set Slave ID
ds90ub927_write_reg(0x08, ADDR_GT9XX_8BIT_ALIAS);//UB927 set Slave Alias

ds90ub927_write_reg(0x11, 0x33);

log("[read id928] 0x00= 0x%02x\n", ds90ub928_read_reg(0x00));

ds90ub928_write_reg(0x21, 0x55);
ds90ub928_write_reg(0x26, 0x0F);//SCL High Time
ds90ub928_write_reg(0x27, 0x15);//SCL Low Time

麻烦协助分析一下原因,谢谢。

  • 您好,和touchscreen 通讯,只需要配置touchscreen的Device ID 和slave Alias ID, 并且这两个ID可以是相同的。
    touchscreen的7bit从机地址是什么? 看是否地址写错,导致无法通讯?
  • 如之前寄存器配置,已经在927上设置过Device ID 和slave Alias ID,并且相同。 从机7bit 地址是0x14。 

    #define ADDR_GT9XX_8BIT 0x28 //7bit addr 0x14
    #define ADDR_GT9XX_8BIT_ALIAS 0x28//7bit addr 0x14

    ds90ub927_write_reg(0x07, ADDR_GT9XX_8BIT);//UB927 set Slave ID
    ds90ub927_write_reg(0x08, ADDR_GT9XX_8BIT_ALIAS);//UB927 set Slave Alias

    1. 是不是只需要设置927的Device ID 和slave Alias ID就可以了?

    2. SOC到927的波形是标准的400Khz,928到touchscreen的波形只有70Khz左右。

       通过配置928的

       ds90ub928_write_reg(0x26, 0x0F);//SCL High Time
       ds90ub928_write_reg(0x27, 0x15);//SCL Low Time

      可以把928输出的波形设置为400K,

      想问下是不是只需要设置928的 SCL High Time  /SCL Low Time 就可以了

  • 问题比较急,麻烦多多支持下,谢谢。
  • 您好,是的,927 只需要配置I 2C pass through(0X03), slave ID(0x07)和slave Alias ID(0x08)就可以了。
    928 作为master proxy,配置SCL High Time /SCL Low Time就可以了 。
    再检查下硬件方面呢。