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.
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传输的协议,那么这个图应该很容易理解。楼主可以看下相关资料
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的方式?
那通过我们这边的理解,下面这样的理解对不对?
利用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这个寄存器上吗?