一、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(Ð_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