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.

[参考译文] AM6421:具有自定义 PHY DP83822的 EtherCAT 从站

Guru**** 2465890 points
Other Parts Discussed in Thread: AM6421, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1472633/am6421-ethercat-slave-with-custom-phy-dp83822

器件型号:AM6421
主题中讨论的其他器件: SysConfig

工具与软件:

你(们)好

      这涉及 EtherCAT 从站-工业协议到基于 AM6421 SOC 的定制电路板的开发/移植。

     

采取了循序渐进的方法:

  1. 首先、 使用作为"所用工业通信 SDK:ind_comms_sdk_am64x_09_02_00_15"一部分提供的 EtherCAT 示例 在  带有 Beckhoff PLC 的 AM64x EVM 板上进行测试 这个测试很好、并且能够与 PLC 通信并且将参数发送到 PLC
  2. 定制电路板具有 AM6421、其中 PHY DP83822具有 MII 配置、PRU 端口与 EVM 电路板中相同。
  3. PHY DP83822驱动程序配置为 MII、下面提供了寄存器转储。
  4. 在 EVM 上测试的 EtherCAT 示例已移植到定制电路板。
  5. 通信失败

 

      在移植过程中完成的操作

    1. 按照原样使用来自 EVM 的 EEPROM 数据。
    2. 使用 EVM 中的 PRU 固件原样。
    3. 使用与现在相同的 EVM 示例应用程序。

 

需要您的支持、以便向我们提供有关如何建立 EtherCAT 连接的一些线索。

 

这是 DP83822的寄存器转储

 ETHPHY_DP83822_RegDump : Phy[1] Network cable connected
PHY 1: BMCR[0]    = 0x3100
PHY 1: BMSR[0x1]    = 0x7849
PHY 1: PHYIDR1[0x2] = 0x2000
PHY 1: PHYIDR2[0x3] = 0xa240
PHY 1: ANAR[0x4] = 0x01e1
PHY 1: ANLPAR[0x5] = 0x0000
PHY 1: ANER[0x6] = 0x0007
PHY 1: ANPTR[0x7] = 0x2001
PHY 1: ANLNPTR[0x8] = 0x0000
PHY 1: CR1[0x9] = 0x0020
PHY 1: CR2[0xa] = 0x0002
PHY 1: CR3[0xb] = 0x0008
PHY 1: REGCR[0xd] = 0x401f
PHY 1: FLDS[0xf] = 0x0000
PHY 1: PHYSTS[0x10] = 0x4015
PHY 1: PHYSCR[0x11] = 0x0108
PHY 1: MISR1[0x12] = 0x6400
PHY 1: MISR2[0x13] = 0x2800
PHY 1: FCSCR[0x14] = 0x0000
PHY 1: RECR[0x15] = 0x0000
PHY 1: BISCR[0x16] = 0x0100
PHY 1: RCSR[0x17] = 0x0241
PHY 1: LEDCR[0x18] = 0x0080
PHY 1: PHYCR[0x19] = 0x8c21
PHY 1: PHYRCR[0x1f] = 0x0241
PHY 1: MLEDCR[0x25] = 0x45e1
PHY 1: GENCFG[0x456] = 0x0008
PHY 1: LEDCFG1[0x460] = 0x0551
PHY 1: SOR1[0x467] = 0x4ec3
PHY 1: LEDCFG2[0x469] = 0x0440

 ETHPHY_DP83822_RegDump : Phy[2]
PHY 2: BMCR[0]    = 0x3100
PHY 2: BMSR[0x1]    = 0x7849
PHY 2: PHYIDR1[0x2] = 0x2000
PHY 2: PHYIDR2[0x3] = 0xa240
PHY 2: ANAR[0x4] = 0x01e1
PHY 2: ANLPAR[0x5] = 0x0000
PHY 2: ANER[0x6] = 0x0004
PHY 2: ANPTR[0x7] = 0x2001
PHY 2: ANLNPTR[0x8] = 0x0000
PHY 2: CR1[0x9] = 0x0020
PHY 2: CR2[0xa] = 0x0002
PHY 2: CR3[0xb] = 0x0008
PHY 2: REGCR[0xd] = 0x401f
PHY 2: FLDS[0xf] = 0x0000
PHY 2: PHYSTS[0x10] = 0x4002
PHY 2: PHYSCR[0x11] = 0x0108
PHY 2: MISR1[0x12] = 0x0000
PHY 2: MISR2[0x13] = 0x0800
PHY 2: FCSCR[0x14] = 0x0000
PHY 2: RECR[0x15] = 0x0000
PHY 2: BISCR[0x16] = 0x0100
PHY 2: RCSR[0x17] = 0x0241
PHY 2: LEDCR[0x18] = 0x0080
PHY 2: PHYCR[0x19] = 0x8022
PHY 2: PHYRCR[0x1f] = 0x0241
PHY 2: MLEDCR[0x25] = 0x0000
PHY 2: GENCFG[0x456] = 0x0008
PHY 2: LEDCFG1[0x460] = 0x0551
PHY 2: SOR1[0x467] = 0x71c3
PHY 2: LEDCFG2[0x469] = 0x0440

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

    您好!

    需要检查以下几点:

    1. 根据中观察到的值、是否在 SysConfig ETHPHY 模块中配置了正确的 MDIO PHY 地址 MDIO_ALIVE_REG (0x300B2408)。
    2. 您是否可以尝试在 tiescsoc.c 文件中禁用 EnhancedLink?
      •  
        bspInitParams->enhancedlink_enable = TIESC_MDIO_RX_LINK_DISABLE;
    3. 是否根据正确配置了极性 MDIO_LINK_REG (0x300B240C) . 当主动链连接到端口时、如果设置了与 PHY 地址位对应的值、则其为 ACTIVE_HIGH、否则为 ACTIVE_LOW。 这将在 tiescsoc.c 文件中配置:
      • #define TIESC_LINK0_POL             TIESC_LINK_POL_ACTIVE_HIGH
        #define TIESC_LINK1_POL             TIESC_LINK_POL_ACTIVE_HIGH
    4. 如果您使用的是  MDIO_phyRegWrite () API,请确保在访问高于32的 PHY 寄存器时使用的是 MDIO_phyExtRegWrite () API。

    此外、您能否解释您观察到的通信故障... 比如、应用程序未成功编译、或者加载成功编译的二进制文件后、子器件不会进入 OP 状态?

    我将同时回顾 PHY 寄存器的值。

    此致、
    亚伦

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

    大家好、Aaron:

             感谢您的答复。

       以下是我们对所提问题的评论

    1. 是否根据 MDIO_ALIVE_REG (0x300B2408)中观察到的值在 SysConfig ETHPHY 模块中配置了正确的 MDIO PHY 地址。

     uint32_t mdioBaseAddress =((const ETHPHY_Attrs *) ETHPHY_getAttrs (CONFIG_ETHPHY0))->mdioBaseAddress;

     mdioBaseAddress [0x30090e40]

     2.是否可以尝试在 tiescsoc.c 文件中禁用 EnhancedLink?

        我们尝试禁用 EnhancedLink。 观察到链路状态 本身发生故障。

    3.极性是否根据 MDIO_LINK_REG (0x300B240C)正确配置。 当主动链连接到端口时、如果    设置了与 PHY 地址位对应的值、则其为 ACTIVE_HIGH、否则为 ACTIVE_LOW。 这在中进行配置。

     已尝试两个选项但未更改。

    4. 如果您使用的是 MDIO_phyRegWrite () API,请确保在访问高于32的 PHY 寄存器时使用的是 MDIO_phyExtRegWrite () API。

     是的、我们   仅使用 MDIO_phyRegWrite ()和 MDIO_phyExtRegWrite () API。

     加载成功构建的二进制文件后、子器件不会进入 OP 状态、或说 PLC 未发现该子器件

     感谢您的快速响应。

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

    尊敬的 Narasimha:

    我想检查另一点、是否看到寄存器的位被设置/复位了  MDIO_LINK_REG (0x300B240C)  是否连接/断开以太网电缆?

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

    大家好、Aaron:

     下面是 寄存器的屏幕快照  MDIO_LINK_REG (0x300B240C) 用于以太网电缆连接/断开状态

    并断开两个 PHY 的连接

    PHY ID-1已连接

    PHY ID-2已连接

     

    如果我们遗漏了小的说明,在以太网 PHY(在定制板中更改为 DP83822),我们是否需要更改 PRU 或 MDIO 固件中的任何内容。

    定制电路板中 SOC 和 PHY 之间以及 EVM 中的 MII 总线 相同。

    感谢您的快速响应。

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

    好的、看起来极性为 ACTIVE_HIGH、PHY 地址分别为1和2。

    并且正在检测到链路、似乎是这样。

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

    大家好、Aaron:

     感谢您的支持。

     在 PHY 中禁用奇半字节检测功能之后。 我们能够在 PLC 中成功发现该器件

      我们再次感谢您的支持。

      将立即解答您的疑问。 我们将发布问题。

    谢谢你。

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

    大家好、Aaron:

     感谢您的支持。

     在 PHY 中禁用奇半字节检测功能之后。 我们能够在 PLC 中成功发现该器件

      我们再次感谢您的支持。

      将立即解答您的疑问。 我们将发布问题。

    谢谢你。

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

    谢谢你 Narasimha 的澄清。 目前正在关闭该主题帖。

    此致、
    亚伦

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

    您能否解释为什么需要这样做、因为您将失去检测错误来源(即通过此标记转发错误)的能力

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

    您好、Pratheesh:

    您能解释为什么需要这样做吗、因为您将失去检测错误来源的能力

    按 Beckhoff 指南行将其用于 EtherCAT 协议

    参考: Beckhoff PHY Selection Guide  

    此致、
    D.Jenita.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据 Beckhoff 指南系列使用 EtherCAT 协议

    您如何在 DP83822中禁用奇半字节检测? 注释的后一部分是正确的、否则将不会检测到转发的错误...