配置目标:
(1)绿灯表示连接状态,插上网线绿灯常亮,拔出网线绿灯熄灭。
(2)黄灯表示数据包收发状态,收发数据包时黄灯闪烁,空闲时黄灯熄灭。
假设绿灯接的是LED2,黄灯接的是LED1。
那么绿灯应该配置为:10/100/1000Mbps Link Indication => 0x0b << (5 * 2)
黄灯应该配置为:10/100/1000Mbps Link Indication + Active Indication => 0x1b << (5 * 1)
特别注意,不能只配置Active Indication,不带Link Indication,如下图所示,只使能Active位是不允许的(N/A)。
由于无法单独使用Active位,黄灯平时无法熄灭。不过我们可以使用EEE节能指示。
当网络空闲时,网口进入EEE节能状态,只要将黄灯的EEE指示设为1,绿灯的EEE指示设为0,我们就达到目的了。
-
// 网口LED灯的序号
-
#define GREEN_LED 2 // 绿灯是LED2
-
#define YELLOW_LED 1 // 黄灯是LED1
-
-
// 配置网口LED灯
-
XAxiEthernet_PhyWrite(&xaxieth, PHY_ADDR,
31,
0xd04);
-
temp =
0x0b << (
5 * GREEN_LED);
// 绿灯表示连接状态
-
temp |=
0x1b << (
5 * YELLOW_LED);
// 黄灯表示数据包收发状态
-
XAxiEthernet_PhyWrite(&xaxieth, PHY_ADDR,
0x10, temp);
-
temp = _BV(YELLOW_LED +
1);
// 绿灯不指示EEE节能状态, 插了网线后灯要常亮
-
// 但黄灯要指示EEE节能状态, 没有数据包时灯要熄灭
-
XAxiEthernet_PhyWrite(&xaxieth, PHY_ADDR,
0x11, temp);
-
XAxiEthernet_PhyWrite(&xaxieth, PHY_ADDR,
31,
0);
-
// 插上网线后, 绿灯常亮; 拔掉网线后, 绿灯熄灭
-
// 链路支持EEE节能: 有数据传输, 黄灯闪烁, 否则熄灭
-
// 链路不支持EEE节能: 有数据传输, 黄灯闪烁, 否则常亮
转载:https://blog.csdn.net/ZLK1214/article/details/115842136
查看评论