我对 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 中断?
谢谢!