一、LAN8720A模块驱动电路

最近在调试STM32F4驱动LAN8720A网络模块,在做方案前参考是正点原子的LAN8720A的驱动电路方案,但是从网上买回来的LAN8720A模块用正点原子的例程一直驱动不起来,在windows系统下一直都ping不通,后面对比正点原子的LAN8720A与网上买回来的微雪LAN8720A模块的电路有差异。
下图为网上买回来微雪的LAN8720A驱动电路:

下图为正点原子LAN8720A驱动电路:

根据LAN8720A的数据手册后发现下面2个不同点:
1、PHY Address Configuration

有关于LAN8720A的PHY address,由上图中正点原子的LAN8720A中PHYAD0的引脚是悬空的,说明PHY address默认为0,而微雪的LAN8720A中PHYAD0的引脚是上拉到高电平,所以PHY address为1。如果使用正点原子的例程来驱动,则需要修改LAN8720_PHY_ADDRESS的值后模块才可以正常的通讯。

rval=ETH_Init(&ETH_InitStructure,LAN8720_PHY_ADDRESS);	
#define LAN8720_PHY_ADDRESS  	0x01				//LAN8720 PHY address	

2、nINTSEL Configuration
从原理图中可以看出正点原子的LAN8720A模块所使用的晶振是25M,而微雪的LAN8720A模块使用的晶振是50M,根据数据手册和结合原理图可以看出,
微雪的LAN8720A的nINTSEL没有接下拉,则是默认使用内部上拉到高电平,即nINTSEL=1,为REF_CLK In Mode模式,所以选用50M的晶振。

正点原子的LAN8720A的nINTSEL是下拉到GND,即nINTSEL=0,为下图中的REF_CLK Out Mode模式,所以选用25M的晶振可以倍频到50M,可以节省成本。

二、参考文档

http://ww1.microchip.com/downloads/en/DeviceDoc/8720a.pdf
http://www.waveshare.net/wiki/LAN8720_ETH_Board

by 羊羊得亿
2017-10-26 ShenZhen