i2c主设备可以驱动的i2c从设备的最大数量是多少?有哪些物理限制因素?
i2c主设备可以驱动的i2c从设备的最大数量是多少?有哪些物理限制因素?
Answers:
软件限制因素是用于从站的地址大小:7位或10位,分别支持127和1023个设备。从物理上讲,有两个限制。首先,总线的物理尺寸,因为总线仅用于短期运行(IC间部分)。如果总线太大,则需要处理电容性负载和传播延迟效应。其次,某些设备不能支持全部I2C地址。例如,MPU6050陀螺仪仅支持两个地址,某些设备保留用于特殊目的的特定地址。
寻址限制了设备的数量-有些设备可以使用10位寻址(很少使用),这将地址数量限制为1024。有少数“保留”地址。
I2C(而不是“双线总线”或其他任何想称为类似总线的总线)应遵循NXP(飞利浦)标准,UM10204 I2C总线规范和用户手册。那应该是您的主要参考文件,而不是其他地方存在的各种解释和子集。
器件的最大数量将受到最弱输出的驱动能力(进而决定最小的上拉电阻),布线和输入电容以及工作模式/频率的影响。如果必须超过最大电容,请参见第7.2节,在最大允许总线电容以上操作:
I2C指定2个地址长度(7位和10位),这在理论上分别给出128和1024个不同的地址最大值。
但是,有一些保留地址,例如0x00(常规调用)。这进一步限制了地址空间。
如果要构建直接控制I2C设备的系统,则可以使用保留的地址供自己使用,但系统将不再符合I2C标准。
除了寻址之外,还有物理总线限制。总线上的每个设备都需要能够在一定时间范围内将总线拉低(取决于总线速度)。如果总线上有很多电容,则设备可能无法将SDA拉低足够快,并且上拉可能无法使SDA拉回足够快。
现在,只需一点驱动程序硬件即可解决硬件问题。我现在正在开发一个项目,该项目使用I2C与数十米的设备进行通信。主总线使用24v,每块板都有一个驱动器,可将其降压至3.3v。
在坚果壳中,可以克服I2C的物理限制。寻址可以克服,但前提是您可以直接控制设备。
主机可以驱动的从机数量的主要限制通常是由电气因素引起的,例如总线电容,泄漏,驱动强度等。如果可以构造一个寄生电容为零且泄漏为零的从机,并且可以连接它们,如果电容走线为零,那么总线电容就不会成为一个因素,但实际上,这两种假设都不会成立。
另一方面,寻址彼此“了解”的设备并不是真正的问题。设计一种外围设备将是微不足道的,该外围设备将允许使用一个读和一个写地址连接数十亿个芯片。只需指定每个设备必须具有唯一的四字节ID,并且始终需要侦听写入地址,但必须退出前四个传输的数据字节与其ID不匹配的每个事务。进一步指定设备只有在听到的最后一个写入事务与它们的地址匹配时才可以响应读取的地址。
如果要增加使主机确定所有连接的从机的ID的能力,则可以为此保留一些特殊的ID范围。例如,可以说如果第一个ID字节是FF,那么接下来的四个字节将是一个掩码,后面的四个字节将是一个ID;如果设备指定的掩码部分与命令中指定的部分匹配,则设备应保持连接状态(并确认最后一个ID字节)。这将允许主机使用64个事务标识至少一个设备,并使用每个62个或更少的事务标识其他设备。也许不是最快的设备识别方法,但在数十亿个设备ID的搜索空间中也不错。
简短答案:这取决于
如果您拥有(通用)设备的7位地址最多104个设备(128个地址-保留地址(保留0x00-0x07和0xF0-0xFF))(有一定的限制)最多可寻址1024个设备(您可以将7位和10位设备混合使用,最多可以达到1136个设备)
现在有局限性:大多数简单设备只能配置为2到8个不同的地址。您可以通过自定义订购具有不同基址的设备来克服这一问题(但这通常意味着您订购的设备数量最少)。还有硬件限制(主要是总线电容),但这可以通过特殊的i2c驱动程序解决。
如果您想在更远的距离上连接许多设备,我建议还是使用现场总线!I2C用于在设备(例如电视机)内部进行通信。我自己使用RaspberyPi来使用I2C,RaspberyPi的外部电缆长达50厘米(即使使用T型截面,您也不应在总线系统中使用)。它出奇地好。
连接到总线的设备数量仅受总允许总线电容400 pF的限制。由于大多数具有I²C接口的IC都使用低功耗,高阻抗CMOS技术,因此在达到最大电容之前,可以将许多IC连接到I²C总线
使用添加的多路复用器芯片(例如TCA9544A)或缓冲器(例如PCA9515B),您可以克服所有限制 -总线电容和寻址。
您可以将3个具有相同地址的设备放在一个多路复用器后面,然后仅选择其中一个,与之通信,然后再选择另一个。当然,软件会变得更加复杂。
如果布线较长,可以在中间放置一个缓冲器,以克服电容限制。