下面是使用CubeMX配置STM32F407VET6,實現以太網通訊(PHY芯片為LAN8720)的具體步驟總結:
一、硬件連接方式:
-
硬件原理圖:
使用外部晶振為PHY芯片提供時鐘。
- STM32F407VET6 與 LAN8720 采用 RMII 模式連接。
STM32F407VET6引腳 | 功能(RMII) | LAN8720引腳 |
---|---|---|
PA1 | ETH_REF_CLK | REF_CLK(50MHz時鐘輸入) |
PA2 | ETH_MDIO | MDIO |
PC1 | ETH_MDC | MDC |
PA7 | ETH_CRS_DV | CRS_DV |
PC4 | ETH_RXD0 | RXD0 |
PC5 | ETH_RXD1 | RXD1 |
PB11 | ETH_TX_EN | TX_EN |
PB12 | ETH_TXD0 | TXD0 |
PB13 | ETH_TXD1 | TXD1 |
PA8 | ETH_RESET | nRST |
注意:
-
LAN8720使用RMII模式,需提供50MHz外部時鐘至LAN8720芯片的XTAL1/CLKIN引腳。
-
LAN8720芯片外接的晶振頻率為 25MHz,連接至LAN8720的XTAL1/CLKIN管腳。
STM32F407在使用RMII模式進行以太網通信時,LAN8720內部會將這個25MHz時鐘倍頻為50MHz后輸出到STM32的PA1引腳(ETH_REF_CLK),因此你只需要給LAN8720提供一個25MHz的晶振即可。
- 外部晶振:25MHz
- RMII參考時鐘:LAN8720輸出50MHz到STM32
-
-
LAN8720的地址引腳PHYAD0置0(接地),則默認PHY地址為0(我這里默認接地了,只是原理圖沒畫出來)。
- 根據LAN8720官方Datasheet說明:
- 當PHYAD0引腳 下拉到GND 時,PHY地址為 0。
- 當PHYAD0引腳 上拉到VDDIO 時,PHY地址為 1。
在原理圖中,這個引腳既未上拉也未下拉(即懸空狀態),通常會導致PHY地址不確定,在實際工作中可能會導致STM32無法正確識別PHY芯片。