
在《英飛凌Aurix2G TC3XX GETH模塊詳解》一文中我們詳細介紹了TC3xx芯片GETH模塊的硬件原理,在《【車載以太網】Eth Stack Bringup》一文實現了Eth Stack的Bring up, 在《【車載以太網】AUTOSAR架構下EthTrcv實戰詳解》一文介紹基于RTL8211F的EthTrcv的實戰調試經驗,《【車載以太網】AUTOSAR架構下TC3xx芯片是如何將一幀ETH報文發送出去的》一文介紹了AUTOSAR架構下TC3xx芯片是如何將一幀ETH報文發送出去的,《》一文介紹了AUTOSAR架構下TC3xx芯片是如何將一幀ETH報文接收上來的。我們將繼續深入ETH Stack的各個模塊的詳細實現, 本文將詳細分析AUTOSAR架構下TC3xx芯片是如何如何通過MDIO協議讀寫PYH寄存器的。
AUTOSAR BSW: Vector Davinci
MCAL: EB Infineon
HW Platform: TC3xx
Debug Tool: UDE


TC3xx芯片的MAC通過RGMII接口讀寫PYH芯片(RTL8211F)數據,通過MDIO控制PYH芯片(讀寫寄存器)。
TC3xx芯片手冊中關于MDIO協議的描述

RTL8211F芯片手冊中關于MDIO協議的描述


前導碼 (Preamble / PRE):32個連續“1”比特。用于讓PHY與MAC的管理時鐘(MDC)同步,為即將開始的操作做好準備。不過在某些實現中,這個字段是非必需的。
起始位 (Start of Frame / ST):2位,固定為“01”。它標志著一次管理操作真正開始,并幫助接收方校準后續數據的邊界。
操作碼 (Operation Code / OP):2位,定義本次操作的類型。 “01” 表示這是一個寫操作,“10” 表示這是一個讀操作。
PHY地址 (PHY Address / PHYAD):5位,指定要與哪個PHY芯片通信。MDIO總線可以掛載多個PHY(最多32個),每個PHY都有唯一的地址,只有地址匹配的芯片才會響應后續的命令。
寄存器地址 (Register Address / REGAD):5位,指定要訪問的PHY芯片內部的哪個寄存器(每個PHY最多32個寄存器)。
狀態轉換域 (Turnaround / TA):2位,這是一個用于避免總線沖突的“安全間隔”。
讀操作:第一個TA周期,MAC將MDIO線設置為高阻態,釋放總線控制權;第二個TA周期,由被選中的PHY驅動MDIO線,輸出“0”作為響應。
寫操作:MAC在這2個周期內持續驅動MDIO線,輸出“10”。
數據域 (Data / DATA):16位,承載真正讀或寫的數據。
寫操作:由MAC將這16位數據寫入PHY的指定寄存器。
讀操作:由PHY將這16位數據(指定寄存器的值)發送給MAC。
空閑狀態 (IDLE):操作完成后,MDIO線會回到高阻態,通常由外部上拉電阻將其拉高,等待下一次通信的開始。


EthTrcv_30_EthMii_ReadTrcvReg -> EthTrcv_30_EthMii_Internal_ReadTrcvReg -> Eth_30_Tc3xx_ReadMii -> Eth_30_Tc3xx_Internal_ReadMii


1:配置MAC_MDIO_ADDRESS寄存器啟動MDIO讀PHY寄存器流程。
2:通過MAC MDIO Data Register拿到PHY寄存器的讀取結果。


1:設置GB位為1開始讀寫訪問。


2:GOC_1:GOC_0設置為11b讀命令。

3:設置要讀的PYH寄存器地址

4:設置選擇的PHY設備(MAC可以掛在多個PHY芯片)。

5:設置MDC時鐘分頻系數。


讀MAC_MDIO_DATA寄存器的GMII DATA位域,拿到PHY寄存器的值。

EthTrcv_30_EthMii_WriteTrcvReg -> EthTrcv_30_EthMii_Internal_WriteTrcvReg -> Eth_30_Tc3xx_WriteMii -> Eth_30_Tc3xx_Internal_WriteMii
Eth_30_Tc3xx_Internal_WriteMii -> Eth_30_Tc3xx_LL_WriteMiiTrigger


和讀PYH寄存器差不多,只不過需要將:
MAC_MDIO_ADDRESS寄存器的GOC_1:GOC_0設置為01b讀命令。
MAC_MDIO_DATA寄存器的GMII DATA位域寫入寄存器值。
MAC通過MDIO協議(MDIO pin和MDC pin組成)控制PHY芯片,具體MDIO協議由硬件實現,ETH Driver只需要控制MAC_MDIO_ADDRESS和MAC_MDIO_DATA寄存器即可控制MAC通過MDIO協議讀寫PHY寄存器。
End
「汽車電子嵌入式在CSDN上同步推出AUTOSAR精進之路專欄,本專欄每個模塊完全按實際項目中開發及維護過程來詳細介紹。模塊核心概念介紹、實際需求描述、實際工程配置、特殊需求介紹及背后原理、實際工程使用經驗總結。 目的是讓讀者看完每一個章節后能理解原理后根據需求完成一個模塊的配置或者解決一個問題。」
點擊文章最后左下角的閱讀原文可以獲取更多信息
或者復制如下鏈接到瀏覽器獲取更多信息
https://blog.csdn.net/qq_36056498/article/details/132125693
文末福利
2.為便于技術交流,創建了汽車電子嵌入式技術交流群,可盡情探討AP,CP,DDS,SOME/IP等前沿熱點話題,后臺回復“加群”即可加入;
注:本文引用了一些第三方工具和文檔,若有侵權,請聯系作者刪除!
推薦閱讀
汽車電子嵌入式精彩文章匯總第一期:20210530-20230703
汽車電子嵌入式精彩文章匯總第2期
汽車電子嵌入式精彩文章匯總第3期
汽車電子嵌入式精彩文章匯總第4期
AUTOSAR項目實戰(9) -CanTrcv模塊配置實踐
AUTOSAR架構下Multi-Core Com配置實戰
TC3xx芯片看門狗復位的默認行為分析
AUTOSAR架構下TC3xx芯片是如何進行模式切換的
AUTOSAR架構下NvM_ReadAll時間優化的實用方案(上)
AUTOSAR架構下NvM_ReadAll無法退出問題分析
TC3xx芯片RAM監控機制的補充
TC3xx芯片RAM ECC錯誤軟件調試
TC3xx芯片ROM ECC錯誤軟件調試
內存分區設計及鏈接文件實現
AUTOSAR項目實戰(10)-Alignment Error異常問題分析
AUTOSAR項目實戰(11)-AUTOSAR OS MPU配置及調試
TC3xx芯片[Class 4, TIN 3] trap原因分享
CanSM何時設置BusOffDTC及常見BusOff內部原因總結
AUTOSAR架構下如何測試NvM的使用率
AUTOSAR架構下如何測量Task的周期和運行時間
EVADC功能安全需求及一些軟硬件設計注意事項
AUTOSAR項目實戰(12)-Can Driver模塊配置使用實踐
NvM實車問題分析-看基礎扎實老司機如何快速定位問題
TC3xx芯片SMU FSP自檢原理和實現
【功能安全】ESM[SW]:SMU:ALIVE_ALARM_TEST原理及具體實現
【功能安全】ESM[SW]:SYS:MCU_FW_CHECK原理及注意實現
LIN收發器TJA1021功耗過高問題分析
【功能安全】英飛凌TC3xx芯片LBIST實現原理
【車載以太網】Eth Stack Bringup
【車載以太網】AUTOSAR架構下EthTrcv實戰詳解
【車載以太網】AUTOSAR架構下TC3xx芯片是如何將一幀ETH報文發送出去的
End
歡迎點贊,關注,轉發,在看,您的每一次鼓勵,都是我最大的動力!
汽車電子嵌入式
微信掃描二維碼,關注我的公眾號