LAN8720A是一个10/100M 的以太网PHY芯片。带有SMI接口,支持RMII。

LAN8720A各个管脚的功能:

MDIO MDC是站管理接口(SMI接口)引脚。SMI是标准接口,比如交换机芯片一般都有此接口。MCU通过这两条线可以访问PHY的寄存器。比如STM32F407的以太网外设有站管理功能,直接接到对应MCU的功能引脚上,如果MCU没有此功能就需要通过模拟时序来实现。

RXD0 RXD1 是RMII接口的接收数据信号线。PHY芯片启动完成后是接收信号线,PHY启动时是MODE信号线。
TXD0 TXD1 是RMII发送数据信号线。TXEN是发送使能信号线。注意:RXD0、RXD1、TXD0、TXD1的T和R是相对于MAC内核说的。

RXER/PHYAD0 PHY启动的时引脚是PHYAD0功能,PHY会读取PHYAD0管脚的信号,决定PHY的地址,默认内部下拉,下拉PHY的地址是0,上拉PHY的地址是1。启动完成后该引脚是RXER信号(接收错误信号)。在RMII接口中没有使用到此信号线。

CRS_DV/MODE2 载波侦听信号引脚。PHY启动时是MODE功能,启动完成后是CRS_DV功能。当物理层接收到载波信号后,CRS_DV会变得有效,当载波信号消失后,CRS_DV会变得无效。

nRST 是复位信号,低电平有效。

RBIAS固定接一个12.1K的电阻到GND。

LED1/REGOFF。PHY启动时是REGOFF功能,PHY会读取REGOFF的电平,为低电平时内部调节器打开。为高电平时内部调节器关闭。 PHY启动完成后是连接指示灯,连接的时候高低电平变化。

LED2/nINTSEL。PHY启动时是nINTSEL功能,PHY会读取nINTSEL的电平。低电平时,nINT/REFCLKO是REFCLKO功能,会输出时钟信号给MAC;高电平时,nINT/REFCLKO是nINT功能,会输出中断信号给MAC。PHY启动完成后是速度指示灯,用来指示100M/10M。 100M连接时输出高电平,10M连接时输出低电平。

我手里使用的时探索者V2开发板。LED1/REGOFF引脚下拉,打开内部调节器。LED2/nINTSEL引脚下拉,设置nINT/REFCLKO引脚是REFCLKO功能,会输出时钟信号给MAC;

TXP、TXN是发送信号的差分线,RXP、RXN是接收信号的差分线。
LAN8720具有自动极性翻转功能。因为支持自动极性翻转功能,所以使用交叉网线和直连网线都可以通讯。TX、RX是相对PHY本身来说的。比如W5500芯片就不支持自动极性翻转功能,如果两个W5500通过网线连接(不通过交换机转换),那么必须使用交叉网线。使用交叉网线相当于自己的TX接到了对方的RX。直插网线相当于TX接TX,RX接RX,两端都不支持极性翻转的情况下无法通讯。想一想这种情况:两个人嘴巴对着嘴巴说,耳朵对着耳朵听。

注意3个MODE复用引脚默认带有内部上拉,3个MODE引脚都上拉是全功能,启动自协商。

通过F407的MAC内核访问PHY寄存器

void lan8720_pin_init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD,ENABLE);//   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);   //使能SYSCFG时钟
//  SYSCFG_ETH_MediaInterfaceConfig(SYSCFG_ETH_MediaInterface_RMII); //MAC和PHY之间使用RMII接口        //MDIO  PA2   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;  GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_ETH);//MDC PC1GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;  GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_PinAFConfig(GPIOC, GPIO_PinSource1, GPIO_AF_ETH);//RESET  PD3GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;  GPIO_Init(GPIOD, &GPIO_InitStructure);
}
void lan8720_init(void)
{RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC,ENABLE);//使能MAC内核时钟GPIO_ResetBits(GPIOD,GPIO_Pin_3);delay_ms(50);GPIO_SetBits(GPIOD,GPIO_Pin_3);delay_ms(50);
}
     reg_value = ETH_ReadPHYRegister(0,31);printf("reg_value=%04x\r\n",reg_value);delay_ms(500);

读取PHY的31号寄存器,可以获得速度和双工模式。


可以看出来PHY是工作在100M全双工模式下。

LAN8720A芯片相关推荐

  1. 以太网PHY芯片LAN8720A芯片研究

    一.LAN8720A概述 1. 简介 LAN8720A/LAN8720Ai是一个低功耗的可变I/O电压的10/100M PHY收发器,符合IEEE 802.3-2005标准,支持通过RMII接口与以太 ...

  2. 基于rv1108的以太网PHY层芯片LAN8720A的使用简介

    lan8720a的系统框图 : 以下是lan8720a的芯片的内部架构框图: lan8720a的芯片引脚的描述: 实际项目中硬件的连接: rv1108部分的原理图: lan8720部分的原理图: 从原 ...

  3. 野火 RT1052 移植网卡功能(LAN8720A)

    野火 RT1052 移植网卡功能(LAN8720A) 开发环境 RT-Thread: v4.0.2(master) SOC: i.MX RT1050 Board: 野火 RT1052 目的 在 RT- ...

  4. LAN8720A PHY初始化注意事项

    LAN8720A芯片价格很有优势,相比DP83848封装小,引脚少.有利用节约成本. lan8720输入时钟25MHZ就可以.直接配置MCO为HSE时钟即可.不需要50M的有源晶振. 根据8720A ...

  5. 《正点原子嵌入式linux驱动开发指南V1.4》学习笔记

    文章目录 一.开发环境搭建 1.1 安装交叉编译工具链 1.2 代码镜像烧写工具 1.3 Ubuntu下所有的设备文件都在目录"/dev"里面 1.4 Ubuntu 搭建TFTP服 ...

  6. 博客文章导航(嵌入式宝藏站)(2023.2.20更新)

    博主简介 Mculover666,一个喜欢玩板子的小码农,目前HFUT在读,热爱嵌入式/物联网这个领域,并专注于嵌入式软件开发! 坚持做自己热爱的事情.坚持做自己觉得有意义的事情,但问耕耘,莫问收获! ...

  7. i.MX6ULL移植NXP官方uboot2020.04_5.4.47_2.2.0

    目录 开发环境 设置交叉编译工具链 下载nxp的uboot 移植uboot 编译uboot 烧写uboot镜像 建立自己的单板文件配置 解决适配问题 适配 lan8720a 网卡 查看公版原理图 查看 ...

  8. [I.MX6UL] U-Boot移植(六) 网络驱动修改 LAN8720A(对比原子和NXP官方测试板的网络芯片LAN8720A , KSZ8081 (也是飞凌)唯独复位引脚不同595芯片也涉及改动)

    I.MX6UL/ULL 内部有个以太网 MAC 外设,也就是 ENET,需要外接一个 PHY 芯片来实现网络通信功能,也就是内部MAC+外部 PHY 芯片的方案. I.MX6UL/ULL 有两个网络接 ...

  9. 以太网PHY层芯片LAN8720A简介

    1.LAN8720A简介 2.芯片管脚配置 3.硬件电路

最新文章

  1. 阿里巴巴一位 70 后程序员的 26 个职场感悟!
  2. 聊聊电商系统中常见的9大坑,库存超卖、重复下单、物流单ABA...
  3. mysql导出为lua配置表文件_利用lua生成一个导出数据库的bat脚本文件
  4. python selenium爬虫豆瓣_Python爬虫:学习selenium的正确方式
  5. 类的继承私有成员问题
  6. mongodb----集合而定多种查询方式
  7. ARMLINUX学习笔记(5)-----ADS建立工程
  8. HDU1282 回文数猜想【回文】
  9. numpy.mgrid的用法图解
  10. 三星t5 android,三星T5首测:一款秒杀SATA SSD的移动SSD
  11. Maya2018安装报错:visual c++ 2010 sp1 错误代码1612
  12. WPS中插入“公式”后行距不正常的解决办法
  13. java实现光盘摆渡_一种光盘摆渡机的制作方法
  14. logstash(10)过滤器-dissect
  15. VS1005 HiRes 高清录音开发模块 BOB MK2
  16. uniapp 图片模糊解决方案
  17. 反素数(反转拼写的素数)
  18. 《鸟哥的Linux私房菜》精要 持续更新。。。
  19. 如何做好抖音短视频?
  20. oracle修改用户表所属空间,Oracle修改用户表所属表空间的步骤

热门文章

  1. PS中截取一个圆形,画圆
  2. java cms 垃圾回收_了解Java垃圾自动回收
  3. 2023GPLT正赛 L2-4 寻宝图
  4. 高温定型窗帘值得我们选择吗?-江南爱窗帘十大品牌
  5. 微信公众平台模版消息
  6. leetcode之Isomorphic strings
  7. 【侯捷】C++内存管理从平地到万丈高楼(前11节学习笔记)
  8. 1.1 项目经理是干什么的
  9. 移动公网5G配置(一)
  10. c 语言多个if并联使用,if的嵌套和多个并列if的效率有关问题