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.

[参考译文] INA226:同一I2C总线上的16芯片寻址问题。

Guru**** 2905430 points

Other Parts Discussed in Thread: INA226, INA226EVM

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/642117/ina226-issue-with-addressing-16-chips-on-the-same-i2c-bus

部件号:INA226

我在处理同条I2C总线上的16 INA226芯片时遇到了问题。 我已按照数据表中的指定设置了所有地址PIN,但出于某种原因,我只能看到其中的一些。 我通过从总线断开除一个芯片以外的所有芯片,并扫描总线的地址来逐个验证每个芯片。 我还使用示波器快速检查了I2C总线,没有什么问题,只有TXS0104电平换档器在拉线时导致的极小过冲。

这里还有一个表格,我从总线中找到了哪些地址。 列出的是芯片地址应该是什么以及从Linux看到什么。 有什么想法,可能是什么问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jaakko
    您是否在地址引脚和SCL,SDA,VS或GND引脚之间使用电阻器? 我们更喜欢直接联系。
    另外,我有点困惑-您是否说当您在总线上发送地址0x48时,0x4c处的设备会响应?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不是在A1和A0上使用直接连接到引脚的串联电阻器。 当我扫描整个总线的I2C地址时,我只得到表上标有绿色的地址。 即使我的16个IC都焊接在板上。

    因此,在表中,“地址”列将A1/A0配置告知I2C从属地址(来自数据表)。 在总线上仅连接具有A1/A0配置的特定器件时,总线列上的Addr可告知从I2C总线读取的地址(扫描所有I2C总线地址并查看哪些响应)。

    例如,当我在总线上发送地址0x48时,没有响应。 当我寻址0x4c时,一些IC会响应(不确定哪个)。 由于某些原因,将SDA或SCL连接到A1或A0的IC的地址不正确。 Linux I2C通信时钟是否存在问题,导致IC无法正确锁定其地址?

    我可以尝试使用例如Arduino来测试电路,看看是否是Linux设置导致了问题。

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

    Jaakko

    我建议缩小调试工作的范围,一次只集中于一个部分。  如果可以,请单独测试每个部件,而不是总线上的其他部件。  或者将一个部件的地址更改为所有可能的地址,并确保控制器可以与每个地址进行通信。

    如果您怀疑I2C通信有问题-您可以使用示波器检查SCL和SDA线是否显示您所期望的内容。

    要确定发送命令时哪个部件正在响应,请尝试将总线电压强制到一个设备,并查看它是否返回该总线电压的相应代码。  如果您一次只做一个,您可以跟踪哪些人正在响应,哪些人正在响应。

    此外,如果I2C总线上的上拉电阻器太小或太大,可能会影响通信。  如果这是一个潜在的问题,或者可能是主控制器不能同时驱动16个零件(可能可以,但谁知道),那么调整放大或缩小拉杆可能会有所帮助。  此外,尝试以400kHz或更低的速度运行I2C总线,甚至以不同的速度运行,以确保这也不是问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议缩小调试工作的范围,一次只集中于一个部分。 如果可以,请单独测试每个部件,而不是总线上的其他部件。 或者将一个部件的地址更改为所有可能的地址,并确保控制器可以与每个地址进行通信。
    这就是我所做的。 一次仅将设备连接到总线并检查其响应的地址。 下表与此相对应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您没有机会拥有INA226EVM? 从正常工作的设置开始总是很好的,此外,您可以将控制器与INA226板分离,并单独测试每个子系统。

    如果我正确调用,则在每个i2c事务的开头确定设备地址。 最好看看总线上是否有任何嘈杂的瞬变或伪影。 非常怀疑最适合您的地址是与稳定电压(如GND和vs.)相关联的地址
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很遗憾,我没有EVM。 我有一些Arduinos和STM32 EVkit,所以我将尝试使用这些工具来查看我是否可以看到所有正确的地址(相比Linux环境,MCU对I2C总线的控制更好)。

    线路上也可能会有一些噪音...需要更彻底地确定I2C线路的范围。

    谢谢!
    Jaakko
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jaakko
    我希望您能够跟踪应用程序主板的任何问题。 我有一段时间没有收到您的回复,所以我希望没有任何消息是好消息,但如果您有更多信息或问题,请回来,我们将为您提供进一步的帮助。