PHY芯片快速深度理解
摘要:
什么是phy 為什么要熟悉RJ45網(wǎng)口 網(wǎng)絡(luò)七層協(xié)議 兩個(gè)模塊進(jìn)行通信 什么是MDIO協(xié)議 MDIO的作用 MDIO沒(méi)那么重要 MDIO讀寫(xiě)時(shí)序 為什么說(shuō)讀取的phy最多32個(gè)
mido協(xié)議即SMI協(xié)議,SMI協(xié)議也是一種通信協(xié)議類似與I2C協(xié)議但是通信方式不一樣。SMI包含兩根信號(hào)線,一個(gè)MDC時(shí)鐘線,一個(gè)MDIO雙向傳輸?shù)臄?shù)據(jù)線,
如圖為SMI應(yīng)用框圖。STA設(shè)備通過(guò)MDIO接口與PHY通信。STA(StaTIon Management)為主控設(shè)備,比如MCU、MAC、ONU等。PHY為從設(shè)備。一個(gè)STA最多管理32個(gè)PHY。MDC信號(hào)由STA控制,MDIO信號(hào)根據(jù)通信方式的不同可以由STA或者PHY接管控制。如圖通常MDIO會(huì)接一個(gè)電阻上拉至接口電源。
MDIO沒(méi)那么重要
MDIO在上面說(shuō)到的兩個(gè)模塊通信,我提到了 arm芯片和網(wǎng)卡芯片直接需要,那么這個(gè)真的有必要嗎?其實(shí)沒(méi)必要連接!!!
換個(gè)話說(shuō) 不連接也可以使得網(wǎng)絡(luò)暢通,因?yàn)榫W(wǎng)絡(luò)的數(shù)據(jù)傳輸時(shí)靠RGMII不是靠MDIO,MDIO的作用僅僅只是用來(lái)查看一些狀態(tài)和功能,還有簡(jiǎn)單的控制,而這些簡(jiǎn)單的控制是完全可以有網(wǎng)卡芯片內(nèi)置去寫(xiě)死,arm層只要和網(wǎng)卡的寫(xiě)的一直就可以通訊。
但是為什么很多時(shí)候需要通過(guò)mdio來(lái)進(jìn)行讀寫(xiě)控制,這個(gè)只是在網(wǎng)絡(luò)通訊正常后的升級(jí)優(yōu)化,用來(lái)方便查看狀態(tài),就像寫(xiě)了個(gè)前端網(wǎng)頁(yè)來(lái)看后臺(tái)數(shù)據(jù)。
如果mido沒(méi)有讀通,或者讀取的數(shù)據(jù)是0xfffff,那么不一定是mdio的問(wèn)題,很多時(shí)候是網(wǎng)卡本身沒(méi)有啟動(dòng)!
MDIO讀寫(xiě)時(shí)序
Preamble:32bits的前導(dǎo)碼
Start:2bit的開(kāi)始位。
OP Code:2bits的操作碼,10表示讀,01表示寫(xiě)。
PHYAD:5bits的PHY地址。
REGAD:5bits的寄存器地址,即要讀或?qū)懙募拇嫫鳌?/p>
Turn Around:2bits的TA,在讀命令中,MDIO在此時(shí)由MAC驅(qū)動(dòng)改為PHY驅(qū)動(dòng),并等待一個(gè)時(shí)鐘周期準(zhǔn)備發(fā)送數(shù)據(jù)。在寫(xiě)命令中,不需要MDIO方向發(fā)生變化,則只是等待兩個(gè)時(shí)鐘周期準(zhǔn)備寫(xiě)入數(shù)據(jù)。
Data:16bits數(shù)據(jù),在讀命令中,PHY芯片將讀到的對(duì)應(yīng)PHYAD的REGAD寄存器的數(shù)據(jù)寫(xiě)到Data中,在寫(xiě)命令中,MAC將要寫(xiě)入對(duì)應(yīng)PHYAD的REGAD寄存器的值寫(xiě)入Data中。
Idle:空閑狀態(tài),此時(shí)MDIO無(wú)源驅(qū)動(dòng),處高阻狀態(tài),但一般用上拉電阻使其處在高電平,上拉電阻一般為1.5K。
為什么說(shuō)讀取的phy最多32個(gè)