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.

[参考译文] AM2434:AM2434和 DP83822的 EtherCAT 连接问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1508594/am2434-ethercat-connection-problem-with-am2434-and-dp83822

器件型号:AM2434

工具/软件:

尊敬的 TI 专家:

我们 正在尝试使用 AM2434 µC 和两个 DP83822 PHY (地址0和1)与定制电路板建立 EtherCAT 连接。  出于测试目的、我们还在 AM243 LaunchPad 上运行软件。 我们的软件基于 AM243 MotorControlSDK 中的 TIDL 双电机驱动器示例。

借助 LaunchPad、我们能够使用两个以太网端口上的 TwinCAT 软件通过 EtherCAT 连接到器件。 对于我们自己的电路板、我们只能通过两个端口之一连接到 TwinCAT。 此外、它仅适用于已禁用的快速链路检测。  

对于我们的电路板、PHY 配置如下:

#define ECAT_PHYADDR_IN                     (1u)
#define ECAT_PHYADDR_OUT                    (0u)
#define ECAT_PHYPOLINVERT_IN                (true)
#define ECAT_PHYPOLINVERT_OUT               (true)
#define ECAT_PHYUSERXLINK_IN                (false)
#define ECAT_PHYUSERXLINK_OUT               (false)

对配置的一个备注:我必须根据我对地址的实际期望交换输入和输出的地址。 在交换之前、我无法在任何端口上找到该设备。 此外、在  ECAT_PHYUSERXLINK_IN/OUT 中找不到器件(TRUE)。 我还尝试了两种 PHYPOLINVERT 设置。 连接器件时、MDIO__REGS_LINK_REG 被设置为1、因此它应处于高电平有效状态。

我还检查了连接状态下的 PHY 寄存器。 除了 PHY 地址外、两者都是相同的。 值如下表所示:

端口1已连接 端口2已连接
BMCR_REG (00) 0x3100 0x3100
BMSR_REG (01) 0x786d 0x786d
PHYIDR1_REG (02) 0x2000 0x2000
PHYIDR2_REG (03) 0xa240 0xa240
ANAR_REG (04) 0x01e1 0x01e1
ANLPA_REG (05) 0xcde1 0xcde1
ANER_REG (06) 0x000f 0x000f
ANNPTR_REG (07) 0x2001 0x2001
ANLNPTR_REG (08) 0x5006 0x5006
CR1_REG (09) 0x0000 0x0000
CR2_REG (0A) 0x0122 0x0122
CR3_REG (0b) 0x040C 0x040C
REGCR_REG (0d) 0x0000 0x0000
ADDAR_REG (0e) 0x0000 0x0000
FLDS_REG (0f) 0x0000 0x0000
PHYSTS_REG (10) 0x0015 0x0015
PHYSCR_REG (11) 0x0108 0x0108
MISR1_REG (12) 0x6400 0x6400
MISR_REG (13) 0x2800 0x2800
FCSCR_REG (14) 0x0000 0x0000
RECR_REG (15) 0x0000 0x0000
MISR2_REG (13) 0x0000 0x0000
BISCR_REG (16) 0x0100 0x0100
RCSR_REG (17) 0x0049 0x0049
LEDCR_REG (18) 0x0400 0x0400
PHYCR_REG (19) 0x8c20 0x8c21
10BISCR_REG (1a) 0x0000 0x0000
BICSR1_REG (1b) 0x007d 0x007d
BICSR_REG (1c) 0x05ee 0x05ee
CDDR_REG (1e) 0x0102 0x0102
PHYRCR_REG (1f) 0x0000 0x0000

我还检查 EtherCAT 状态寄存器的偏移量 0x30090000 (在这两种情况下器件均已连接 、但与 TwinCAT 无通信):

端口1已连接 端口2已连接
0x0110 0x11 0x21
0x0111 0x56 0x5D 的地址
0x0130 0x01 0x01
0x0131 0x00 0x00
0x0134 0x00 0x00
0x0300 0x00 0x00
0x0301 0x00 0x00
0x0302 0x00 0x00
0x0303 0x00 0x00
0x0304 0x00 0x00
0x0305 0x00 0x00
0x0306 0x00 0x00
0x0307 0x00 0x00
0x0308 0x00 0x00
0x0309 0x00 0x00
0x030A 0x00 0x00
0x030B 0x00 0x00
0x030C 0xFF 0x00
0x0310 0x00 0x02
0x0311 0x04 0x00
0x0312 0x00 0x00
0x0313 0x00 0x00

我们有两个问题:

1)您能看到一个原因,为什么我们无法在第二个端口上找到我们的设备?
2)如果 启用了快速链路检测、为什么未找到器件? 这是我们想要支持的一项功能。

如果您需要更多详细信息、敬请告知。 提前感谢您的支持!

此致
基督教

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

    尊敬的 Christian:

    Unknown 说:
    2)如果 启用了快速链路检测、为什么未找到设备? 这是一项我们想要支持的功能。
    • 为了使增强型链路/快速链路检测  正常工作、请确保连接的 prx_MII0_RXLINK 和 prx_MII1_RXLINK 以及 LED 配置正确。  LED 配置必须是稳定的链路(LED_SPEED 或 LED_LINK (无活动闪烁)。
    • 此外、对于快速链路检测、请确保 为 MLINK (并保持位6置位)配置 MDIO_USER_PHY_SEL_REG_j (偏移0x84和0x8C)位7。
    •  对于上述两种配置(我指的是 SDK 中的不同 EtherCAT 实现、但初始化是相同的)、请参阅 tiescsoc.c (enhancedlink_enable = 1)中的 tiesc_ethphyInit ()。
    1)您能看到一个原因、为什么我们在第二个端口上找不到我们的设备?
    • 如何配置 EtherCAT 输入和输出端口 PHY 地址?  它是否基于 MDIO_LINK_REG 的状态? 因此、如果在使用以太网电缆将输入/输出端口连接到活动网络时看到位被设置/复位、则应将该特定位地址配置为相应端口的 PHY 地址。
    • 此外、禁用快速链路检测功能时、请确保 MDIO 手动模式链路状态更新  选项设置为 基于 PHY 轮询 。  
    •  连接第二个端口时 MDIO_LINK_REG 的行为如何? 当端口连接到活动网络时、是否设置了与 PHY 端口对应的位?
    Unknown 说:
    我还检查了偏移量 0x30090000处的 EtherCAT 状态寄存器(两种情况下器件都已连接、但与 TwinCAT 没有通信):
    • 您能否通过监控0x30090E00和0x30090E04 来确保 RX 帧计数器递增 、以便我们可以确认正在由 TI ESC (固件)接收帧。 该寄存器的详细信息可在 TI EtherCAT 子器件控制器寄存器列表中找到。
    Unknown 说:
    我还尝试了两种 PHYPOLINVERT 设置。 连接器件时、MDIO__REGS_LINK_REG 被设置为1、因此它应处于高电平有效状态。
    • 是此配置正确。 极性应为 ACTIVE_HIGH。

     此致、
    Aaron

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

    您好 Aaron、  
    只是好奇。 您如何到达该地址0x30090000?  
    此致、
    金龙

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

    您好 Aaron、

    非常感谢您的快速响应和建议。

    我现在能够连接支持快速链路检测的 TwinCAT。 问题在于 LED_0在之前配置为低电平有效(默认设置)。 通过将其设置为高活跃度、我可以在 TwinCAT 中找到我的器件(如果连接到端口1)。 因此问题2)已解决。

    为不与0´s 和1´s 混淆、我们现在将 PHY 地址更改为0和9。 如果我连接到地址为0的 PHY (定义如所示)、则可以在 TwinCAT 中找到器件。 我的设置现在如下所示:

    #define ECAT_PHYADDR_IN                     (0u)
    #define ECAT_PHYADDR_OUT                    (9u)
    #define ECAT_PHYPOLINVERT_IN                (true)
    #define ECAT_PHYPOLINVERT_OUT               (true)
    #define ECAT_PHYUSERXLINK_IN                (true)
    #define ECAT_PHYUSERXLINK_OUT               (true)
    对于另一个端口(PHY 地址9)、我仍然无法在 TwinCAT 中找到器件。 如果 连接此端口、则 MDIO__REGS_LINK_REG 位9被设置为1。
    我还在偏移0x0E00至0xE07处监控 ETC 寄存器。  首先、连接了 PHY9 (已连接第 PHY9列)。 之后、我断开了 PHY9并连接了 PHY0。 我在这两种情况下都使用 TwinCAT 进行了扫描。
    PHY9已连接 PHY0已连接
    0x0110 0x01 0x11
    0x0111 0x55 0x56
    0x0130 0x01 0x01
    0x0131 0x00 0x00
    0x0134 0x00 0x00
    0x0300 0x00 0x00
    0x0301 0x00 0x00
    0x0302 0x00 0x00
    0x0303 0x00 0x00
    0x0304 0x00 0x00
    0x0305 0x00 0x00
    0x0306 0x00 0x00
    0x0307 0x00 0x00
    0x0308 0x00 0x00
    0x0309 0x00 0x00
    0x030A 0x00 0x00
    0x030B 0x00 0x00
    0x030C 0x00 0x7C
    0x0310 0x00 0x00
    0x0311 0x00 0x00
    0x0312 0x00 0x00
    0x0313 0x00 0x00
    0x0E00 0x00 0x7f
    0x0E01 0x00 0x00
    0x0E02 0x00 0x00
    0x0E03 0x00 0x00
    0x0E04 0xED 0x52
    0x0E05 0x00 0x01
    0x0E06 0x00 0x00
    0x0E07 0x00 0x00
    看起来两种情况下都交换了帧。 但是、寄存器0x0110显示、 如果连接到 PHY9、则没有物理连接。 此外、端口0 (PHY0)似乎只有有效帧(寄存器0x0E00和0x0E01)。  
    除了 PHY 地址之外、PHY 寄存器是相同的(两者都处于连接状态):
    PHY0已连接 PHY9 已连接
    BMCR_REG (00) 0x3100 0x3100
    BMSR_REG (01) 0x786d 0x786d
    PHYIDR1_REG (02) 0x2000 0x2000
    PHYIDR2_REG (03) 0xa240 0xa240
    ANAR_REG (04) 0x01e1 0x01e1
    ANLPA_REG (05) 0xcde1 0xcde1
    ANER_REG (06) 0x000f 0x000f
    ANNPTR_REG (07) 0x2001 0x2001
    ANLNPTR_REG (08) 0x5006 0x5006
    CR1_REG (09) 0x0000 0x0000
    CR2_REG (0A) 0x0122 0x0122
    CR3_REG (0b) 0x040C 0x040C
    REGCR_REG (0d) 0x0000 0x0000
    ADDAR_REG (0e) 0x0000 0x0000
    FLDS_REG (0f) 0x0000 0x0000
    PHYSTS_REG (10) 0x0015 0x0015
    PHYSCR_REG (11) 0x0108 0x0108
    MISR1_REG (12) 0x6400 0x6400
    MISR_REG (13) 0x2800 0x2800
    FCSCR_REG (14) 0x0000 0x0000
    RECR_REG (15) 0x0000 0x0000
    MISR2_REG (13) 0x0000 0x0000
    BISCR_REG (16) 0x0100 0x0100
    RCSR_REG (17) 0x0049 0x0049
    LEDCR_REG (18) 0x0080 0x0080
    PHYCR_REG (19) 0x8c20 0x8c29
    10BISCR_REG (1a) 0x0000 0x0000
    BICSR1_REG (1b) 0x007d 0x007d
    BICSR_REG (1c) 0x05ee 0x05ee
    CDDR_REG (1e) 0x0102 0x0102
    PHYRCR_REG (1f) 0x0000 0x0000

    您是否有任何进一步的想法、什么可能导致第二个端口出现此问题?
    此致
    基督教
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    您是否有进一步的想法、什么会导致第二个端口出现此问题?
    • 看起来 MDIO 相对于第二个 PHY 缺少一些配置。
    • 您是否 正确配置了 MDIO_USER_PHY_SEL_REG_j (0x300B2484和0x300B248C)?    在您的情况下、0x300B2484的值应为0x000000C0、0x300B248C 的值应为0x000000C9。
    • 为清楚起见、 0x300B2484 对应于第一个 PHY、 0x300B248C 对应于第二个 PHY。

    此致、
    Aaron

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

    您好、金龙、

    0x30090000的 PRU_ICSSG1_RAM_SLV_RAM 空间将在 ICSSG1实例中模拟 ESC 寄存器、 在 ICSSG0实例中模拟来自0x30010000的 PRU_ICSSG0_RAM_SLV_RAM 空间。

    要从 CCS 访问存储器空间、请导航至 "View">"Memory Browser" 并提供地址并选择 System_View 如下所示:

    通过导航到、也可以从 TwinCAT 访问此空间 box1 > EtherCAT > Advanced Settings > ESC Access > Memory

    此致、
    Aaron

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

    您好 Aaron、

    这似乎是正确的:

    任何其他想法、什么可能导致问题?

    此致
    基督教

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

    我刚刚进行了另一项测试:如果我将第二块电路板连接到设备的输出端口(菊花链)、则可以找到这两个器件。 n´t 看起来第二个端口一般有问题...

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

    尊敬的 Christian:

    看起来第二个端口的配置不匹配。 在这种扫描第二个端口的情况下、您能否共享 ICSS 存储器转储? 将检查 MII CONFIG 寄存器或 MDIO 寄存器中是否存在任何不匹配情况。 请共享完整的存储器转储。

    此致、
    Aaron

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

    您好 Aaron、

    我在 TwinCAT 中扫描时暂停应用 、并将所有 ICSSG1 寄存器(从偏移量0x30080000开始)导出 到附加的文件中。 希望格式可以类似这样操作(Filletype 是 TI 数据)。 如果您需要更多信息、敬请告知。

    再次感谢您的支持!

    此致
    基督教

    e2e.ti.com/.../TI_5F00_ICSSG1Registers_5F00_Port2Connected.dat

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

    尊敬的 Christian:  

    感谢您发送编修。 我将对此进行分析、然后返回给您。

    此致、
    Aaron

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

    您好 Aaron、

    您是否已经能够查看寄存器内容?

    此致
    基督教

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

    尊敬的 Christian:

    看起来 MDIO 链路状态未反映在配置 MII_RT 寄存器的 EtherCAT 固件中。  中似乎存在不匹配 MII_RT_RXCFG0 (0x300B2000) 和  MII_RT_RXCFG1 (0x300B2004)  使用 DL 状态寄存器(0x0110)进行配置的寄存器:

    预期情况是、当仅连接第二个端口时、 应设置 MII_RT_RXCFG0的位3、并且 MII_RT_RXCFG1的位3 应为0:

    0x300B2000:0x00000049
    0x300B2004:0x00000051

      

    在您的情况下、固件会针对端口0关闭和端口1关闭场景配置上述寄存器。

    需要检查的几个事项:

    1. 禁用 EnhancedLink/RXLINK 后、您是否能够扫描第二个端口?
    2. 启用 EnhancedLink 时、您是否正确配置了极性? 也就是说、连接电缆时、如果 MDIO 链路状态位变为0、则极性应为 ACTIVE_HIGH。 在这种情况下、您可以尝试以下配置:

    #define ECAT_PHYPOLINVERT_IN                (false)
    #define ECAT_PHYPOLINVERT_OUT               (false)

    此致、
    Aaron

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

    您好 Aaron、

    感谢您提供的信息-非常有趣!

    关于您的问题:

    1. 如果我禁用增强型链路检测(通过将 ECAT_PHYUSERXLINK_IN/OUT 设置为 FALSE)、我可以在第二个端口上找到器件。 在这种情况下、上述寄存器会按照您所述针对正确的情况进行配置。
    2. 在我看来,极性应该是正确的。 如果没有连接端口、则寄存器0x3000B240C 为0x00000000。 当我连接端口0时、它是0x00000001。 对于连接的端口1 (PHY 地址9)、设置为0x00000200。  ECAT_PHYPOLINVERT_IN/OUT 设置为 TRUE。 我也尝试将其设置为 false、但这没有解决问题。

    两个 PHY 的配置相同。 由于 EnhancedLink 适用于 port0、因此我假定配置应该可以。

    因此、您的发现显然是正确的。 EnhancedLink 检测存在问题、但仅适用于端口1。  我们如何确定这一问题的原因?

    此致
    基督教

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

    尊敬的 Christian:

    EnhancedLink 检测存在问题、但仅适用于 port1 ...  我们如何确定此问题的原因?
    • 如果两个 PHY 的软件以相同的方式对齐、则可能是硬件配置存在问题。 确保您已连接 prx_MII0_RXLINK 和 prx_MII1_RXLINK、此外、 您能否探测 prx_MII1_RXLINK  引脚并查看它是否正在根据链路状态进行更新?
    • 菊花链(端口1 Tx <>端口0 Rx)工作正常这一事实仍然令我困惑。 我们将对此进行进一步检查、以了解可能出现的问题。

    此致、
    Aaron

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

    您好 Aaron、

    如果软件对两个 PHY 的对齐方式相同、则可能是硬件配置存在问题。 确保您已连接 prx_MII0_RXLINK 和 prx_MII1_RXLINK、此外、 您能否探测 prx_MII1_RXLINK  引脚并查看它是否会随着链路状态而更新?

    我刚刚探测 了 PHY 端的 MII1_RXLINK 链路。 就会设置为高电平。 所以、正如预期的那样...
    它连接到 Sitara 上的 PRG1_PRU1_GPO8。 另一个 PHY (端口0)连接到 PRG1_PRU0_GPO8。 这是用于 PHY 和我们 Sitara 之间连接的引脚排列:

    [引述 userid="550875" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1508594/am2434-ethercat-connection-problem-with-am2434-and-dp83822/5832853 #5832853"]
    • 菊花链(端口1 Tx <>端口0 Rx)工作正常这一事实仍然令我困惑。 我们将对此进行进一步检查、以了解可能出现的问题。

    [/报价]

    是的,这是真的很有趣... 如果我能提供任何其他信息、请告诉我。 再次感谢您的支持!

    此致
    基督教

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

    尊敬的 Christian:

    如果可以提供任何其他信息、请告诉我。 再次感谢您的支持!
    • 我将在内部进行检查、并就可能导致此问题的不匹配问题回复您。

    此致、
    Aaron

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

    通过增强 EtherCAT PRU 固件中的链路检测、可以解决端口1扫描问题。 包含此 更新的 EtherCAT 固件将在下一个工业通信 SDK 版本中提供。

    根据最新状态关闭此主题。

    此致、
    Aaron