一. 简介
正点原子的开发板 ALPHA开发板,有线网络硬件方案所使用的也是最常用的一种方案,IMX6ULL芯片内部是自带 MAC网络芯片的,所以,也就是采用 "SOC内部集成网络MAC外设+ PHY网络芯片方案"。
前面一篇文章简单了解了(ALPHA开发板上的) PHY网络芯片 的特性,PHY地址,工作模式等,文章如下:
ALPHA开发板上PHY网络芯片LAN8720-CSDN博客
本文简单了解一下LAN8720网络芯片的几个常用的寄存器。
二. ALPHA开发板上PHY网络芯片LAN8720:常用的几个寄存器
1. BCR控制寄存器
LAN8720A 的前 16 个寄存器满足 IEEE 的要求,在这里我们只介绍几个常用的寄存器,首先是 BCR(Basic Control Rgsister)寄存器,地址为 0,BCR 寄存器各位如下表所示。
|---------|---------------------------------------------------|----------|
| ##### 位 | ##### 描述 | ##### 类型 |
| 15 | 软件复位 1:软件复位,此位自动清零 | R/W |
| 14 | 回测 0:正常运行 1:使能回测模式 | R/W |
| 13 | 速度选择 0:10Mbps 1:100Mbps 注意:当使用自动协商功能时此位失能 | R/W |
| 12 | 自动协商功能 0:关闭自动协商功能 1:打开自动协商功能 | R/W |
| 11 | 掉电(power down) 0:正常运行 1:进入掉电模式 注意:进入掉电模式前自动协商必须失能 | R/W |
| 10 | 隔离 0:正常运行 1:PHY 的 RMII 接口电气隔离 | R/W |
| 9 | 重启自动协商功能 0:正常运行 1:重启自动协商功能 注意:此位会被自动清零 | R/W SC |
| 8 | 双工模式 0:半双工 1:全双工 注意:开启自动协商功能后此位失效 | R/W |
| 7:0 | 保留 | RO |
我们说的配置 PHY 芯片,重点就是配置 BCR 寄存器,由于 LAN8720A 是个 10/100M 的 PHY ,因此,上面的表 中没有体现出 1000M 相关的配置。但是 10/100M 相关的配置是和 IEEE 的规定完全相符的,大家可以选择一个其他的 10/100M 的 PHY 芯片对比看一下,比如 NXP 官 方 EVK 开发板使用的 KSZ8081 。
2. BSR状态寄存器
接下来看一下 BSR(Basic Status Register) 寄存器,地址为 1 。此寄存器为 PHY 的状态寄存器,通过此寄存器可以获取到 PHY 芯片的工作状态, BSR 寄存器各位如表 69.2.2.4 所示:
|-------------|---------------------------------------------------------|----------|
| ##### 位 | ##### 描述 | ##### 类型 |
| 15 | 100BAST-T4 0 :不支持 T4 1 :支持 T4 | RO |
| 14 | 100BAST-TX 全双工 0 :不支持 TX 全双工 1 :支持 TX 全双工 | RO |
| 13 | 100BAST-TX 半双工 0 :不支持 TX 半双工 1 :支持 TX 半双工个 | RO |
| 12 | 10BAST-T 全双工 0 :不支持 10Mbps 全双工 1 :支持 10Mbps 全双工 | RO |
| 11 | 10BAST-T 半双工 0 :不支持 10Mbps 半双工 1 :支持 10Mbps 半双工 | RO |
| 10:6 | 保留 | RO |
| 5 | 自协商功能完成 0 :自动协商未完成 1 :自动协商完成 | RO |
| 4 | 远端错误 0 :无远端错误 1 :检测到远端错误 | RO/HL |
| 3 | 自协商功能 0 :不能执行自协商功能 1 :可以执行自协商功能 | RO |
| 2 | 连接状态 0 :连接断开 1 :连接建立 | RO/LL |
| 1 | Jabber 检测 0 :未检测到 jabber 1 :检测到 jabber | RO/LH |
| 0 | 扩展功能 0 :不支持扩展寄存器 1 :支持扩展寄存器 | RO |
上表中可以看出,和 IEEE 标准规定相比, LAN8720A 的 BSR 寄存器少了几个位, 这个没关系的,不管什么 PHY 芯片,只要它实现了的位和 IEEE 规定相符就行。通过读取 BSR 寄存器的值,我们可以得到当前的连接速度、双工状态和连接状态等。
3. PHY地址寄存器
接下来看一下 LAN8720A 的 PHY ID 寄存器 1 和 ID 寄存器 2 ,地址为 2 和 3 ,后面就成为寄存器 2 和寄存器 3 。这两个寄存器都是 PHY 的 ID 寄存器。
IEEE 规定寄存器 2 和寄存器 3 为 PHY 的 ID 寄存器,这两个寄存器组成一个 32 位的唯一 ID 值。
IEEE 规定了一叫做 OUI 的 ID 组成方式,全称是 Organizationally Unique Identifier , OUI 一共 32 位,分为三部分: 22 位的 ID+6 位厂商型号 ID+4 位厂商版本 ID 。组成如图 69.2.2.5 所示:
LAN8720A 的 ID 寄存器 2 如下表 所示:
ID 寄存器 3 如下表 所示:
4. LAN8720A 的特殊控制/状态寄存器
最后来看一下 LAN8720A 的特殊控制 / 状态寄存器,此寄存器地址为 31 ,寄存器内容是 LAN8720A 厂商自定义的,此寄存器的各个位如表 69.2.2.7 所示 :
|-------------|--------------------------------------------------------------------------------------|--------------|
| ##### 位 | ##### 描述 | ##### 类型 |
| 15:13 | 保留 | RO |
| 12 | 自协商完成 0 :自协商未完成或者自协商关闭 1 :自协商完成 | RO |
| 11:5 | 保留 | R/W |
| 4:2 | 速度指示 001 : 10BASE-T 半双工 101 : 10BAST-T 全双工 010 : 100BAST-TX 半双工 110 : 100BAST-TX 全双工 | RO |
| 1:0 | 保留 | RO |
特殊控制 / 状态寄存器中我们关心的是 bit2~bit4 这三位,因为通过这 3 位来确定连接的状态和速度,关于 LAN8720A 这个 PHY 就讲解到这里。