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.

[参考译文] TMS570LC4357:了解 TI I2C 总线

Guru**** 2445440 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1233001/tms570lc4357-understanding-ti-i2c-bus

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

您好

1.我想对 i2c 总线使用中断模式。 我使用 halcogen 激活中断。 参见下面的图像。 这是否意味着我无法使用对这些位的轮询? 如果我使用轮询、是否有效? Halcogen 提供了许多使用轮询的例程"

2.在开始调用 i2cSendByte (i2c、cmd )或 i2cReceiveByte (i2c)之前,我希望检测 i2c 总线和 i2c 器件的功能。 如何检测? 原因是、我发现、一旦我调用任何 i2c 发送或接收例程、如果总线不起作用、软件将在  I2C_RX_INT 和 I2C_TX_INT 的轮询中挂起 。 PCB 和器件损坏很常见、但软件不应挂起轮询。  

while ((i2c->STR &(UINT32) I2C_RX_INT)== 0u)
{
}/*等待*/

3.请帮助检查以下代码。 我想使用它来检查它是否可以触发中断。 唉、因为它只发送 i2c 地址而没有数据、因此没有生成中断。 更糟糕的是、没有生成停止位。 该例程在 STOP 位轮询中挂起。 感谢您的支持。

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

    尊敬的 LayEng:

    1.我想对 i2c 总线使用中断模式。 我使用 halcogen 激活中断。 参见下面的图像。 这是否意味着我无法使用对这些位的轮询? 如果我使用轮询、是否有效? Halcogen 提供了许多使用轮询的例程"

    [/报价]

    是的、无论中断启用情况、您都可以使用状态位进行轮询、每当 i2c 总线上出现相应条件时、不管中断启用状态、状态位都将置位。

    我想在开始调用 i2cSendByte (i2c、cmd )或 i2cReceiveByte (i2c)之前检测 i2c 总线和 i2c 器件的功能。 如何检测? 原因是、我发现、一旦我调用任何 i2c 发送或接收例程、如果总线不起作用、软件将在  I2C_RX_INT 和 I2C_TX_INT 的轮询中挂起 。 错误的 PCB 和设备很常见,但软件不应挂起轮询。

    总线忙(BB)位将指示 i2c 总线的状态、如果 i2c 总线忙、将设置该位。

    如果我们尝试发送数据、即使 i2c 总线忙、在这种情况下将设置仲裁丢失标志。

    --

    谢谢。此致、
    Jagadish。

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

    尊敬的 Jagadish:

    感谢您的答复。

    如果您查看下面的代码、您会发现总线忙检查在接收字节之后出现。 如何在发生故障之前检查它、以防止挂起无法正常工作的设备或 i2c 总线的接收字节。 实际上我有一个板、其中 i2c 中断根本不起作用。 这是一种情况。 另一种情况是器件不工作。 因此,我尝试使用上面的项目3,其中我使 i2cSetCount(i2c, 0). 我将 count 设置为0、以便我不需要发送或接收数据。 只需测试从器件地址即可。  但是、在发送从器件地址后、停止位不工作。 您有什么建议? 目前、该软件仅在我的总线和器件工作时工作、但如果其中任何一个器件不工作时挂起。 软件应该能够检测故障、而不能对发生故障的总线或设备执行 i2c 事务。 期待您的支持。 谢谢!

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

    尊敬的 Jagadish:

    我将关闭有关示例代码的另一个用例。 示例代码仅适用于工作总线和工作正常的器件、但在出现问题时不起作用。 我将继续在这个主题上向您提问。  

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

    尊敬的 LayEng:

    我认为在接收字节之前不需要检查 i2c Busy 位、因为总线上不存在任何多主器件。 我的意思是只有一个主器件来启动起始条件并发送从器件地址、因此不可能在接收字节之前设置 BUSY 标志。

    如果您在发送开始字节之前仍需要进行检查、则可以执行以下操作

    --

    谢谢。此致、
    Jagadish。

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

    尊敬的 Jagadish:

    感谢您的答复。 我看看您的建议是否适用于有缺陷的电路板和 IC。 关于我粘贴在上面第3项下的代码、我可以向您介绍一下。 我又在下面粘贴。 您能否自行尝试这段代码、看看它是否适用于检测任何 IC? 我在这边使用了它、发现没有发送停止位。 因此、代码将在 while 循环中失败以检查停止位。 期待您的回复。 谢谢!

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

    仅供参考、我有4或5个损坏的主板、其中 i2c 器件/总线有缺陷。 对于这些板、我必须注释掉 i2c。 仅1个工作板。 如何发布我的软件进行生产?

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

    尊敬的 LayEng:

    我能不能向您询问我在上面的项目3下粘贴的代码。 我又在下面粘贴。 您是否可以在侧面尝试此代码并查看[/引号]

    我刚开始编写自己的代码、并将在明天提供更新。

    我有4块或5块坏板,其中 i2c 设备有缺陷。/buss.

    您是否认为我们的 TI 控制器的电路板有缺陷?

    --

    谢谢。此致、
    Jagadish。

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

    尊敬的 Jagadish:

    我有4个使用 TMS570LC4357的 PCB 模块有缺陷、共5个。 有缺陷的模块具有无法正常工作的 i2c 总线、如所示、当我使用 while 循环而不是中断来发送和接收数据时、软件将在 while 循环中挂起。 我最终找到了第五个板、它使用中断、而不是用于发送和接收的 while 循环、它可以正常工作。 基于这种方法、我能够确定即使从设备不工作、软件也能够正确检测。 现在一切看起来都很好。 我有以下问题:

    1.如何在编译前选择中断方法? 当我如下图所示在 halcogen 期间选择 i2c 中断时会吗? 如果我不使用 halcogen/

    2.请看下面的软件。

    IC LTC2991_I2C_ADDR 无法正常工作或缺失。 执行 i2cReceive (i2c、length、RX_Data);时进入 i2cReceive 例程的中断臂。 我想知道 IC 不存在时何时会发生中断。 哪个软件会触发中断?

    期待您的回复。 谢谢!

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

    顺便说一下、如果 i2cbus 不工作、则您建议的 while BB 检查不起作用、以防止软件进入 i2c 例程。

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

    尊敬的 LayEng:

    我使用 TMS570LC4357的 PCB 模块有4个缺陷,共5个。 有故障的模块无法正常工作 i2c 总线[/报价]

    我认为这不可能。 5个设备中有4个有缺陷的 i2c。

    可能是我们出错了、出现了用户错误。

    问题是我没有您提到的从设备。

    我们要做的一件事是设置一次会议、以便我能够直接看到您提到的问题。

    我的可用时间:上午10点至晚上7点 IST。

    --

    谢谢。此致、
    Jagadish。