關於88e1111 phy模塊的配置說明

来源:https://www.cnblogs.com/dudiaoguhan/p/18045677
-Advertisement-
Play Games

關於88e1111 phy模塊的配置說明 1、前言 ​ 本次主要是參考了88e1111的phy晶元的數據手冊,對於88e1111這款經典的 10M/100M/1000M 乙太網晶元的一些基礎軟體硬體配置做一些說明,拋磚引玉,有不對之處,請多多指教。 2、88e1111 phy晶元的硬體相關 1、ph ...


關於88e1111 phy模塊的配置說明

1、前言

 ​ 本次主要是參考了88e1111的phy晶元的數據手冊,對於88e1111這款經典的 10M/100M/1000M 乙太網晶元的一些基礎軟體硬體配置做一些說明,拋磚引玉,有不對之處,請多多指教。

2、88e1111 phy晶元的硬體相關

1、phy晶元的作用

 ​ phy晶元主要是實現數字信號和模擬信號的轉換,將MAC層硬體傳過來的數據轉換成模擬信號將數據送出去。比如我們平時調試板卡的時候,將電腦通過網線連接銅口,確認好雙方的ip以後就可以互相ping通。看起來好像很簡單,實際上網線連接銅口,銅口是不能直接連接板卡上的cpu或者單片機的,cpu和單片機一般提供MII/GMII這樣的介面,實現MII/GMII這樣的介面與銅口的連接,中間的實現連接轉換的模塊就是phy模塊,也就是 CPU->MII/GMII < -- > phy < -- > 銅口 的結構。

phy晶元模式

2、88e1111支持的模式

​ ​ 88e1111不光支持以上這樣的場景,根據不同的需求對phy晶元進行配置,能夠轉換成不同的電平協議運用在不同的場景上,比如phy晶元和網路交換機連接,phy與phy晶元連接。88e1111支持多種轉換模式,查看他的數據手冊可以發現,88e1111支持的模式很多,主要分為Copper和fiber兩類,還有就是直接的電平轉換,我們對幾種常用的模式說明一下。

phy晶元模式
1.Copper模式
MAC轉Copper媒體介面示意圖

 ​ 可以看到的是,copper模式下支持的協議轉換是很多的,88e1111手冊上也沒有對這些一一做解釋,倒是有一張表格是告訴配置 HWCFG_MODE[3:0] 的對應的值來切換phy的模式,這個HWCFG_MODE[3:0]實際上對應的是寄存器 R27 Extended PHY Specific Status Register 的低四位,這個在我們後續的軟體部分再做詳細說明。

Copper模式切換寄存器配置
SGMII Modes

 ​ 這次主要講一下sgmii模式在配置中的一些常見誤區,sgmii的電平協議是區分Master和Slave模式,也就是說,當兩個sgmii的介面互相連接的時候要區分主從,由主機主動發起發送到從機,我們的phy晶元是預設為Master模式,一般交換機晶元預設為Slave模式(不絕對,要看一下手冊,這裡說的是bcm5396交換機),當phy晶元與phy晶元連接的時候,兩邊都為Master模式,這時不用擔心,兩邊的sgmii介面都可以主動發起,兩邊介面會相互協商成一主一從的模式,不會影響正常通信。當phy晶元與交換機連接時,一主一從,如果速率,雙工這些配置好了的話,很快就能link上。最容易出問題的就是有的時候做一些複雜項目,存在兩個交換機通過sgmii的方式互聯,此時兩邊都為Slave模式,就會出現兩邊無人發起通信的情況,導致sgmii通信一直異常,此時就要去配置一下交換機上面sgmii的主從模式,將一邊配置為Master模式即可,下麵是bcm5396交換機寄存器關於sgmii的主從模式配置的說明。

5396交換機配置SGMII主從模式
2.Fiber模式
MAC轉Fiber媒體介面示意圖

 ​ 通過這個圖,我們可以看到Fiber模式主要是用於轉換為光纖模式,【註】1000BASE-X表示光纖介面,1000BASE-T表示銅介質雙絞線介面。
​ ​ Fiber模式下配置 HWCFG_MODE[3:0] 寄存器來切換模式的配置表如下。

Fiber模式切換寄存器配置
GMII to Fiber Mode

 ​ 手冊上強調了一下當配置HWCFG_MODE[3:0] 為”0111“,將模式選擇為GMII轉光纖的模式,如果GMII那邊是連接的MAC層的話,只能選擇強制千兆的模式,如果phy晶元是用於串列介面的電平轉換的時候,並非一邊連接的MAC層的話,是支持千兆自協商模式的。

GMII to Fiber Mode
3.GMII/MII to SGMII and RGMII to SGMII Mode

 ​ 這是手冊上寫的第三種特殊的模式,他意思是純粹的電平協議轉換,並不涉及到Copper或者Fiber。現實中我們也經常會遇到這種情況,例如一張板卡的出去的phy晶元,對外為SGMII模式,連接到另一張板卡,另一張板卡對外也是SGMII模式,兩邊的phy互相連接就是通過SGMII來互相通信,此時這種模式下,支持10M/100M/1000M自協商模式。

GMII/MII to SGMII and RGMII to SGMII Mode

phy的硬體模式配置

 ​ 88e1111如果硬體配置得當,正常來說是不需要軟體進行再次配置的,我們的硬體可以通過配置管腳配置整個phy晶元的模式,全雙工還是半雙工,速率等,接下來我們來看看硬體是如何通過配置管腳來配置這些的。
​ ​ 1.根據數據手冊可以看到,總共有7根管腳可以對phy晶元進行配置,每根管腳對應3個bit,每個bit都有不同的含義。

硬體配置phy晶元管腳

 ​ 2.硬體通過將這7根管腳接上不同的管腳,來配置管腳對應的bit值。88e1111提供了一個映射表,不同的管腳對應不同的值。

管腳常量值映射表

 ​ 3.將對應不同值的管腳連接到CONFIG[6:0]上以後,就能對phy的模式進行硬體配置,88e1111的數據手冊上提供了一個例子,很好的展示了一下該如何配置硬體配置管腳,將CONFIG0直接連接LED_RX管腳,就會將phy地址bit[2:0]配置為010,將CONFIG2接到LED_DUPLEX就能將模式配置為自協商1000base-t的模式。

硬體配置phy模式常式

3、88e1111 phy晶元的軟體相關

1、軟體配置phy晶元的介面和時序

  查看88e1111的數據手冊,我們可以看到,88e1111可以通過兩種方式進行寄存器配置等,一種是MDIO協議,一種是IIC協議,IIC支持100K或400K的速率,當軟體寄存器寫入以後,板卡需要進行軟複位操作,phy地址預設使用[4:0]五個bit表示,地址由硬體配置地址管腳高低電平來確定。

兩種訪問phy晶元的協議
1.MDIO訪問phy寄存器
  • MDIO讀寫時序圖如下
MDIO讀寫時序圖
2.IIC訪問phy寄存器
  • IIC讀寄存器時序圖如下
IIC讀時序圖
  • IIC寫寄存器時序圖如下
IIC寫時序圖

2、phy寄存器配置及實現

1.寄存器列表
phy寄存列表
2.R22 Extended Address 寄存器

  可以根據上表可以看到,phy的寄存器根據page的切換大體可以分為copper和fiber兩種模式,根據數據手冊的說明,通過配置 R22 Extended Address 寄存器可以配置page0或者1,用以切換不同的模式。

R22 Extended Address
3.R0 Control Register 寄存器

  對phy寄存器進行配置以後,並不會立刻生效,需要對phy進行軟複位操作以後才能夠生效,通過配置R0 Control Register寄存器可以配置自協商,雙工等,同時也可以操作phy的軟複位操作。

R0 Control Register
4.R1 Status Register 寄存器

  通過查看phy的 R1 Status Register 寄存器可以查看許多情況,有一個小技巧是,在讀取 R17 PHY Specific Status Register 寄存器之前,可以先讀一下 R1 Status Register 的bit5,可以用以確定phy是否協商完成。

R1 Status Register
5.R17 PHY Specific Status Register 寄存器

  通過查看phy的 R17 PHY Specific Status Register 寄存器可以查看phy的link狀態,phy的速率,phy雙工模式。

R17 PHY Specific Status Register
6.R27 Extended PHY Specific Status Register 寄存器

  通過修改phy的 R27 Extended PHY Specific Status Register 寄存器bit[3:0],可以配置phy的模式,等同於硬體上修改 HWCFG_MODE[3:0] ,可以配置 GMII to SGMIIRGMII to SGMIIRGMII to Fiber等模式。

R27 Extended PHY Specific Status Register
7.R2 PHY Identifier 寄存器

  通過查看 R2 PHY Identifier 寄存器,可以獲取到phy的設備id,由圖可以看到,目前phy的id是0x141,通過讀取設備id可以判斷設備類型,以及phy設備是否能正常訪問。

R2 PHY Identifier

4、總結

  88e1111的配置大體上就是這些,此次主要涉及硬體和軟體配置,如果在實際調試過程中,phy的狀態感覺一直不太對勁,link不上的話,將兩邊phy晶元速率強制一下看看。在調試1000base-x的時候,很多時候都存在自協商不成功的情況,這個時候強制速率可以來看看連接狀態是否得到改善,還有一個要註意的點就是,88e1111在上電以後,需要做硬複位操作,這樣配置的參數才能得以啟動,當開發人員操作軟體寄存器對phy進行二次配置,也需要去配置 R0 Control Register 寄存器去軟複位一下phy晶元,這樣才能使寄存器的配置生效。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 痞子衡嵌入式半月刊: 第 93 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回顧 ...
  • 在判斷物體在空間中的姿態以及運動軌跡時, 用得最多的是加速度和角速度感測器. 加速度感測器可以計算傾角, 陀螺儀可以計算角速度, 本文介紹常用的傾角計算方法, 結合陀螺儀提高動態精度的互補濾波. ...
  • 為什麼要選擇VSCode+PicGo+Gitee 主要是平時寫文章的平臺,要麼是收會員費用,要麼是本站圖片鏈接只能在本站網站訪問,換一個平臺,圖片就裂了,圖片問題困擾我很久,也是經過很多試用,最終選定這個工具組合,之前圖片倉庫使用的是Github,但是在國內,Github的訪問速度簡直感人!所以後來... ...
  • 零基礎 STM32 第一天 一、認知STM32 1、STM32概念 STM32:意法半導體基於ARM公司的Cortex-M內核開發的32位的高性能、低功耗單片機。 ST:意法半導體 M:基於ARM公司的Cortex-M內核的高性能、低功耗單片機 32:32位單片機 2、STM32開發的產品 STM3 ...
  • 由於日常編寫代碼,都是使用UTF-8編碼,而CMD預設是GBK編碼,導致執行mvn命令時,出現中文亂碼問題,而chcp命令只在當次打開有效,每次打開都要重新切換代碼頁十分不便。 對於CMD,可以通過修改註冊表的方式,永久修改預設代碼頁。打開註冊表編輯器,定位到\HKEY_CURRENT_USER\C ...
  • STM32ADC單通道轉換 1. 初始化 ADC功能初始化主要分三部分,GPIO初始化、ADC模式初始化與NVIC初始化。 1.1初始化GPIO void ADC_GPIO_Config(void) // 配置ADC通道引腳 { GPIO_InitTypeDef GPIO_InitStructure ...
  • STM32FATFS文件系統移植 1。 FATFS簡介 FATFS文件系統是一個用於在微控制器上運行的開源文件系統,支持FAT/FATFS、NTFS、exFAT等主流文件系統,且一直保持更新。在此以FatFs官網最新版本v0.15進行移植。 2. 移植具體操作 2.1 下載FatFs源碼 FATFS ...
  • linux伺服器文件實時同步 1 背景說明 在做系統集群部署時,涉及到兩個或多個伺服器之間文件同步.在軟體層面linux服務環境找到以下兩種同步方式 利用linux NFS功能將網路共用文件掛載成本地目錄 採用文件監聽,實時推送 伺服器資源如下 伺服器1 10.2.4.51 ,作為主伺服器 伺服器2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...