LAN8720 寄存器概覽和STM32 HAL庫讀寫測試

目錄

  • 寄存器
    • 0x00:Basic Control Register(BCR)
    • 0x01:Basic Status Register(BSR)
  • 連接
  • 測試寄存器讀寫
      • 測試
  • 補充

寄存器

//

0x00:Basic Control Register(BCR)

BIT15:Soft Reset
寫1復位,寫1之后自清除。復位之后的芯片配置源自Mode Configuration寄存器,Mode Configuration寄存器的初始值來自上電之后的strap pin。

BIT14:Loopback
寫1進入環回模式

BIT13:Speed Select
寫1選擇100M,寫0選擇10M
注意:如果自動協商被使能,那么此位設置無效

BIT12:Auto-Negotiation Enable
寫1使能自動協商
寫1之后會覆蓋掉BIT13:Speed Select和BIT8 Duplex Mode的配置

BIT11:Power Down
寫1進入掉電模式
注意:進入掉電模式之前要取消自動協商

BIT10:Isolate
寫1隔離PHY和MII

“PHY隔離模式”用于通過MDIO/MDC接口進行通信,無需MAC的管理。該模式用于檢查PHY自身功能,包括以太網連接和MDIO/MDC管理。
在此模式下,PHY與MII/RMII/RGMII隔離,以便獨立檢測PHY本身,確保其在PHY/MAC系統中使用時無任何問題。此模式主要用于調試階段,通過MDC/MDIO單獨管理PHY,以驗證其是否正常工作。

BIT9:Restart Auto-Negotiate
寫1重啟自動協商,置位之后自清除

BIT8:Duplex Mode
寫1全雙工,寫0半雙工

//

0x01:Basic Status Register(BSR)

BIT15~BIT9:通訊介質能力啟用
通訊介質參考https://blog.csdn.net/yeahpeople/article/details/116430588
LAN8720只能在部分介質類型下工作

BIT8:Extended Status
指示是否在index = 0x0F上有擴展狀態信息

BIT7, BIT6:RESERVED

BIT5: Auto-Negotiate Complete
自動協商完成

BIT4: Remote Fault
網上看到過一個因為電磁輻射導致報Remote Fault和link down的。

BIT3: Auto-Negotiate Ability
是否帶有自動協商能力

BIT2:Link status
網線連接狀態

BIT1:Jabber Detect
jabber幀是指有效長度大于指定最大長幀長度,且CRC校驗錯誤的幀

BIT0:Extended Capabilities
支不支持擴展能力寄存器

連接

測試寄存器讀寫

讀寫之前需要做一次硬件復位

//硬件復位
HAL_GPIO_WritePin(ETH_NRST_GPIO_Port, ETH_NRST_Pin, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(ETH_NRST_GPIO_Port, ETH_NRST_Pin, GPIO_PIN_SET);
HAL_Delay(5);

做完硬件復位做軟件復位,也是寄存器寫入BCR的示例

static uint8_t ret  = 0;
static uint8_t lan8720addr = 0;
//置位BCR-BIT15,Soft Reset
ret = HAL_ETH_WritePHYRegister(&heth, lan8720addr, PHY_BCR,PHY_RESET);
if (ret != HAL_OK) {Error_Handler();
}
HAL_Delay(100);

讀取BSR

ret = HAL_ETH_ReadPHYRegister(&heth, lan8720addr, PHY_BSR, &regvalue);
if (ret != HAL_OK) {Error_Handler();
}
SEGGER_RTT_printf(0, "%04x\n", regvalue);

測試

接入線纜和不接入線纜的情況下,BSR寄存器的區別

在這里插入圖片描述
可以看出,拔掉網線之后PHY芯片會重啟自動協商流程

補充

BCR,BSR寄存器是通用的,類似的網卡都會實現這個功能。
部分寄存器是供應商特定的,如下圖
在這里插入圖片描述
其中31寄存器指示自動協商的結果,如下
在這里插入圖片描述
ST的HAL庫會關注這個,需要手動修改hal庫內容
在這里插入圖片描述
怎么修改在后面LWIP移植的章節描述吧,只用8720做鏈路層通訊的話這個在庫里用不到

31號寄存器在網線連接和斷開的情況下寄存器內容如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87544.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87544.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87544.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

滲透測試深度分析:空密碼Administrator賬戶引發的安全風暴

滲透測試深度分析:空密碼Administrator賬戶引發的安全風暴0x01 測試背景 在內網滲透測試中,對Windows主機 192.168.1.98 使用 enum4linux 進行枚舉: enum4linux -u Administrator -p -a 192.168.1.98關鍵發現:Administrator賬戶空…

OpenCV CUDA模塊設備層-----高效地計算兩個 uint 類型值的帶權重平均值

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 OpenCV 的 CUDA 模塊(cudev) 中的一個設備端內聯函數,用于高效地計算兩個 uint 類型值的帶權重平均值。 該函…

[學習記錄]Unity毛發渲染[URP]-Shell基礎版

毛發,無論是人類的頭發、動物的皮毛,還是奇幻生物的絨毛,都是構成生命感和真實感不可或缺的元素。它對光線的獨特散射、吸收和反射,賦予了物體柔軟、蓬松、有生命力的質感。它不僅僅是讓角色看起來更“毛茸茸”那么簡單&#xff0…

數字孿生技術引領UI前端設計潮流:增強現實(AR)的集成應用

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言:AR 與數字孿生融合的設計革新浪潮在體驗經濟與技術融合的雙重驅動下&…

碰一碰發視頻源碼搭建與定制化開發:支持OEM

在近場通信(NFC)技術與移動終端深度融合的背景下,“碰一碰發視頻” 功能憑借便捷的交互體驗,在商業推廣、信息傳遞等場景中快速落地。不同于標準化解決方案的黑盒模式,基于源碼的定制化開發能從底層優化傳輸效率、提升…

Ubuntu 24.04 安裝配置 Redis 7.0 開機自啟

下載源碼 wget https://download.redis.io/releases/redis-7.0.12.tar.gz安裝依賴 & 準備環境 sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential tcl curl解壓 tar xzf redis-7.0.12.tar.gz編譯安裝 cd redis-7.0.12 make -j$(nproc) …

【Linux 系統】基礎IO——Linux中對文件的理解

13.基礎IO(1) 文章目錄13.基礎IO(1)文件的基本概念:內容與屬性文件的打開機制:fopen 和 open被打開的文件與磁盤文件的區別文件的內核數據結構文件與進程的交互方式標準輸入/輸出/錯誤與文件流系統調用與文件描述符文件打開模式(r/w/a/a&…

Go調度器的搶占機制:從協作式到異步搶占的演進之路|Go語言進階(7)

想象一下這樣的場景:你在餐廳排隊等位,前面有個人點了餐卻一直霸占著座位玩手機,后面的人只能干等著。這就是Go早期版本面臨的問題——一個goroutine如果不主動讓出CPU,其他goroutine就只能餓著。 今天我們來聊聊Go調度器是如何解…

開源模型應用落地-讓AI更懂你的每一次交互-Mem0集成Qdrant、Neo4j與Streamlit的創新實踐(四)

一、前言 在人工智能迅速發展的今天,如何讓AI系統更懂“你”?答案或許藏在個性化的記憶管理之中。Mem0作為一個開源的記憶管理系統,正致力于為AI賦予長期記憶與個性化服務能力。通過結合高性能向量數據庫Qdrant、圖數據庫Neo4j的強大關系分析能力以及Streamlit的高效可視化交…

基于微信小程序的校園二手交易平臺、微信小程序校園二手商城源代碼+數據庫+使用說明,layui+微信小程序+Spring Boot

school-market 介紹 基于微信小程序的校園二手交易平臺 功能結構圖 軟件架構 系統分為三個端,分別是客戶端、管理端、服務端; 客戶端:使用原生微信小程序實現 管理端:使用Layui實現 服務端:使用Java SpringBoot…

IDEA與Gradle構建沖突,導致java重復類的解決方案

項目構建總是報錯:錯誤提示1:java:重復類或錯誤提示2:Internal error in the mapping processor: java.lang.RuntimeException: javax.annotation.processing.FilerException: Attempt to recreate a file排查發現build/generated/sources/an…

如何調節筆記本電腦亮度?其實有很多種方式可以調整亮度

長時間面對屏幕工作、學習或娛樂,很多人會感到眼睛干澀、疲勞,甚至出現視力下降等問題。其實,這些問題的背后,往往隱藏著一個看似簡單卻極易被忽視的設置—屏幕亮度。 合適的屏幕亮度不僅能提升視覺體驗,還能有效緩解…

國際數字影像產業園創作空間升級 打造更優質營商環境

國際數字影像產業園創作空間升級后表現顯著,聚焦設施數字化與用戶體驗優化。整體提升了創意生態系統的競爭力,有效吸引全球企業。 升級核心改進 基礎設施現代化:引入智能硬件如5G網絡和云渲染設備,支持高清影像處理,…

淺談 webshell 構造之如何獲取惡意函數

前言這篇文章主要是總結一下自己學習過的如何獲取惡意函數的篇章,重點是在如何獲取惡意函數get_defined_functions(PHP 4 > 4.0.4, PHP 5, PHP 7, PHP 8)get_defined_functions — 返回所有已定義函數的數組我們主要是可以通過這個獲取危險的函數比如比如當然還有…

Python 單例模式與魔法方法:深度解析與實踐應用

在 Python 編程領域,設計模式解決常見問題的通用方案,而魔法方法則是 Python 語言賦予類強大功能的特殊接口。單例模式和魔法方法看似獨立,實則緊密關聯,魔法方法常被用于實現單例模式。深入理解并熟練運用它們,能夠幫助開發者編寫出結構清晰、高效且具有高復用性的代碼。…

pybind11 導出 C++ map 在 Python 層 get 訪問慢的優化方案

pybind11 導出 C map 在 Python 層 get 訪問慢的優化方案 問題描述 通過 pybind11 導出 C 的 std::map 或 std::unordered_map,在 Python 代碼中頻繁使用 get 方法訪問 value 時,性能非常低下。其主要原因是: pybind11 的 map 綁定會導致每次…

RTC實時時鐘DS1339U-33國產替代FRTC1339M

FRTC1339M是一款實時時鐘(RTC)芯片,由NYFEA徠飛公司制造。 FRTC13399M串行實時時鐘是一種低功耗的時鐘日期設備,具有兩個可編程的每日時間警報和一個可編程的方波輸出。通過2線雙向總線進行串行地址和數據傳輸。時鐘/日期提供秒、…

網絡常用端口號歸納

ICMP端口號:1IGMP端口號:2TCP端口號:6UDP端口號:17FTP端口號:20(控制信息傳輸)、21(數據傳輸)SSH端口號:22Telnet端口號:23SMTP端口號:25IPV6端口號&#xff…

Agent learn

1.人物設定: 1.1塑造智能體的思維能力與問題拆解與拆解分析能力 1.2個性化:輸出預期輸出示例(設定智能體的-》性格,語言風格) 1.3插件,調用工具 1.4可設定結構化表達 1.5調優 1.6常見問題: …

五層協議介紹

層次核心功能典型協議/設備應用層為用戶應用程序提供網絡服務接口(如文件傳輸、電子郵件、網頁瀏覽)HTTP、FTP、SMTP、DNS、SSH傳輸層提供端到端的可靠或不可靠數據傳輸,處理流量控制和差錯恢復TCP(可靠)、UDP&#xf…