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.

[参考译文] AM2634:I2C 卡到卡通信

Guru**** 2524460 points
Other Parts Discussed in Thread: AM2634

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1550127/am2634-i2c-card-to-card-commincation

器件型号:AM2634


工具/软件:

e2e.ti.com/.../controller.txte2e.ti.com/.../target.txte2e.ti.com/.../libI2C_5F00_C2C.ce2e.ti.com/.../testRoleManager.c

要求:

  • 两个基于 AM2634 的卡使用 I2C 进行通信。

  • 系统 一个卡用作控制器(主卡) 另一个作为目标(从器件) 手动覆盖。

  • 角色 可以在运行时动态切换

  • 通信方式 双向

    • 控制器发送命令或请求。

    • 目标接收、处理和响应

所以,对于这个,  

最初、当两个卡都上电时、它们都充当 I2C 目标(从器件)。 根据它们的物理位置或 ID、其中一个稍后成为 I2C 控制器(主器件)、另一个仍然是目标。

要检测是否存在其它卡、系统使用两种机制:

  1. I2C 上的检测信号消息
    控制器每 2 秒发送一次检测信号消息。
    目标以心跳回复进行响应。

  2. 基于 GPIO 的连接
    GPIO 引脚会持续切换。
    如果存在对等卡、则另一卡会检测到这种切换。

角色切换逻辑:

  • 如果卡在定义的时间段内没有从控制器接收到任何心跳信号、它会将其角色从目标切换到控制器。

  • 如果某个卡已经充当控制器并开始接收来自另一个控制器的心跳消息、则该卡会自行降级并切换回目标。

  • 只要卡继续从控制器接收有效的心跳信息、即使它具有较低的位置 ID、卡也将保持为目标。

当前状态:

  • 该逻辑已通过 CAN 协议成功验证。 角色按照预期逻辑正确切换。

  • 不过、通过 I2C:

    • 有时角色切换工作 1 或 2 次、然后失败。

    • 在某些情况下、切换角色后不会触发回调。

    • 有时它根本不起作用。

  • 该问题似乎与 I2C 事务未被清除或驱动器未正确复位有关。

其他注意事项:

  • libI2C_C2C.cmaster.txtvcc.txt附加了代码文件 () 和日志文件(和)以进行分析。

  • 问题是与 I2C 通信和开关有关;同一逻辑在 CAN.e2e.ti.com/.../4503.libI2C_5F00_C2C.ce2e.ti.com/.../4503.testRoleManager.c 上工作正常

  • 该测试设置旨在验证开关在集成最终逻辑之前是否正常工作。

    问题描述:

    • 动态 I2C 角色切换不一致 —有时它会正确发生,但有时它会失败。

    • 在上 目标端 writeCountreadCount I2C 事务结构的字段是 未更新 转移值开始。

    • 相反、这些字段 保留其初始化值 、即使在事务完成后也是如此。

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

    您好、

    感谢您详细介绍的 E2E。 让我检查这些文件并尝试重现这些文件。

    此致、
    Shaunak

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

    尊敬的 Jagadish:  

    对延迟表示歉意、由于一些正在进行的发布活动、我无法找到重现问题并进行调试的时间。 我会尽快回复我的调查结果。

    此致、
    Shaunak

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

    尊敬的 Jagadish:

    很抱歉、由于响应延迟、我陷入了一些发布活动。

    您能告诉我这个主题是否仍然打开吗? 我将在内部提出一个错误、以便进一步调试此问题

    此致、
    Shaunak