前言
本博文承接博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 。
本博文和博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 的目录是找出百问网(100ask)的IMX6ULL开发板与NXP官方提供的公板MCIMX6ULL-EVK(imx6ull14x14evk)
在以太网硬件实现上的不同,进而去修改NXP官方提供的公板的BSP里的u-boot,使得u-boot能正常初始化以太网。
由于是要找出不同,所以本篇博文就一边研究芯片(LAN8720A)与MAC(以太网控制器)的每个连接,一边对比看有没有什么不同。
注意:物理层芯片(LAN8720A)只支持“RMII”协议,不像物理层芯片KSZ8081RNB那还还支持“MII”协议。
相关的实现协议:“RMII”已经在博文https://blog.csdn.net/wenhao_ir/article/details/145663029中介绍过了。
原理图下载地址
百问网(100ask)的IMX6ULL开发板的原理图的百度网盘下载地址:
https://pan.baidu.com/s/1YqW8V3eQ42gD9FfZ2jf-Mw?pwd=g6e1
芯片(LAN8720A)的Data sheet下载地址
芯片(LAN8720A)的Data sheet的百度网盘下载地址
https://pan.baidu.com/s/1ZCVbzF2QH1SYCKOtnvSUWg?pwd=7i7a
芯片(LAN8720A)的封装图
芯片(LAN8720A)的模块结构图
芯片(LAN8720A)对引脚Buffer Types的描述
关于Buffer Types的详情说明,见我的另一篇博文,https://blog.csdn.net/wenhao_ir/article/details/145703444
原理图中MAC(以太网控制器)的相关部分
打开原理图文件:“\06_开发板原理图\02_Core_board(核心板)\MYC-Y6ULX1211.pdf”
翻到第7页,就有MAC(以太网控制器)的相关原理图,截图如下:
两个物理层芯片的寄存器的相关设置是一样的(两个板子的相关代码是通常用)
这篇博文有一个目的,就是要搞清楚公板的以太网实现与开发板的以太网实现有何区别,当然最大的区别就是物理层芯片不一样,不过,光知道物理层芯片不一样是不行的,还要搞清楚二者有何使用上的差别。
通过查阅相关资料,我发现两个芯片都是利用由引脚MDIO
和引脚MDC
构成的“SMI(Serial Management Interface)”接口来读取和写入寄存器的,这是它们的共同点,而两个板子中引脚MDIO
和引脚MDC
与主机的连接都是相同的,所以我们只需要去看二者的寄存器一不一样,就知道在寄存器配置上二者是否一样了。
两个物理层芯片的寄存器映射表
物理层芯片KSZ8081RNB的寄存器映射表的截图如下:
物理层芯片LAN8720A的寄存器映射表的截图如下:
从两个芯片的寄存器映射表可以看出,最主要的前4个寄存器(索引值为0~3)的名称都是一样的。
物理层芯片LAN8720A的寄存器的个数明显是少于物理层芯片KSZ8081RNB的,原因很简单,因为物理层芯片KSZ8081RNB不仅支持RMII协议,还支持MII协议呀。
两个物理层芯片的Basic Control Register
寄存器的详情
我们再看下具体的各寄存器的意义一不一样,以索引值为0的寄存器Basic Control Register
为例,我们来看一看。
物理层芯片KSZ8081RNB的0号寄存器Basic Control Register
的详情截图如下:
物理层芯片LAN8720A的0号寄存器Basic Control Register
的详情截图如下:
可见,二者是完全兼容一致的。
我又看了下1号寄存器的前几位,发现也是一样的:
结论:两个板子的相关代码是通用的
综上,我们可以得出结论,两个板子通过两个物理层芯片的寄存器设置其功能和模式的相关代码是通常用。
通过原理图提取物理层芯片的相关引脚
以太网1的相关引脚提取
说明:百问网的开发板,以太网1的物理层芯片不像公板那样,是放在底板的原理图中的,而是放到核心版中的,以太网2的物理层芯片才像公板那样,是放在底板的原理图中的。
打开原理图文件:“\06_开发板原理图\02_Core_board(核心板)\MYC-Y6ULX1211.pdf”
翻到第10页,就能发现以太网1的MAC控制器所连接的物理层芯片(LAN8720A)的原理图了,截图如下:
我们感兴趣的引脚提取如下:
MDIO
MDC
RXD0/MODE0
RXD1/MODE1
CRS_DV/MODE2
RXER/PHYAD0
TXD0
TXD1
TXEN
INT/REFCLKO
XTAL1/CLKIN
XTAL2
RST
可见,一共有13个我们感兴趣的引脚。
以太网2的相关引脚提取
说明:百问网的开发板,以太网1的物理层芯片不像公板那样,是放在底板的原理图中的,而是放到核心版中的,以太网2的物理层芯片才像公板那样,是放在底板的原理图中的。
打开原理图文件:“\06_开发板原理图\01_Base_board(底板)\100ask_imx6ull_v1.1.pdf”
翻到第10页,就能发现以太网1的MAC控制器所连接的物理层芯片(LAN8720A)的原理图了,截图如下:
RST
MDIO
MDC
RXD0/MODE0
RXD1/MODE1
CRS_DV/MODE2
RXER/PHYAD0
TXD0
TXD1
TXEN
INT/REFCLKO
XTAL1/CLKIN
XTAL2
可见,一共也有13个我们感兴趣的引脚。
接下来,我们就来分析这些引脚的连接情况。
为什么从以太网2的物理层芯片开始分析?
很简单:因为官方提供的移植教程只分析了以太网2的连接情况,其实以太网1和以太网2的连接情况基本上是一样的。
以太网2的物理层芯片各引脚连接情况分析
在本篇博文的上面,已经提取了以太网2的物理层芯片各个感兴趣的引脚,接下来就开始分析。
引脚RST(nRST)【与公板不一样】
功能: 用于对 PHY 芯片进行硬件复位。通过将该引脚拉低,PHY 可以被复位,恢复到初始状态。
相关原理图如下:
可见,这个复位引脚是直接连到处理器的SNVS_TAMPER6
引脚上的,而通过博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 我们可以知道ÿ