您好,能否提供一下帮助:
我想启用 PHY 中断,仅用于指示链接开通(自动协商完成)和链接断开事件。我在 LM3S6100 上成功实现了这一点,但在 LM3S9790 上却没有。在 LM3S9790上,PHY 中断从来就没有被触发过。我是按照下列方式初始化 EMAC 的:
EthernetIntEnable(ETH_BASE, ETH_INT_PHY | ETH_INT_RX);
EthernetPHYWrite(ETH_BASE, PHY_MR30, PHY_MR30_LDIM | PHY_MR30_ANCOMPIM);
在 ISR 中,我的程序是这样:
...
if(estat & ETH_INT_PHY) {
DWORD phystat=EthnernetPHYRead(ETH_BASE, PHY_MR29);
if(phystat & PHY_MR29_LDIS) {
...link is off
}
if(phystat & PHY_MR29_ANCOMPIS) {
...link is on
}
}
在程序运行的时候,以太网端口能够接收到数据包,但我从未收到过来自 PHY 的中断。有趣的是,类似的代码在 LM3S6100 上运行时一切正常(唯一的区别是,我在 6100 上处理的是 MR17,而非 MR29 和 MR30)。
这个代码有什么问题吗?