您好,
我在这里完全是新手,有点迷路了,所以如果我可以问一些非常明显的问题,或者已经问过这个问题,请道歉。
我想将TCA9544A用作四个相同光传感器之间的开关,它们具有相同的I2C地址。 但我不能完全理解它是如何运作的。 我必须使用ATmega328p作为Master。
首先,我必须启用数据表中的地址的信道,对吗? 之后我必须做什么才能与我的奴隶沟通? 我是否可以使用从属地址发送I2C命令? 或者我是否需要注意其他事情?
是否有任何示例可以让我了解沟通的工作方式?
非常感谢你的帮助
菲利普
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.
您好,
我在这里完全是新手,有点迷路了,所以如果我可以问一些非常明显的问题,或者已经问过这个问题,请道歉。
我想将TCA9544A用作四个相同光传感器之间的开关,它们具有相同的I2C地址。 但我不能完全理解它是如何运作的。 我必须使用ATmega328p作为Master。
首先,我必须启用数据表中的地址的信道,对吗? 之后我必须做什么才能与我的奴隶沟通? 我是否可以使用从属地址发送I2C命令? 或者我是否需要注意其他事情?
是否有任何示例可以让我了解沟通的工作方式?
非常感谢你的帮助
菲利普
您好Phillipp:
“我在这里完全是新手,有点迷路了,所以如果我可以问一些非常明显的问题,或者已经问过这个问题,请道歉。”
无需道歉! 这个论坛的目的是让那些不熟悉I2C和我们产品的人能够公开地向其他在这个主题上有多年经验的人提问并得到答案。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
“我必须使用ATmega328p作为主中继器。”
-使用此MCU上的I2C端口非常重要,使用GPIO引脚可能使用推挽式架构,这可能会影响卷读数并损坏通信设备。 您将需要利用漏极开路体系结构的引脚。 MCU应该有专用的I2C引脚用于此目的。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
“首先,我必须启用数据表中地址不在的通道”
TCA9544A具有可编程地址。 地址取决于您将引脚a0,A1和A2连接到的内容。
假定将a0,A1和A2连接到GND的设备的地址将为:11.1万0或0x70h
如果a0,A1和A2通过上拉电阻器连接到Vcc:11.1011万1或0x77h
最后一位是R/W,如果1是读取,0是写入。 您将要使用0首先写入寄存器。
启动条件启动后,您将发送带有R/W位的从属地址。 如果从地址正确,您应看到SDA线路上的TCA9544A下拉,表示发送R/W位后有ACK位。 这将告诉您设备已收到您发送的消息。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
“我以后要做什么才能和我的奴隶沟通? 我是否可以使用从属地址发送I2C命令? 或者我是否需要注意其他事情?"
从设备接收ACK后,您需要将一个字节的数据发送到TCA9544A的控制寄存器,以打开所需的信道。
在上表中,您不关心正在写入而不是读取的INT位。 D3也是"不在乎"一词。 B0,B1和B2是您关心的唯一位。 此设备一次只允许您打开一个信道,在您的情况下,这正是我们想要的。 此外,启动时,所有频道都关闭。 假设您要打开通道0.....
您可以发送以下字节0000 0100或0x04h以选择ch0
或者,您可以发送1111 1100或0xFCh,但仍可打开ch0。 只要您不与两个LSB混在一起并且具有位3 A 1,就会选择Ch0。
您应该在最后一位之后获得ACK,然后可以启动停止条件。
以上示例显示了对TCA9544A的完整写入命令。 所有寻址位都被拉至GND,由A2,A1,a0上的零位显示。 控制寄存器写入0x04h。 然后启动停止条件,这将打开ch0。
在这里,您可以重新启动启动条件,并与ch0上的光传感器通话。
在获得所需的所有数据后,您可以启动停止条件,然后重新启动,并通过发送地址位和R/W位与TCA9544A通话。 确认后,您可以再次写入控制寄存器并发送0000 0101或0x05h。 获取ACK,然后启动停止条件以激活CH1。
从这里,只需冲洗并重复即可。
我希望这能有所帮助!
-Bobby