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.

[参考译文] I2C总线长度

Guru**** 2455560 points
Other Parts Discussed in Thread: TCA9802

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/604472/i2c-bus-length

主题中讨论的其他部件:TCA9802

尊敬的先生/女士

我们设计了一个系统,使用7位I2C地址,并将30个从属板连接到同一I2C总线上的主板 我的主板和从板与PCB或Rigid+Flex PCB连接。

附加的是我们在将10,20和30从机连接到大脑/主机后捕获的I2C波形。 脑/主控和每个从属设备使用具有3.3V电压的4.7K上拉电阻,每个从属设备都生成自己的3.3V电压,并且GND在整个系统中是通用的。

现在我的问题是,如果我们使用10位地址将更多从属设备连接到同一I2C总线,是否允许我根据附加的波形在同一总线上毫无问题地进行连接? 您能否指导我们如何检查和验证相同的信息? 较新的从属设备将与较早的10/20/30从属设备相同,并且将具有4.7K的上拉

在螺母外壳中,如果我们使用10位I2C地址,并且大脑与1020从属设备连接(大脑和从属设备与PCB和连接器连接,没有电缆用于连接它们),我们检查的参数以及如何确保我可以在物理上执行相同的操作。 请提供帮助/指导,以便我们扩展系统。

谢谢

Krunal Shah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Krunal:

    我看不到您提供的波形有任何问题。 通常,添加更多从属设备/连接时,需要注意以下几点(除了维护唯一地址):

    -附加电容,可减慢信号转换速度(特别是无驱动的低至高信号转换)
    -由于多个并联上拉电阻器,因此降低了有效上拉电阻,这使得每个器件的漏极开路驱动器更难产生足够的“低”电平电压。

    第二项有时可以通过调整上拉电阻来解决,但为了保持数据速率,有效电阻需要随着总线电容的增加而降低。 一旦达到某个点,最佳解决方案通常是添加一个缓冲器设备,以帮助将总线分成不同的段(每个段的电容较低),并在它们之间重新驱动I2C信号。

    以下是有关为I2C总线选择上拉电阻值的应用说明,供您参考:

    www.ti.com/.../slva689.pdf

    最大
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Krunal,

    只是为了验证我的理解,您目前有10,20和30个具有7位寻址的从属设备,并且您想再添加10,20和30个具有10位寻址的从属设备,这是否正确?

    一条总线上可有多少从属设备的唯一限制因素是唯一地址的数量(7位=127,8位 =256,10位=1024),总线电容的最大值为400pF。这也是为什么,通常 I2C是相对较短的通信距离。 因此,它取决于您作为从属设备添加的设备,它们添加到总线的电容以及固有的痕量电容。 确定这一点的最快方法是将每个从属设备的已知电容相加,但您也可以观察连接从属设备的总线上的已知波形,并根据上升时间确定电容(从20 % 到80 % 的上升时间为1.4Τ, 和 τ=RC)。

    如果我误解了您的问题,或者您有任何其他问题,请随时在此处发布。

    此致,

    Eric Hackett

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Eric

    是的,你是对的。我们想让更多的奴隶超过30。 实际上,我们想在主服务器上添加大约120到300个从属服务器。

    现在,我们每个板上的总线电容为22pF (我们从PCB设计工具获得的值),因此,如果我们将30个从属设备连接到主设备,则电容为660pF,因此我们已经超过了400pF电容范围, 我们仍然能够进行通信,从我分享的波形中,您可以看到波形与主波形和30次从属波形相同。

    请注意,在我们拥有UC的每个从属设备上,UC正在接收来自主设备的数据,并使用该数据在LED上显示章程/编号

    因此,我们需要测量第30从站总线的上升时间(从20到80 %),然后按如下所示进行计算以获得准确的电容,是否正确?

    1.4 *4.7K*c =从波形得到的上升时间

    4.7K上拉对总线电容上的每个从属设备有什么影响? 每个拉取都有3.3V电压,在所有从属设备上本地生成。

    如果我们可以进行其他测试,请告知我们。

    谢谢
    Krunal Shah
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的

    请您推荐I2C缓冲器,我们可以在I2C总线上使用,并将系统扩展到1024从属。 我们可能需要在每30或60个显示器之后添加I2C缓冲器,这将帮助我们克服I2C限制。

    谢谢

    Krunal Shah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Krunal:

    1)您将使用何种I2C模式?  标准? 快速模式? 快速模式Plus?

    2) 您将在主控制器和从控制器上使用什么电压(Vcc)?  您是否需要翻译/级别转换?

    3) 所有主设备和从设备的VIL和VOL限制是什么。  您需要确保缓冲区,主服务器和从属服务器不存在不匹配。

    4) 您 是否正在执行轮询体系结构? 还是广播,每个从属设备都有唯一的地址?  您可以使用I2C mux来隔离轮询体系结构中的上限负载,也可以使用并行和/或串行缓冲来隔离电容负载。

    5)估计总线上有多少电容负载,包括印刷电路板轨迹,设备,电线等

    我有一个示例图表,应该有助于填写。  这将让我们了解您的需求,然后我们可以推荐正确的缓冲区或mux。

    Francis Houde

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的弗朗西斯

    请在下面找到答案

    1)我们使用I2C快速模式

    2)我们使用相同的I2C电平,主从I2C在3.3V上工作。 我们只需要缓冲,而不需要转换/级别转换

    3)主VIH (最小值= 2.31V,最大值= 3.3V),VIL (最小值= 0V,最大值= 0.99V),VOH (最小值= 3.15V),VOL (最大值= 0.15V)

    从属VIH (最小= 2.145V,最大= 3.3V),VIL (最小= 0V,最大= 1.16V),VOH (最小= 2.4V), 音量(最大= 0.4V)

    4)我们正在使用 广播和集群机制作为从属ID (10个从属设备具有相同的7位 从属设备ID),我们需要系列缓冲器(我们的系统块作为附件供您参考)

    5)每个从属设备的SDA线路的电容为22pF,主设备的电容为15pF。 我们正在使用小桥PCB将主控制器与从属控制器连接,从控制器与从属控制器连接,因此系统中没有电线连接。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Krunal:

    我有点困惑,如果所有设备在同一总线上,地址相同,您将如何与它们通信。  大多数从属硬件地址,不执行动态寻址。  

    我还想知道,您是否知道每个从属设备甚至在包含印刷电路板痕量电容之前都可以添加5-10pF。  应添加到您的估计中。  

    一般而言,大多数人使用多路复用器与具有相同从属地址的多个设备通信。  这实现了两个目的,它允许您在每个从属设备之间进行轮询,而不会产生冲突,它还可以隔离电容,因此有时不需要缓冲区。   我还看到人们将缓冲区与MUX结合使用。  

    我认为 TCA9802是缓冲区的好选择。  TCA9802没有静态电压偏移,B侧不需要上拉电阻器,从而节省成本和空间。  它还具有稳定的电流结构,有助于信号完整性。  

    我从之前的帖子中得到,您希望这些"板"串联。  这些主板中的每块板都有10个从属设备,对吗?  我有点担心,如果你尝试将所有这些板串联起来,你的通信会因为每个板,缓冲器和mux的延迟累积而出现一些问题。  您可能希望了解更多并行架构,特别是如果您希望获得多达100个从属架构。

    Francis Houde

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的Francis Houde

    1)举个例子,我们在系统中总共连接了300个从属设备每个从属设备都安装了4位唯一ID IC,但我们将仅将这些唯一ID用于数据目的,而不是如下所述的I2C总线唯一ID

    现在,我们将每个从服务器组成10个群集,因此系统中将有30个群集。 现在,这些30个群集将具有唯一ID,因此系统中将有30个唯一ID。 现在,当我们将数据广播到一个群集时(意味着数据将传递到10个分配), 在这些数据中,我们将传递从属设备的4位唯一ID,因此从属设备将首先读取唯一ID,如果它匹配,它将使用该数据,否则它将丢弃数据。

    因此我们将添加这些缓冲IC,它们可能在30/60从属设备之后,我们的I2C线路信号不是所需的。

    2)每个从属设备的SDA线路的电容为30pF,而主设备在添加5-10pF后的电容为20pF,如您所述。

    3)在TCA9802或任何水獭缓冲IC中,如果我们将EN引脚直接连接到3.3V,是否会有并影响通信?

    4)所以我们想这样做

    主要(数量:1)--I2C1->........ 从属(编号 30)-->从属(No 31),具有这些缓冲IC,将I2C1转换为I2C2,然后传递到其控制器,然后再向前传递到下一个29个从属-->I2C2->...........               从属(编号 59)->从属设备(编号61),它具有这些缓冲IC,将I2C2转换为I2C3,然后传递到其控制器,现在再传递到下一个29个从属设备...等等...

    谢谢

    Krunal Shah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Krunal:
    您是否要使用微控制器来控制每个群集? 我认为每个群集中的微控制器都有唯一的地址,如果它看到主控制器要与该群集通信,它将启用该群集中的从属设备,然后进行通信。 您的申请是什么,我有兴趣了解。 如果必须串联连接太多缓冲区,则可能仍会出现问题,因为延迟会累积。 我想最坏的情况是降低数据速率。 TCA980x部件系列是实现此功能的理想选择。
    Francis Houde
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我假设您会这样做:

    如果是这样,这是一种有趣的实施方式。

    Francis Houde

    P.S.让我知道应用程序,只是好奇。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的弗朗西斯

    感谢您的意见和图表,

    我们的应用程序是我们有一个主服务器,没有连接到它的从属服务器,每个从属服务器都有显示消息的显示屏。 很抱歉,我无法在此详细介绍我们的申请。 希望您能理解。

    我们的每个从属设备上都有微型和唯一的ID芯片。

    因此,让我们以10个群集为例,每个群集将有10个从属设备,以便将100个从属设备连接在一起。

    现在,我们要做的是在通信开始时,首先读取每个从属设备的唯一ID,然后创建一个群集(具有10个唯一ID/从属设备ID)。 例如,假设10个从属设备具有1到10的唯一ID,并分配,并将在群集1中将其定义 为群集唯一ID 1。

    现在,当我们开始通信时,我们将根据群集唯一ID广播数据。 假设我们正在向群集1广播数据,从1到10将分配相同的数据。 现在,在该数据中,我们提供了从属设备的唯一ID,因此从属设备将决定数据是否属于它。 在将数据分配给所有群集之后,我们有一个通用GPIO通过所有从属设备运行,我们切换这些从属设备,以便所有从属设备都将显示(随每个从属设备安装的显示)它们一次拥有的数据。

    请找到随附的图表以供参考。 如果您有任何疑问,请告诉我。

    一个问题

    在TCA9802或任何水獭缓冲IC中,如果我们将EN引脚直接连接到3.3V,会不会对通信产生影响?

    谢谢

    Krunal Shah

    e2e.ti.com/.../I2C-Cluster.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的弗朗西斯

    我们已经订购 了一些TCA9802的样本 ,并随附了以下情形的通信波形,我们可以获得系统上显示的数据,但我们希望在放置缓冲IC之前包含更多从属设备。

    主--> 30个从属-->(BI) TCA9802 (BO)-->30个从属。 每个从属设备有4.7K上拉。

    SDA_BI = TCA9802的数据输入

    SDA_BO= TCA9802的数据输出

    请您帮助我们改善沟通。

    谢谢

    Krunal Shah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Krunal:

    B侧是否安装了上拉电阻器?  您是否有示意图?  您不能在TCA980x设备的B侧放置上拉。  它具有集成恒流源,将对正确解释低电流产生不利影响。  

    Francis Houde