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

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 BITPIN 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 MODEREF_CLK DESCRIPTION
nINTSEL = 0REF_CLK Out ModenINT/REFCLKO is the source of REF_CLK.
nINTSEL = 1REF_CLK In ModenINT/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
Read1…10110A4A3A2A1A0R4R3R2R1R0Z0D15…D0Z*
Write1…10101A4A3A2A1A0R4R3R2R1R010D15…D0Z*

上图中*表示高阻态,这时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 个,具体如下:

序号 寄存器名称分组
0Basic Control RegisterBasic
1Basic Status RegisterBasic
2PHY Identifier 1Extended
3PHY Identifier 2Extended
4Auto-Negotiation Advertisement RegisterExtended
5Auto-Negotiation Link Partner Ability RegisterExtended
6Auto-Negotiation Expansion RegisterExtended
17Mode Control/Status Register Vendor-specific
18Special ModesVendor-specific
26Symbol Error Counter RegisterVendor-specific
27Control / Status Indication RegisterVendor-specific
29Interrupt Source RegisterVendor-specific
30Interrupt Mask RegisterVendor-specific
31PHY 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》

  • 28
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: STM32CubeMX是STMicroelectronics公司开发的一款用于快速配置和初始化STM32微控制器的图形化软件工具。而LAN8720是一款由微芯科技(Microchip)提供的支持IEEE 802.3以太网标准的高集成度媒体转换器。 STM32CubeMX与LAN8720结合使用可以方便地为STM32微控制器添加以太网功能。首先,在STM32CubeMX中选择对应的STM32微控制器型号,并打开配置界面。然后,在配置界面中搜索并选择LAN8720以太网芯片,可以配置相关的参数和设置。 配置LAN8720时,首先需要设置PHY地址,这是芯片与微控制器通讯的地址。其次,需要选择合适的速率和双工模式,以满足具体应用需求。此外,还需要配置MDIO引脚和RMII时钟引脚,这是芯片的通讯和时钟引脚,用于与微控制器进行数据传输。 配置完成后,生成代码并导入到相关开发环境中。在代码中,需要初始化以太网接口、设置IP地址和端口号等网络参数,并开启相应的中断和功能。之后,可以通过编写应用程序,实现与网络的通讯和数据交互。 总而言之,STM32CubeMX与LAN8720的结合使用,可以快速和便捷地为STM32微控制器添加以太网功能,实现与网络的通讯和数据交互。这为开发者在物联网和嵌入式系统等领域提供了更多的选择和发展空间。 ### 回答2: STM32CubeMX是一款官方提供的图形化工具,用于配置和生成STM32微控制器的初始化代码。而LAN8720是一款高性能以太网物理层转换器。 在使用STM32CubeMX配置LAN8720时,我们可以通过以下步骤进行设置: 1. 打开STM32CubeMX,并选择适用于您的微控制器系列的项目。 2. 在"Pinout & Configuration"选项卡中,选择ETHERNET功能,并将其使能。 3. 在"Configuration"选项卡的ETHERNET部分中,选择适合您的应用程序的模式(MII或RMII)。 4. 配置PHY的地址和时钟频率等参数。 5. 根据您的需求,对其他以太网功能进行相应配置,例如自动协商、循环缓冲区模式等。 6. 生成代码,并将其导入到您的开发环境中。 7. 在生成的代码中,您可以找到与LAN8720相关的初始化函数和设置。 在使用LAN8720进行物理层转换时,我们需要在电路连接中进行相应的设置: 1. 将STM32微控制器的以太网接口引脚与LAN8720的相应引脚连接。具体连接方式可以参考相关的硬件原理图。 2. 连接PHY的供电引脚和时钟引脚,并根据需求连接其他必要的引脚,例如复位引脚、中断引脚等。 3. 使用合适的电路元件,如电阻和电容,来提供适当的电平转换和滤波功能。 4. 在电路连接完成后,您可以使用相应的测试工具来验证连接是否正确,并通过适当的软件配置来确保以太网功能的正常运行。 总结来说,通过使用STM32CubeMX配合配置LAN8720,我们可以方便地设置和生成适合我们应用的初始化代码,并且可以根据需要连接物理层转换的电路,并进行相应的硬件和软件配置,以实现稳定和可靠的以太网功能。 ### 回答3: STM32CubeMX是一款由STMicroelectronics开发的图形化配置工具,用于生成STM32微控制器的初始化代码。而LAN8720是一款集成有央科公司PHY层的IEEE 802.3 Ethernet串行通信物理层转换器。在STM32CubeMX中使用LAN8720,可以轻松地配置和初始化Ethernet通信,为开发人员节省了大量的时间和精力。 使用STM32CubeMX配置LAN8720,首先需要选择正确的STM32微控制器系列和型号,以确保兼容性。然后,在Pinout & Configuration选项卡中,可以为LAN8720的各个引脚选择正确的STM32引脚。对于LAN8720的各个控制信号引脚,应将其分配到正确的GPIO引脚,并设置为相应的功能,如MII/RMII接口模式、时钟极性等。 在Configuration选项卡的中间部分,可以选择PHY参数和MAC参数。PHY参数涉及到LAN8720的一些配置选项,如自动协商、速度和双工模式等。而MAC参数则是关于STM32的MAC配置,如传输速率、流控制等。 在此之后,还可以配置一些其他功能,如中断,以及DMA的使用,来提高通信性能。最后,将生成的代码导入到所选的集成开发环境(IDE)中,即可开始开发基于LAN8720的Ethernet应用程序。 总结来说,STM32CubeMX和LAN8720的结合能够为开发人员提供一种简便的方式来配置和初始化STM32微控制器的Ethernet通信。通过图形化界面和丰富的选项,能够快速而准确地生成初始化代码,助力开发更高效地使用LAN8720以实现各种Ethernet应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值