標(biāo)題: STM系列(5)--STM32 以太網(wǎng)硬件設(shè)計(jì)—PHY [打印本頁(yè)]

作者: 小融1號(hào)    時(shí)間: 2017-2-24 11:42
標(biāo)題: STM系列(5)--STM32 以太網(wǎng)硬件設(shè)計(jì)—PHY
融創(chuàng)芯城邀請(qǐng)注冊(cè)享好禮,2萬(wàn)元獎(jiǎng)金等你來(lái)瓜分,排行榜獎(jiǎng)金活動(dòng)將持續(xù)至2月28日,最后幾天,抓緊拉人注冊(cè),享受做小股東的樂(lè)趣吧!
OSI 的 7 層基準(zhǔn)模型中PHY 屬于第一層——物理層。PHY 是數(shù)據(jù)鏈路層的媒體訪問(wèn)控制部分和媒體的接口。PHY 對(duì)所有傳輸?shù)臄?shù)據(jù)只是進(jìn)行編碼轉(zhuǎn)化,沒(méi)有對(duì)有效數(shù)據(jù)信號(hào)進(jìn)行任何分析或改變,但是 MAC 所有的數(shù)據(jù)傳輸都必須經(jīng)過(guò)PHY 發(fā)送和接收才能傳輸?shù)侥繕?biāo)MAC。

PHY 還可以完成連接判斷,自動(dòng)協(xié)商以及沖突檢測(cè)。MAC 可以通過(guò)修改 PHY 的寄存器完成對(duì)自動(dòng)協(xié) 商的監(jiān)控,當(dāng)然也可以讀取PHY 的寄存器來(lái)判斷PHY 的狀態(tài)。
.PHY 寄存器

IEEE802.3 標(biāo)準(zhǔn)中定義了 PHY 的基本寄存器,寄存器偏移 00h ~ 0fh。其中最重要的就是 BCR(Basic Control Register, offset: 00h),BSR(Basic Status Register, offset: 01h)。
MAC 通過(guò) SMI 接口訪問(wèn) BCR 來(lái)控制 PHY 的工作模式,也可以通過(guò)訪問(wèn) BSR 來(lái)得知 PHY 的工作狀態(tài)。 需要注意的是,有 時(shí) PHY 的工作速率和工作模式不一定是通過(guò)訪問(wèn) BSR 來(lái)得到的,因此在使用 STM32 MAC 外設(shè)與不同的 PHY 通訊時(shí),可 能需要修改寄存器定義。以下是 ST 所提供的驅(qū)動(dòng)中關(guān)于 PHY 寄存器的定義(節(jié)選自 stm32f4xx_hal_conf.h)。

/* Section 3: Common PHY Registers */
#define PHY_BCR             ((uint16_t)0x00)          /*!< Transceiver Basic Control Register */
#define PHY_BSR             ((uint16_t)0x01)          /*!< Transceiver Basic Status Register */

#define PHY_RESET           ((uint16_t)0x8000)        /*!< PHY Reset */
#define PHY_LOOPBACK        ((uint16_t)0x4000) /*!< Select loop-back mode */
#define PHY_RESTART_AUTONEGOTIATION    ((uint16_t)0x0200)     /*!< Restart auto-negotiationfunction */

#define PHY_POWERDOWN               ((uint16_t)0x0800)        /*!< Select the power down mode */
#define PHY_AUTONEGO_COMPLETE     ((uint16_t)0x0020)      /*!< Auto-Negotiation process completed*/

/* Section 4: Extended PHY Registers */
#define   PHY_SR           ((uint16_t)0x10)    /*!< PHY status register Offset */ #define   PHY_LINK_STATUS   ((uint16_t)0x0001) /*!< PHY Link mask */
#define   PHY_SPEED_STATUS  ((uint16_t)0x0002) /*!< PHY Speed mask */
#define   PHY_DUPLEX_STATUS ((uint16_t)0x0004) /*!< PHY Duplex mask */

二.PHY AutoStrapping


現(xiàn)在的多數(shù) PHY 都具有 AutoStrapping 功能,即可以在硬件設(shè)計(jì)時(shí),通過(guò)上下拉電阻設(shè)定某些引腳的電平,PHY 復(fù)位后自動(dòng) 將引腳電平讀入指定的寄存器標(biāo)志位,以相應(yīng)的方式工作。需要注意的有以下幾項(xiàng):
1.PHY 寄存器地址
SMI 接口訪問(wèn) PHY 時(shí)除了需要 PHY 的寄存器偏移,也需要 PHY 的地址,這個(gè)地址是在 AutoStrapping 中指定的。當(dāng)然,隨 后也可以通過(guò) SMI 接口軟件修改 PHY 的寄存器地址。

/**
* @brief Reads a PHY register
* @param heth: pointer to a ETH_HandleTypeDef structure that contains
* the configuration information for ETHERNET module
* @param PHYReg: PHY register address, is the index of one of the 32 PHY register.
* This parameter can be one of the following values:
* PHY_BCR: Transceiver Basic Control Register,
* PHY_BSR: Transceiver Basic Status Register.
* More PHY register could be read depending on the used PHY
* @param RegValue: PHY register value
* @retval HAL status
*/
HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t *RegValue)

2.工作模式
工作模式首先需要注意的是是否使能自動(dòng)協(xié)商功能,自動(dòng)協(xié)商遵循的原則就是雙方尋找最快的方式。 也可以在不使能自動(dòng)協(xié) 商的情況下直接指定 PHY 的工作模式(例如半雙工 10Mbits/s)。在 ST 的 驅(qū)動(dòng)中,為了準(zhǔn)確的獲得此信息,通過(guò) SMI 接口 讀取寄存器標(biāo)志位。
3. LED 接口
PHY 中一般都包括指示 LED,用來(lái)指示鏈接狀態(tài)和 Activity 情況。這些也是可以在此項(xiàng)中設(shè)置的。
  
4. 其它
此外,PHY 的 AutoStrapping 中一般還具有 Loopback 等功能。
三. 總結(jié)

MAC 和 PHY 并不困難,在應(yīng)用時(shí),硬件工程師應(yīng)該閱讀 PHY 的參考手冊(cè),并在原理圖中標(biāo)明所 選定的工作方式以方便軟件工程師編寫(xiě)驅(qū)動(dòng)程序。

文章來(lái)源:微信公眾號(hào)   融創(chuàng)芯城(一站式電子元器件、PCB、PCBA購(gòu)買(mǎi)服務(wù)平臺(tái),項(xiàng)目眾包平臺(tái),方案共享平臺(tái))



作者: mtk1625    時(shí)間: 2020-10-31 10:42
不錯(cuò)  ST文檔里內(nèi)容也是在這樣的




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1