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.

Write Format To Remote I 2 C Slave 的问题

TI 工程师

  你好,关于[AN-2173 I2C Communication Over FPD-Link III with Bidirectional Control Channel]有个问题,

  第4页的Figure 5. Write Format To Remote I 2 C Slave,关于这个图看不明白,REMOTE I2C的数据是谁发的,关于这个图,能否举例说明一下。

  或者有什么资料,我可以先看一下。

  • 楼主你好!

    这幅图表示了向I2C设备从机发送数据的过程。

    这个地方表达了以下过程:

    首先主机发送开始,然后发动设备地址,从机应答,主机发送寄存器的地址,从机应答。

    上图表达了这个过程:主机发送寄存器地址对应的数据内容,从机应答,主机发送停止,传输结束。

  • 楼主如果了解I2C传输的协议,那么这个图应该很容易理解。楼主可以看下相关资料

    Remote I2C是远端设备,他的数据是由主机发送的,将会被记录在远端设备的寄存器中。

  • 第一行“HOST I2C”这个图的流程我能理解,不理解的是第二行“REMOTE I2C”的这个流程

    你的意思是说,HOST给从机发送数据的时候,远程设备也能收到HOST发送的数据?是这个意思吗

  • 第二行只是表示了Remote端的数据状态。有没有发现其实第二行跟第一行的内容基本上都是一致的?在理解这幅图的时候,只需要看第一行,HOST,就够了。第二行只是表示Remote端将会收到HOST端的什么数据,并且标注出来Remote端的反应

  • 是的,你说的AN-2173文档中,I2C通信有三种:

    1. HOST  I2C和local I2C之间的通信。

    2.  HOST I2C和Remote I2C之间的通信。

    3.  HOST I2C和Remote Slave I2C之间的通信。

  • 恩。这3种通信,我看data sheet有写。

    我现在的现际情况是这样的,

    TOUCH +  MCU + 928 + 927 + XXXX

    现在的应用是TOUCH 的数据通过I2C给MCU。

    MCU在把数据通过BACK CHANNEL(928+927)发送到XXXX。

    看了928和927的芯片手册,是有BACK CHANNEL这个功能。

    如果MCU 要设置928的寄存器, 这个通信是你上面说的1的方式? 

    如果MCU要设置927的寄存器,这个通信是你上面说的2的方式?

    如果MCU发把数据发送到XXXX,这个通信是你上面说的3的方式?

     

  • 是的,MCU和928就是属于local I2C的通信方式。

  • MCU和927就属于remote I2C的通信方式,和xxx就属于remote Slave I2C的通信方式。

  • 那通过我们这边的理解,下面这样的理解对不对?

    利用928的Remote功能,把927的7bit的 Remote地址写在 928的 Remote ID 寄存器(0x07)上,再利用 Slave Device 功能,把 xxxx的 地址写到928的  Slave ID 寄存器上,并且给xxxx起一个别名(Alias),这样我们就可以认为928和927 成为了一个通路,数据可以通过928和927直接发给XXXX.

    这样如果HOST  I2C想要给xxxx发送数据的时候,是不是就跟2楼的I2C发送数据格式图中,第一行"HOST  I2C"的一样,只不过把 “SLAVE ADDRESS”改成xxxx的别名地址?后面"OFFSET"寄存器就是xxxx上的寄存器?

     

  • 我按照此方法,未成功。我的意图是:利用主机的IIC , 将0x06通过UB949写UB948的0x43寄存器内

    我的步骤:

     1、UB949的0x03写入DA

    2、UB949的0x07写入0A

    3 、UB949的0x08写入0A

     4、UB949的0x0a写入43

     5、UB949的0x0a写入06

    请TI工程师回答

  • 不是,如果要和xxxx通信,slave address的地址为xxxx的从机地址,而offset register的地址为Slave Alias的地址,这里的Slave Alias还不是指的927的Slave Alias的寄存器地址,而是928的Slave Alias的寄存器地址。关于这个remote I2C 通信我也是是通过看手册得到的结果,没有实际去验证过,所以希望你能及时反馈一起分享给大家。

  • 在楼主的Touch+MCU+ 928+927+xxx的例子中,三种通信方式分别是这样的;

    1.  MCU和928的通信,这个是最简单的,slave address即为I2C Device ID。

    2. MCU和927的通信,这个要配置两个寄存器,一个是927 ID,一个是923 Alias ID。

    3. MCU和xxx的通信,也是配置两个寄存器,一个是 slave ID,一个是928 Alias ID。

  • 有几个问题需要确认

    1.slave address的地址为xxxx的从机地址--〉这个地址是XXX的REMOTE的7BIT地址?

    2.offset register的地址为Slave Alias的地址,这里的Slave Alias还不是指的927的Slave Alias的寄存器地址,而是928的Slave Alias的寄存器地址-〉这个Slave Alias,你的意思是说是XXXX的某一寄存器。

    如果我理解的不对,你能否按着我的需要,简单举例,怎么设定928,927的寄存器,并且举例说明一下MCU给XXX发送数据I是怎么发的。

    我现在还处在设计阶段,硬件还没有,要不我可以自己试一下。

    你们的DATASHEET上没有举例子,只有文字说明,实在不好理解。

     

     

  • 1.slave address的地址为xxxx的从机地址--〉这个地址是XXX的REMOTE的7BIT地址?

    A: 这个地址是remote Slave ID[0]的地址。也就是初始化928的0x08的寄存器地址。

  • 2.offset register的地���为Slave Alias的地址,这里的Slave Alias还不是指的927的Slave Alias的寄存器地址,而是928的Slave Alias的寄存器地址-〉这个Slave Alias,你的意思是说是XXXX的某一寄存器。

    A: 这里的Slave Alias的寄存器,指的是928的寄存器0x10。不是xxx的某一寄存器。

  • 越说越迷糊,我现在的应用是

    TOUCH +  MCU + 928 + 927 + XXXX

    现在的应用是TOUCH 的数据通过I2C给MCU。MCU最后在发送到XXXX

    现在举例来说,XXXX的DEVICE地址是0XFF,给XXXX的0x20寄存器发送数据,

    请问928,928相关寄存品要怎么设定,另外能否举例说明一下数据的发送。

  • 3. MCU和xxx的���信,也是配置两个寄存器,一个是 slave ID,一个是928 Alias ID。--〉我现在是这个应用,slave ID是XXXX的ID?把这个slave ID写到928的0x08这个寄存器上?

    一个是928 Alias ID--〉这个是Alias ID是指什么,现在slave ID有了,剩下的不是应该知道寄存器地址了?

    比如,我要给XXXX的0x02这个寄存器写AA这个数据,这个要怎么实现?

  • 能否把你的座机电话告诉,我打电话咨询吧?

  • 以前看过一篇文档有举例分别介绍三种通信方式,我找找看,然后发给你。

  • 就是这篇文章,是以DS90UB913/914这对serdes举例的,可以对照DS90UB913/914的数据手册来看,我觉得DS90UB913/914的数据手册介绍的比较详细。

    有什么问题再讨论。 这种remote I2C通信方式以前我也没见过。

    snla222.pdf
  • 这个资料太有用了,非常感谢。我仔细看一下,有问题在请教。

  • 你好,这个资料我昨晚大概的看了一下,我的应用应该是“3. Communication with Remote slave/Camera attached to Remote SER”,看了这块的举例说明,我基本明白了DES和SER的相关寄器的设定了。

    我想在确认一下,我看都是在DES这边的设定,SER是不需要设定,对吗?

    另外,如果要发送数据的话,按照2楼贴子回答的。我想在确认一下。之前看你的回答“slave address的地址为xxxx的从机地址,而offset register的地址为Slave Alias的地址”

    如果我现在要是给XXXX的0X20这个寄存器写FF数据。

    那按照你回答的,我现在就是不理解,发送数据的时候,也没指定XXXX的0X20这个寄存器。FF这个数据就能指定写到0X20这个寄存器上吗?

     

  • 请问现在通了吗?

x 出现错误。请重试或与管理员联系。