微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > Write Format To Remote I 2 C Slave 的问题

Write Format To Remote I 2 C Slave 的问题

时间:10-02 整理:3721RD 点击:

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通信方式以前我也没见过。

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

你好,这个资料我昨晚大概的看了一下,我的应用应该是“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这个寄存器上吗?

 

请问现在通了吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top