下面是使用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芯片。