前言
本博文承接博文 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 我們可以知道?