在以太网使用过程中,即使网络通信正常,状态指示灯可能会出现显示异常的情况。本文将以ACZ702开发板为例,详细介绍如何通过配置RTL8211F-CG PHY芯片的寄存器来规范化网络状态指示灯的显示。
需要说明的是,对于所有使用RTL8211F-CG以太网PHY芯片的开发板,本文介绍的配置方法均适用。
1、分析LED1和LED2
从RTL8211F-CG数据手册中可以3个led,分别表示10M、100M、1000M的Active和Link。
现在查看ACZ702原理图,可见LED1是接在绿灯,LED2是接在黄灯上
继续在数据手册中,找到Table 16,如下图所示,LED0~LED2是由Reg 16控制。
2、设置EEELCR寄存器
此寄存器作用是控制和监控EEE功能中的链路变化状态。我们需要先关闭它,以免影响接下来的操作。
注意:代码是以linux中举例,但是原理都是通用的
#(1)首先切换到页面0xd04
./mdio-tool w eth0 0x1f 0xd04
#(2)读取 EEELCR 寄存器值,笔者返回值为0x600f
./mdio-tool r eth0 0x11
# (3) 将位1到位3,写入0;禁用EEE
./mdio-tool w eth0 0x11 0x6000
# (4) 切回默认页面
./mdio-tool w eth0 0x1f 0x0000
3、设置LCR寄存器
以太网状态指示灯的显示模式由LED控制寄存器(LCR)进行配置。通过修改LCR寄存器的值,我们可以根据实际需求自定义各个LED指示灯的工作模式,实现不同的状态显示效果。
#(1)首先切换到页面0xd04
./mdio-tool w eth0 0x1f 0xd04
#(2)读取 LCR 寄存器值,笔者返回值为0x617f
./mdio-tool r eth0 0x10
# (3) 此时根据自己的要求,修改好LCR寄存器值
./mdio-tool w eth0 0x10 0x617f
# (4) 切回默认页面
./mdio-tool w eth0 0x1f 0x0000
笔者下面对0x617f值讲解,将0x617F转换为二进制:0110 0001 0111 1111,可得到:
LED2配置 :
- LED2_ACT : 1 - 启用传输/接收指示
- LED2_LINK_1000 : 1 - 启用1000Mbps链路指示
- LED2_LINK_100 : 0 - 禁用100Mbps链路指示
- LED2_LINK_10 : 0 - 禁用10Mbps链路指示
LED1配置:
- LED1_ACT : 0 - 禁止传输/接收指示
- LED1_LINK_1000 : 1 - 启用1000Mbps链路指示
- LED1_LINK_100 : 1 - 启用100Mbps链路指示
- LED1_LINK_10 : 1 - 启用10Mbps链路指示
在千兆网络下,LED2是常亮,当有数据传输时,LED2会闪烁;在链路速率为100Mbps或10Mbps时:LED2不亮;LED1在1000、100、10兆下都是常亮状态 |