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.

[参考译文] DP83867IS:DP83867 -模式匹配时 WoL 中断

Guru**** 2465890 points
Other Parts Discussed in Thread: DP83867IS

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/594175/dp83867is-dp83867---wol-interrupt-on-pattern-match

器件型号:DP83867IS

我对 DP83867上的 WoL 中断生成有一些问题

数据表中几乎没有提到目标地址 DA (regs 0x136-0x138和 pattern regs 0x13C.0x15B)的交互方式。 DA 和 pattern 是否必须匹配才能发出 IRQ?)。

模式匹配数据寄存器的 MAC 地址位定义为[15.0.0]、[31..16]、[47..32]。 我具有以下 MAC 地址01:00:5E:00:01:81、并将这些寄存器写入0x0001 -> 0x136、0x005E -> 0x137、0x8101 -> 0x138。 我是否正确理解了数据表中需要将低字节写入 RXFPMDx 的低字节和将高字节写入高字节的内容?

RXFCFG (0x134)说明:

WAKE_ON_BCAST 和 WAKE_ON_UCAST 位是否独立于 WAKE_ON_pattern 和 WAKE_ON_魔术?

我能否仅使用其中的两个中断来引发中断?

如果我在任何广播包或仅一个与模式匹配的广播包上设置 WAKE_ON_BCAST 中断有效?

 

4.我通过以下方式设置中断:

    //启用增强的接收功能

   WRITE_PHY_DP83867_reg (baseaddr_mim、phyid、MIIM_DP83867_CFG2、MIIM_DP83867_CFG2_INTPOL);//对极性求反

   WRITE_PHY_DP83867_reg (baseaddr_mim、phyid、MIIM_DP83867_CFG3、MIIM_DP83867_CFG3_INT_OE);//启用驱动 INTZ 线路

   WRITE_PHY_DP83867_reg (baseaddr_mim、phyid、MIIM_DP83867_RXFCFG、

                                     MIIM_DP83867_RXFCFG_ENH|         //启用 WOL

                                    MIIM_DP83867_RXFCFG_WAKE_pattern|//唤醒模式

                                    MIIM_DP83867_RXFCFG_WAKE_UCast|  //单播

                                    MIIM_DP83867_RXFCFG_WAKE_BCast|  //广播

                                    MIIM_DP83867_RXFCFG_WOL_SALLETLEL (3));

 

WRITE_PHY_DP83867_reg (baseaddr_mim、phyid、MIIM_DP83867_MICR、MIIM_DP83867_MICR_WOL); //启用 WOL 中断

如果我出于目的断言中断、即:

           WRITE_PHY_DP83867_reg (baseaddr_mim、phyid、MIIM_DP83867_CFG3、MIIM_DP83867_CFG3_INT_OE|MIIM_DP83867_CFG3_INT_ASSERT);

           WRITE_PHY_DP83867_reg (baseaddr_mim、phyid、MIIM_DP83867_CFG3、MIIM_DP83867_CFG3_INT_OE);

 我可以看到中断在 INTN/PWDN 线路(引脚44)上被置为有效、但在接收到一个数据包时不会被置为有效。

 

 最后一个关于 RXFSTS (0x135)–当我读取它时、我总是从它读取0。 当我读回 RXFCFG (0x134)时、我会准确地读出我设置的位。

根据数据表(2017年3月)、定义了以下位:

 UCast_RCVD

BCast_RCVD

Pattern_RCVD

 我在 GPIO 引脚上看到 MAC 接收数据包、SFD 线显示了该数据包、但从不从 RXFSTS 读回这些位。 我能否在不匹配的广播数据包上获取 WoL 中断?

谢谢!

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

    很抱歉、DP83867IS 数据表中没有太多有关此功能的信息。
    也可以在 DP83822中找到它。 我已经制作了一份应用手册、详细介绍了与 DP83822配合使用的 WoL、但它可与 DP83867IS 互换。
    请参阅此文档进行审核:
    www.ti.com/.../snla261.pdf

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

    谢谢、Ross、

    我查看了 DP83822的数据表和示例。

    I WOL 重新分配到 GPIO1线路、而不是 TXSFD 信号:

       //配置 MUX_CTRL
       WRITE_PHY_DP83867_reg (baseaddr_mim、phyid、MIIM_DP83867_GPIO_MUX、
                       MIIM_DP83867_GPIO0_RXSFD|
                       MIIM_DP83867_GPIO1_WOL);

    当我完成此操作后、我可以在 RXSFD 脉冲结束后看到 WOL 脉冲、这符合预期。

    不幸的是、我无法在 INTn 线路上获得 WoL 中断。 我知道 WoL 可以引起中断

    按以下顺序设置中断 I WRITE:

    中断极性(位13)进入 CFG2寄存器(0x0014)

    INT_OE (位7)进入 CFG3寄存器(0x001E)

    WOL_INT_EN (位3)写入 MICR 寄存器(0x0012)

    最后:

       WRITE_PHY_DP83867_reg (baseaddr_mim、phyid、MIIM_DP83867_RXFCFG、
                       MIIM_DP83867_RXFCFG_WOLCLR|      //清除 WOL 线路
                       MIIM_DP83867_RXFCFG_ENH|         //启用 WOL
                       MIIM_DP83867_RXFCFG_WAKE_pattern|//唤醒模式
                       MIIM_DP83867_RXFCFG_WAKE_UCast|  //单播
                       MIIM_DP83867_RXFCFG_WAKE_BCast|  //广播
                       MIIM_DP83867_RXFCFG_WOL_SALLETLEL (3));

    0x696写入 RXFCFG (0x0134)寄存器

    我还需要写入什么内容才能使中断线路发出相当于 GPIO1线路上 WOL 的脉冲?

    如果我不将 MIIM_DP83867_RXFCFG_WOL_MODE (位8)设置为0x0134、我会看到两个 INTN 信号都处于电平模式(即、我必须将 WOL 清除(位11)写入0x0134以使其无效)。

    如果我将 MIIM_DP83867_RXFCFG_WOL_MODE (位8)设置为0x0134、则路由到 GPIO1的 INTn 和 WOL 将消失。

    我的目标是能够测量 GPIO1上的 TXSFD、GPIO0上的 RXSFD 和 INTN 线上的 WOL。 您是否有任何关于如何在脉冲模式下处理 INTn 线路的说明?

    谢谢、

    亚历克斯

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

    您是否确认 INT 引脚按预期运行?
    是否可以使用强制中断位[6]尝试在 INT 引脚上运行测试?

    此外、您能否尝试对另一个函数(即启用链接更改)进行中断、以查看 INT 引脚是否正在更改状态。

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

    此外、请记住 INT 引脚是一个开漏。
    您需要将此引脚上拉至 VDDIO。

    此致、
    Ross
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我已确认-从 ISR (0x0013)读取会清除中断线路。 它的反直觉性是因为 WOL_INT 是 ISR 中唯一未声明为"由当前读取清除"的位。 相反、我印象中、我需要在 RXFCFG 0x0134中使用 WOL_CLEAR 在电平模式下将其清除、或在脉冲模式下不执行任何操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它被上拉:4.7K 至2.5V、以及 FPGA 中的4.7K 弱上拉至2.5V
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Alex:

    Ross 是否解决了您的问题? 如果是、我将关闭此线程。

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

    问题已解决。 谢谢!