【Ethernet】以太网卡LAN8720A分析和使用

2023-10-27

1. LAN8720A简介

LAN8720ASMSC 公司(已被 Microchip公司收购)设计的一个体积小、功耗低、全能型 10/100Mbps 的以太网物理层收发器。它是针对消费类电子和企业应用而设计的。LAN8720A总共只有 24Pin,仅支持 RMII接口。由它组成的网络结构如下图所示:
在这里插入图片描述

LAN8720A 通过 RMIIMAC连接。RJ45是网络插座,在与 LAN8720A 连接之间还需要一个变压器,所以一般使用带电压转换和 LED 指示灯的 HY911105A型号的插座。一般来说,必须为使用 RMII接口的 PHY提供 50MHz的时钟源输入到 REF_CLK引脚,不过LAN8720A内部集成 PLL,可以将 25MHz的时钟源陪频到 50MHz 并在指定引脚输出该时钟,所以我们可以直接使其与 REF_CLK连接达到提供 50MHz时钟的效果。

LAN8720A 内部系统结构如下图所示:
在这里插入图片描述
LAN8720A 有各个不同功能模块组成,最重要的是数据接收控制器发送控制器,其它的基本上都是与外部引脚挂钩,实现信号传输。部分引脚是具有双重功能的,比如PHYAD0RXER 引脚是共用的,在系统上电后 LAN8720A 会马上读取这部分共用引脚的电平,以确定系统的状态并保存在相关寄存器内,之后则自动转入作为另一功能引脚。

2. PHYAD[0]: PHY地址配置

PHYAD[0]引脚用于配置 SMI通信的 LAN8720A 地址,在芯片内部该引脚已经自带下拉电阻,默认认为 0(即使外部悬空不接),在系统上电时会检测该引脚获取得到 LAN8720A的地址为 0 或者 1,并保存在特殊模式寄存器(R18)的 PHYAD位中,该寄存器的 PHYAD5个位,在需要超过 2个 LAN8720A 时可以通过软件设置不同 SMI通信地址

下面是LAN8720A实际中,硬件默认对PHY地址的配置如下:
在这里插入图片描述

3. MODE[2:0]: Mode配置

MODE[2:0]引脚用于选择 LAN8720A 网络通信速率工作模式,可选 10Mbps 或 100Mbps 通信速度,半双工或全双工工作模式。另外 LAN8720A 支持 HP Auto-MDIX 自动翻转功能,即可自动识别直连或交叉网线并自适应。一般将 MODE 引脚都设置为 1,可以让 LAN8720A 启动自适应功能,它会自动寻找最优工作方式。MODE[0]与 RXD0 引脚共用、MODE[1]与 RXD1 引脚共用、MODE[2]与 CRS_DV 引脚共用,具体如下:

MODE BIT PIN NAME
MODE[0] RXD0/MODE0
MODE[1] RXD1/MODE1
MODE[2] CRS_DV/MODE2

通过以上的 MODE[2:0] 硬件配置引脚,可以支持以下几种模式: 在这里插入图片描述

4. nINTSEL: nINT/REFCLKO配置

通过nINTSEL来配置两个模式:REF_CLK输入模式(nINT)和REF_CLK输出模式。通过该引脚的高低电平决定了nINT / REFCLKO引脚的功能。

STRAP VALUE MODE REF_CLK DESCRIPTION
nINTSEL = 0 REF_CLK Out Mode nINT/REFCLKO is the source of REF_CLK.
nINTSEL = 1 REF_CLK In Mode nINT/REFCLKO is the source of REF_CLK.

nINTSEL引脚为低电平时,它也可以被设置成 50MHz 时钟输出,这样可以直接与 主机MAC接口 的 REF_CLK引脚连接为其提供 50MHz时钟源,这种模式要求为 XTAL1 与 XTAL2 之间或为 XTAL1/CLKIN提供 25MHz时钟,由 LAN8720A内部 PLL电路陪频得到 50MHz 时钟,此时nIN/REFCLKO 引脚的中断功能不可用,用于 50MHz时钟输出。
在这里插入图片描述

nINTSEL引脚为高电平时,LAN8720A 被设置为时钟输入,即外部时钟源直接提供 50MHz时钟接入 主机MAC接口REF_CLK引脚和 LAN8720A 的 XTAL1/CLKIN 引脚,此时 nINT/REFCLKO 可用于中断功能。nINTSEL与 LED2引脚共用。
在这里插入图片描述

5. REGOFF: 配置内部+1.2V电压源

REGOFF引脚用于配置内部+1.2V电压源,LAN8720A 内部需要+1.2V电压,可以通过VDDCR引脚输入+1.2V 电压提供,也可以直接利用 LAN8720A 内部+1.2V 稳压器提供。当REGOFF引脚为低电平时选择内部+1.2V稳压器。REGOFF与 LED1 引脚共用。

由于REGOFF的配置与LED1引脚共享功能,因此还必须适当考虑LED的极性。下面是REGOFF引脚为低电平时的实例如下:
在这里插入图片描述

6.SMI(MDC/MDIO)总线接口介绍

6.1 MDIO接口

SMI:串行管理接口(Serial Management Interface),也被称作MII管理接口(MII Management Interface),包括MDC和MDIO两条信号线MDIO是一个PHY的管理接口,用来读/写PHY的寄存器,以控制PHY的行为或获取PHY的状态,MDC为MDIO提供时钟。

MDIO原本是为MII总线接口定义的,MII用于连接MAC和PHY,包含两种信号接口:

1: 一个数据接口用于MAC和PHY之间接收和发送以太网帧数据。
2: 一个PHY管理接口,即MDIO,用于读写每个PHY的控制寄存器和状态寄存器,以达到控制PHY行为和监控PHY状态的目的。

MDIO是双向的,只支持一个MAC连接最多32个PHY的连接方式,且MAC作为master,PHY作为slave。在写PHY寄存器的时候,由MAC驱动MDIO向PHY写入数据;在读PHY寄存器时,前半段由MAC驱动发送寄存器地址,后半段由PHY驱动回复寄存器的值。

MDC要求由MAC输出,是非周期性的,即不要求提供固定频率的时钟,对于PHY芯片则作为输入,以在上升沿触发MDIO的读写。MDC的时钟频率可以是DC-2.5MHz,即最小的时钟周期为400ns

6.2 MDIO数据传输协议

MDIO数据格式定义在IEEE 802.3以太网标准中,如下图所示(数据传输顺序为从左至右):

Preamble
(32bits)
Start
(2bits)
OP Code
(2bits)
PHYAD
(5bits)
REGAD
(5bits)
Turn Around
(2bits)
Data
(16bits)
Idle
Read 1…1 01 10 A4A3A2A1A0 R4R3R2R1R0 Z0 D15…D0 Z*
Write 1…1 01 01 A4A3A2A1A0 R4R3R2R1R0 10 D15…D0 Z*

上图中*表示高阻态,这时MDIO的状态由一个外部的1.5KΩ电阻决定。

Preamble+Start:32bits的前导码以及2bit的开始位。

OP Code:2bits的操作码,10表示读,01表示写。

PHYAD:5bits的PHY地址,一般PHY地址从0开始顺序编号,例如6口switch中PHY地址为0-5。

REGAD:5bits的寄存器地址,即要读或写的寄存器。

Turn Around:2bits的TA,在读命令中,MDIO在此时由MAC驱动改为PHY驱动,并等待一个时钟周期准备发送数据。在写命令中,不需要MDIO方向发生变化,则只是等待两个时钟周期准备写入数据。

Data:16bits数据,在读命令中,PHY芯片将读到的对应PHYAD的REGAD寄存器的数据写到Data中,在写命令中,MAC将要写入对应PHYAD的REGAD寄存器的值写入Data中。

Idle:空闲状态,此时MDIO无源驱动,处高阻状态,但一般用上拉电阻使其处在高电平。
在这里插入图片描述
需要注意的是,为了保证PHY能准确采样,当MAC向MDIO写数据的时候,需要在MDC的上升沿之前就把数据写到MDIO上,要求等待10ns以上再发出一个MDC的上升沿。而为了保证MAC能准确采样,当PHY向MDIO写数据时,这个clock-to-data的delay时间范围可以是0-300ns(小于上面提到的400ns)。这个规定使接口的实现变得简单,但一定程度上限制了总线带宽。
IEEE 802.3还定义了扩展的SMI数据格式,包括read,write以及set address和read increment,不过我们在此不做讨论。

7. 相关寄存器描述

SMI支持寻址 32 个寄存器,LAN8720A 只用到其中 14 个,具体如下:

序号 寄存器名称 分组
0 Basic Control Register Basic
1 Basic Status Register Basic
2 PHY Identifier 1 Extended
3 PHY Identifier 2 Extended
4 Auto-Negotiation Advertisement Register Extended
5 Auto-Negotiation Link Partner Ability Register Extended
6 Auto-Negotiation Expansion Register Extended
17 Mode Control/Status Register Vendor-specific
18 Special Modes Vendor-specific
26 Symbol Error Counter Register Vendor-specific
27 Control / Status Indication Register Vendor-specific
29 Interrupt Source Register Vendor-specific
30 Interrupt Mask Register Vendor-specific
31 PHY Special Control/Status Register Vendor-specific

序号与 SMI数据帧中的 RADDR是对应的,这在编写驱动时非常重要。寄存器可规划为个组:BasicExtendedVendor-specific

  • Basic 是 IEEE802.3 要求的,R0 是基本控制寄存器,其位 15为 Soft Reset 位,向该位写 1启动LAN8720A 软件复位,还包括速度、自适应、低功耗等等功能设置。R1 是基本状态寄存器。
  • Extended 是扩展寄存器,包括 LAN8720A的 ID号、制造商、版本号等等信息。
  • Vendor-specific 是供应商自定义寄存器,R31 是特殊控制/状态寄存器,指示速度类型和自适应功能。

8. 参考资料

《零死角玩转STM32—F429挑战者.pdf》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Ethernet】以太网卡LAN8720A分析和使用 的相关文章

  • 【STM32】HAL库-以太网外设-LAN8720A-LWIP-无操作系统

    开发环境 KEIL MDK ARM 5 27MCU STM32F429IGT6PHY IC LAN8720ALWIP LWIP2 1 2STM32CUBEMX 6 6 1HAL V1 27 1 LAN8720A使用RMII接口与STM32的
  • 第十章 网络工具--基于Linux3.10

    在测试io设备时 常常会用到iostat iotop工具 在查看内存时常常用到vmstat free slabtop工具 在查看调度器时 常常使用mpstat top以及ps工具 这里来说说网络相关的工具 有性能分析 网络管理 状态查看类工
  • 【Ethernet】以太网卡LAN8720A分析和使用

    文章目录 1 LAN8720A简介 2 PHYAD 0 PHY地址配置 3 MODE 2 0 Mode配置 4 nINTSEL nINT REFCLKO配置 5 REGOFF 配置内部 1 2V电压源 6 SMI MDC MDIO 总线接口
  • 也谈SDH、MSTP、OTN、PTN的区别和联系

    首先要说的是TDM的概念 TDM就是时分复用 就是将一个标准时长 1秒 分成若干段小的时间段 8000 每一个小时间段 1 8000 125us 传输一路信号 SDH系统的电路调度均以TDM为基础 所以看到很多人说SDH业务就是TDM业务
  • 第一章 网络子系统初始化--基于Linux3.10

    下载地址 http download csdn net detail shichaog 8620701 网络初始化函数调用顺序 Linux系统启动那些事 基于Linux 3 10内核 提到系统启动时会调用一系列的初始化函数 初始化函数使用i
  • 【TCP/IP】 以太网流量控制------pause流控

    关键字 以太网 数据链路层 PAUSE帧 流量控制 文章目录 关键字 一 以太网的流量控制 二 pause流控的原理和实现 1 pause流控原理 2 pause消息格式 3 pause流控处理逻辑 4 pause流控芯片上的实现 三 pa
  • 【已解决】ubuntu插网线无法联网

    问题描述 ubuntu连不上wifi 插网线后也无法连接网络 网线插在网口上的状态提示灯为 一个常亮的黄灯和一个一直闪烁的黄灯 似乎是因为update了linux的内核或者是安装了某些驱动 导致了Linux重启之后的引导出现了问题 选择系统
  • 网络层与数据链路层--一看便知

    文章目录 网络层 作用 IP协议 与IP协议有关的一些概念 协议头 分片和组装 网段划分 私有IP地址和公网IP地址 数据链路层 以太网 以太网帧格式 ARP协议 ARP数据报的格式 ARP协议工作流程 其他重要协议或技术 DNS ICMP
  • 基于互联网的信号传输系统

    参加完电子设计竞赛不知不觉快过去两个月了 今天小刚写一下当时我们这道题的方案 本系统基于互联网的信号传输系统采用STM32F407ZGT6和FPGA Cyclone IV作为主控芯片 对信号进行采样和处理 系统由幅度测量电路 频率测量电路
  • 万兆以太网选择6类线还是6A类线?

    在综合布线中 有些时候必不可免的需要用到万兆铜缆以太网 那么这个时候就会产生一个问题 就是线缆的选型 6类线和6A类线都可以支持到万兆以太网 那么究竟是选择成本较为低廉的6类线还是选择规格更高一些的6A类线缆 6类线与6A类线的区别 起初
  • 以太坊Ethereum命令

    etheum命令 查询账户 eth accounts 创建账户 personal newAccount password 查看账户余额 eth getBalance eth accounts 0 或指定具体的账户 eth getBalanc
  • 第十四章 netlink机制--基于Linux3.10

    Netlink基于网络的消息机制 能够让用户和内核空间进行通信 12 3节提到的ifconfig是使用ioctl方法和内核通信的 而ip命令则是使用netlink和内核通信的 该机制初衷是为网络服务的 但是现在起应用范围已经大大扩展 14
  • 第七章 tcp发送(传输层)--基于Linux3.10

    由第五章可知 sock recvmsg和tcp sendmsg用于tcp层和应用层的接口 由第四章可知 tcp v4 rcv和tcp tarnsmit skb是传输层和网络层之间的接口 现在来看看tcp sendmsg是如何到tcp tar
  • 以太网PHY芯片MDIO寄存器读写-verilog

    MDIO实现还是比较简单的 应用xilinx FPGA内的VIO核就可以直接读写查看 如果板子有串口 做个简单的处理就可以直接通过电脑读写 时序如下图所示 将下面时序实现就可以实现读写 在实际应用时基本不需要配置 有特殊需求可以做一些应用
  • 野火 RT1052 移植网卡功能(LAN8720A)

    野火 RT1052 移植网卡功能 LAN8720A 开发环境 RT Thread v4 0 2 master SOC i MX RT1050 Board 野火 RT1052 目的 在 RT Thread 系统上进行网络通讯 背景描述 1 首
  • 一看就懂的网络协议五层模型(一)

    我们每天使用互联网 你是否想过 它是如何实现的 全世界几十亿台电脑 连接在一起 两两通信 上海的某一块网卡送出信号 洛杉矶的另一块网卡居然就收到了 两者实际上根本不知道对方的物理位置 你不觉得这是很神奇的事情吗 互联网的核心是一系列协议 总
  • OSI七层模型---数据链路层(以太网帧、MAC地址、MTU、MSS、ARP协议)

    我们首先来了解一下物理层的作用 物理层的主要目的是实现比特流的透明传输 为数据链路层提供服务 物理层接口解决了用几根线 多大电压 每根线什么功能 以及几根线之间是怎么协调的问题 物理层介质解决了数据载体材质以及价格优缺点的问题 通信技术解决
  • 局域网、以太网、无线局域网学习笔记

    还有一年选择院校 加油 文章目录 局域网基本概念和体系结构 局域网 局域网拓扑结构 局域网的传输介质 局域网介质访问控制方法 局域网的分类 IEEE 802 MAC子层和LC子层 小结思维导图 以太网 以太网概述 以太网提供无连接 不可靠的
  • 网络 链路层

    数据链路层是计算机网络的底层 主要负责相邻设备之间的数据帧传输 链路层就是负责每一个相邻结点之间的数据传输 但是相邻设备之间也需要描述识别 主要是因为每一个设备都有可能有多个相邻的设备 这种识别在链路层中是通过MAC地址来实现的 MAC地址
  • 数据备份技术知识梳理(建议收藏)

    所谓数据保护技术是指对当前时间点上的数据进行备份 如果说原始数据被误删除了 可以通过备份数据找回或恢复数据 从底层来分 数据保护可以分为文件级保护和块级保护 文件级备份 文件级备份 将磁盘上所有文件通过调用文件系统接口备份到另一个介质上 也

随机推荐

  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR添加萤石云设备详细操作来啦!

    安防视频监控 视频集中存储 云存储 磁盘阵列EasyCVR平台可拓展性强 视频能力灵活 部署轻快 可支持的主流标准协议有国标GB28181 RTSP Onvif RTMP等 以及支持厂家私有协议与SDK接入 包括海康Ehome 海大宇等设备
  • QT With OpenGL(延时着色法)(Deferred Shading)

    文章目录 1 创建G Buffer帧缓存 2 修改各类型物体的着色器 3 测试G Buffer 4 使用G Buffer生成场景 5 添加高光项 1 如果为光源物体 则不进行光照结果计算 2 对高光项进行高斯模糊 3 泛光合成 更多 光体积
  • 蓝桥杯505--数字三角形

    题目描述 上图给出了一个数字三角形 从三角形的顶部到底部有很多条不同的路径 对于每条路径 把路径上面的数加起来可以得到一个和 你的任务就是找到最大的和 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数 此外 向左
  • 【数据库课程设计】企业库存管理系统

    作者 何翔 学院 计算机学院 学号 04191315 班级 软件1903 完整资料 https download csdn net download HXBest 72361220
  • 开发板连续显示图片

    本文分享自中移OneOS微信公众号 万耦中的二次元世界 作者 小M哥 BAD APPLE原本是东方游戏里的一首歌曲 后来被加了一个MAD 由于MAD非常惊艳华丽 使得BAD APPLE被大家喜爱 在程序员圈子里 有一个传言 有屏幕的地方 就
  • 性能测试怎么做?性能测试重点和各项性能测试流程(超级详细)

    前言 性能测试基础 1 性能测试一般分为 负载测试 压力测试 基准测试 稳定性测试 扩展性测试 2 常见的性能测试指标 响应时间 TPS QPS 并发用户 PV UV 点击率 吞吐量 资源开销 3 性能测试的场景 业务场景 系统的业务处理流
  • windows添加开机启动项

    我们时常会需要开机就启动一些软件 例如飞鸽 微信等等 windows添加开机启动项有很多种 例如 添加到 启动 文件夹 添加到注册表 使用任务计划程序 以下只列举第一种 添加到启动文件夹 测试环境为Win 10 解决方案 1 按下 Win
  • python中判断类型函数isinstance()

    函数isinstance 可以判断一个变量的类型 既可以用在Python内置的数据类型如str list dict 也可以用在我们自定义的类 它们本质上都是数据类型 假设有如下的 Person Man和 Woman的定义及继承关系如下 cl
  • gradle 任务依赖实现复制任务。

    近期遇到一个需求 由于很少研究gradle相关 所以在实现上卡了一阵子 现已基本实现需求 回过头来记录一下 需求 项目中接入腾讯bugly 使用其热更新功能 由于热更新目前不支持自定义补丁包的生成路径 因此会产生一个问题就是 补丁包生成后位
  • HarmonyOS开发:走进静态共享包的依赖与使用

    前言 在上一篇 我们进行了动态共享包的开发和使用 由于动态共享包有一定的局限性 比如 调用共享包资源还得要通过工具类进行调用 再比如仅用于应用内部代码 资源的共享 如果我想要开源 以远程依赖的方式给任何一个想要用的人进行使用 动态共享包就无
  • 阿里开源的缓存框架JetCache

    之前一直在用Spring Cache进行接口数据的缓存 主要是Spring Cache在对具体key缓存失效时间的设置不是很方法 还要自己去扩展 无意中发现了阿里的JetCache 大部分的需求都能满足 并且有一些很实用的功能 今天给大家介
  • activate : 无法将“activate”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1

    在pycharm里面错误展示 无法激活虚拟环境 解决方法 以管理员身份运行 PowerShell 并输入 set executionpolicy remotesigned 再输入 y 如图 输入完后重新打开pycharm 再次输入 acti
  • SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置

    目录 方式一 放在与Mapper接口同级目录 方式二 在resources创建Mapper接口同名文件夹用来存放Mapper xml文件 方式三 在resources目录下创建mapper文件夹存放mapper xml 推荐 方式一 放在与
  • git 签出(恢复)指定文件

    在项目开发中 偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件 此篇文章将介绍如何通过git从历史提交记录 分支记录恢复指定文件 1 git checkout 说明 使用git checkout除了可以切换分支外 还可以签出指定文
  • Elasticsearch Java High Level REST Client(Exists API)

    Exists API 如果文档存在 则existsAPI返回true 否则返回false Exists请求 它就像Get API一样使用GetRequest 支持所有可选参数 由于exists 只返回true或false 我们建议关闭获取
  • 目标检测之Yolov3与Anchor-Free

    原文 目标检测之RCNN Yolo SSD RetinaNet与Anchor Free dagongji10的博客 CSDN博客 2 2 Yolo v3 2018 Yolo v3 论文比 Yolo v2 还要随意 具体优化内容主要有 bbo
  • 用python绘制曼彻斯特编码等八种常见数据编码方式的波形图

    用python绘制八种数据编码方式的波形图 2020春季北京航空航天大学计算机学院物联网引论课程作业 介绍八种常见数据编码方式并实践画出波形图 本文使用了python中的二维图像模块matplotlib 博主在信号与通信原理方面功底不深 如
  • deepin的踩坑问题与解决方案,以及使用分享(持续更新)

    笔者目前的电脑环境是Redmibook 14 AMD的锐龙版 R5 3700U 只有集成显卡 不同换环境下问题原因不一定相同 如驱动等兼容性问题 可以借鉴解决思路 但更多问题还是具有共性 Q1 u盘安装的时候 卡在蓝色背景图 无安装程序启动
  • e3 服务器虚拟机,e3 虚拟机

    e3 虚拟机 内容精选 换一换 Hypervisor能实现同一物理机上不同虚拟机之间的资源隔离 避免虚拟机之间的数据窃取或恶意攻击 保证虚拟机的资源使用不受周边虚拟机的影响 用户使用虚拟机时 仅能访问属于自己的虚拟机的资源 如硬件 软件和数
  • 【Ethernet】以太网卡LAN8720A分析和使用

    文章目录 1 LAN8720A简介 2 PHYAD 0 PHY地址配置 3 MODE 2 0 Mode配置 4 nINTSEL nINT REFCLKO配置 5 REGOFF 配置内部 1 2V电压源 6 SMI MDC MDIO 总线接口