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.

[参考译文] MSP430FR5994:当1个从器件未通电时、I2C 通信失败。

Guru**** 2589300 points
Other Parts Discussed in Thread: MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/727323/msp430fr5994-i2c-communication-failed-when-1-slave-is-not-having-a-power

器件型号:MSP430FR5994

大家好、

这是 Anil。 我正在使用 I2C 通信处理 MSP430FR5994。 在单个 I2C 通信中、我将 BQ34Z100PW-G1和 LC709203F 连接为从器件。 我将使用两个从器件读取电压。

如果两个器  件都通电(对于 LC709203F 为+3/+4V 或 BQ34Z100PW-G1为+12V)、那么使用 MSP I 能够读取 IC 的电压。  但现在的情况是、我特意移除 了 BQ34Z100PW-G1的电源、   而 LC709203F 则已通电。   根据我的知识 、MSP 将尝试读取电压、因此 LCM709203F 应 向 MSP 提供电压、但一旦我移除 BQ34Z100PW-G1的电源、字词 MSP 将无法从两个从器件读取电压。

在上述情况下、我对 BQ34Z100PW-G1的代码进行了注释、然后 从 LC709203F IC 获得正确的结果。  

那么,现在我的问题 是,如果从设备没有电源,并且控制器正在尝试与该从设备以及其他也在 I2C 通信中进行通信,那么所有从设备都将失败,或者只有未通电的从设备才会失败?

谢谢  

Anil D.

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

    首先、请关闭您之前有关此主题的帖子。
    答案在您的单词内:我注释了 BQ34Z100PW-G1的代码、然后从 LC709203F IC 获得正确的结果。
    您的程序需要认识到特定 IC 没有正确回答和处理该问题。
    它适用于您的两个 IC。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Tomasz 的快速回复。

    但我想在此澄清一点、我始终需要从两个 IC 读取电压。 因为就像连接了+12V 电池一样,所以我必须再次读取电压,并需要相应地执行一些操作。 因此我无法停止读取通信。
    另请参阅 BQ34Z100PW-G1数据表中的、在不提供+12V 电压的情况下、也不能让该 IC 导通、并从一个 IC 引脚读取电压。 那么、我如何使 IC 处于开启状态、它始终取决于+12V。

    我的应用与汽车电池(BQ34Z100PW-G1)和小型备用电池(LC709203F)相关。 因此、如果移除了汽车电池、那么我如何使该特定 IC 处于开启状态。
    因此、在这里没有编程问题、我只想确认、即使我连接了2个从 I2C、其中一个未通电、那么另一个也会受到影响或不会受到影响。 如果另一个 IC 受到影响、则说明它受到影响的原因。 如果它不受影响、我如何为它编写代码?

    还有一点是、在这个主题之前、我没有发布过任何与这个主题相关的内容。 所以我不知道、您在谈论哪篇文章。

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

    关于最后一期: e2e.ti.com/.../2683712
    可能是您的朋友。

    <<<我始终需要从两个 IC 读取电压。
    还可以 如果一个芯片损坏该怎么办?
    您的程序无法从另一个芯片读取值。

    <<<不存在在不提供+12V 的情况下让 IC 打开的规定... 那么我如何使 IC 处于开启状态
    我从未讨论过这一点。 当+12V 丢失时、这是您的问题。

    <<<其中一个未通电、则另一个将受到影响或不受影响。
    另一个不受影响。 当您为程序正在运行的第一个器件注释掉代码时。

    <<<因此这里没有编程问题
    当然、这是一个编程问题。
    在代码中的某个位置、您不会检查 I2C 命令的状态并继续与未响应的器件通信、或者您检查状态并以错误的方式处理它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tomasz、您好!

    -->“正常 如果一个芯片损坏该怎么办? 您的程序无法从另一个芯片读取值。"   --是的,我的程序无法从另一个从器件读取值。 让我详细介绍一下。 首先、I2C 通信将尝试发送带有起始位的从器件地址、之后 MSP 将尝试发送命令寄存器地址、因此在发送 MSP 时、在这里、将检查从器件是否以确认方式响应。 那么、在这里、在发送 REG 后。 地址如果它不提供 ACK、那么由于超时、它将从该通信中发出。 这就是我在编码中观察到的情况。 但在这里、我无法理解的是、从2个不同 IC 读取电压-程序是不同的。 那么、1 't 将如何影响第2个 I2C 通信。

    --->" 当+12V 丢失时,这是您的问题。 " --是的,主席先生,这只是我的问题,不能从另一个也是我的问题的 IC 上读取。 但是、为什么我在这种问题发生时来到您处了解 I2C 通信。 简单地说、"如果 IC 关闭、MSP 尝试仅与另2个 IC 进行通信、而在 I2C 通信中将其作为从器件、那么未供电的 IC 是否会影响其他器件的通信?  转储代码后、几年后、如果您的从 IC 之一损坏、那么该时间会对我的代码产生影响、那么如何解决这个问题?  

    -->“在代码中的某个位置,您不会检查 I2C 命令的状态,也不会继续与没有响应的设备通信,或者您检查状态并以错误的方式处理它。”  --是的,我在不断检查,为什么我需要不断检查? 因为如果再次连接+12V、那么仅在特定时间我需要将其更新为 MSP。

    因此、在我的这种情况下、我需要解决方案。 请不要告诉我、我没有完美地处理编码。  

    谢谢、

    Anil D.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要小心、因为芯片可能通过 GPIO 线路的 ESD 二极管供电。 但是、操作可能不稳定。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的 Keith、

    这里我使用的是复杂的设计、因为请参阅"  这是(BQ34Z100PW-G1)的数据表链接。 这里没有规定在没有+12V 的情况下使这个 IC 打开、所以如果 移除了读取电压、那么 IC 也会死。 在这种情况下、MSP 无法读取连接到同一 I2C 总线的另一个 IC 电压

    -->您能详细说明这一点吗?" 由 GPIO 线路的 ESD 二极管供电。 "

    谢谢、

    Anil D.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这取决于 ESD 二极管连接到的电源轨。 如果它们连接到低压轨、电流可以从 I2C 引脚流入芯片并为其供电。 因此、通常不建议为芯片上没有 VCC/VDD 的任何引脚供电。 该芯片可能有特殊配置、我们需要输入 TI 提示音。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Anil:

    如果断开+12V 连接、是否会收到 ACK?
    我知道、在本例中、您没有来自 BQ34Z100PW-G1的 ACK。
    接下来您的计划是什么?
    我假设它进入第二个芯片、发送开始、而不是发送命令寄存器地址并等待 ACK。
    您是否收到第二个芯片的 ACK?
    如果它没有接收到来自第二个芯片的 ACK、那么什么是 I2C 线路电压?

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

    无论您说的是正确的、我还是想、由于 I2C 引脚的存在、第二个 I2C 从器件会通电、这可能会影响我的通信。
    ESD 二极管连接到电路、但不与 I2C 引脚连接。 对于 I2C 引脚、我连接了10K 欧姆的上拉寄存器。
    我的想法是因为一个芯片无法正常工作、我的其他人的沟通也无法正常工作。 我想、由于在一条线路上、我尝试与2个从器件通信、这就是为什么它会给我一个错误。


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

    无论您说的是什么都是正确的,如果从 BQ34Z100PW-G1开始,我没有得到这个 IC 的 ACK,对于下一次通信(LC709203F),我也没有得到任何结果。 所有设备的情况都相同。
    讨论电压电平
    1) 1)如果所有通信都正常、则在 SDA 和 SCL 线路上都获得3.3V 电压。
    2) 2)如果移除了 BQ34Z100PW-G1器件的电源,那么只有 SDA 会将某个时间显示为3.3V,因为发送了从器件和寄存器地址,该时间只会变为3.3V。 SCL 始终为0.0v。

    请看我观察到的另一种情况,即在 BQ34Z100PW-G1器件断电后,我没有得到任何结果,但在再次连接电源后,通信再次开始,从而得出结果。

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

    2) RE 2)当+12V 断开且您不发送起始位和 reg 时、SDA/SCL 上有哪些电压。 地址?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tomasz、您好!

    下面是我解决问题的方法:
    1) 1) MSP 将尝试与未供电的器件通信、没问题、但尝试将其发送的起始地址、从器件地址和 REG 地址发送到 I2C 线路。 但 I2C 从设备没有响应 MSP 将尝试下一个 I2C 设备。 但由于 MSP 不发送停止位、因此此处的通信未完成。 因此、MSP 会认为具有相同的 IC MSP 需要重试。 因此、我们也面临与第二个器件进行通信的问题。
    2) 2)我更改了机制、即如果 MSP 从 BQ34Z100PW-G1 IC 获取0.0v、则电压不存在、则需要单独发送停止位、因为 MSP 已向 I2C 线路发送 SATRT 和 REG 地址以释放该线路 MSP 需要发送停止。

    解决了我的问题。
    感谢大家。

    Anil D.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴你这么做了!