eillt · 2022年11月26日 · 广东

【GD32F427开发板试用】LAN8720模块以太网通信移植

GD32F427 ENET以太网外设介绍

GD32F427芯片内自带了一个10/100M以太网控制器ENET,采用DMA优化数据帧的发送与接受提升性能,即MAC控制器通过DMA与CPU的内存SRAM可以直接进行数据传输。与串口或SPI接口的以太网模块相比,这可以极大的提升数据传输带宽。

MAC控制器通过MII或RMII接口与外部PHY芯片连接,然后转换成RJ45可以连接到主机或路由器。
image.png

MII接口模式

当ENT工作在MII接口时,根据IEEE 802.3协议,Tx MAC和Rx MAC的时钟都是来自外部PHY,此时钟配置寄存器SYSCFG_CFG1为0,表示时钟遵从MII接口模式配置。

MII接口走线比较多,一般用的比较少。数据路径时钟频率分别是2.5MHz/25MHz。数据上升沿驱动。
image.png

RMII接口模式

当ENET工作在RMII接口是,因为把数据bus从原来4bit减少到了2bit,所以总线上的时钟频率提升至50MHz,数据还是上升沿驱动;此时需要配置SYSCFG_CFG1对应的时钟选择配置ENET_PHY_SEL为1,此时时钟是由内部PLL的200MHZ进行分频得到50MHz和MAC控制器的25MHz,如果工作在10M,则MAC控制器的时钟为2.5MHz。

image.png

LAN8720 PHY芯片介绍

LAN8720是低功耗的10/100M以太网PHY层芯片,LAN8720支持通过RMII接口与以太网MAC层通信,内置10-BASE-T/100BASE-TX全双工传输模块,以下是其特点:
1、支持RMII接口以减少引脚数
2、支持全双工和半双工模式
3、可以使用25M晶振以降低成本
4、支持SMI串行管理接口(遵从IEEE 802.3 Clause22 MDIO protocol
5、支持MAC接口

ENET可以通过SMI接口来读写PHY(LAN8720)的寄存器,SMI最多可以控制32个PHY芯片,通过不同的PHY芯片地址来对不同的PHY操作。LAN8720通过设置RXER/PHYAD0引脚来设置其PHY地址,默认情况下为0,也可以设置为1。
个人环境PHY地址为1,后面在固件种需要修改对应值。

nINT/REFCLKO配置

nINTSEL引脚(2号引脚)用于设置nINT/REFCLKO引脚(14号引脚)的功能。
nINTSEL为0表示REF_CLK Out模式,为1表示REF_CLK In模式。

REF_CLK In模式

当工作在REF_CLK In模式时,50MHz的外部时钟信号应接到LAN8720的XTAL1/CKIN引脚(5号引脚)和STM32F407的RMII_REF_CLK(PA1)引脚上,如下图所示。
image.png

REF_CLK Out模式

为了降低成本,LAN8720可以从外部的25MHz的晶振中产生REF_CLK时钟。到要使用此功能时应工作在REF_CLK Out模式时。当工作在REF_CLO Out模式时REF_CLK的时钟源如下图所示。
image.png

这里GD32F427的固件库已经提供了LAN8720的驱动,我们只需要修改头文件即可。

移植流程

1、硬件环境准备

首先,LAN8720与GD32F427开发板连接起来。需要连接TXD0 TXD1 TXEN RXD0 RXD1 RXD_DV REF_CLK和MDC/MDIO,一共9个接口,分别表示数据总线和管理通道。
然后,为了便于串口查看执行情况,使用usb转串口小板模块,将GD32F427的UART0接到PC机。
img_v2_b54f3974-59bc-496a-b8e1-5a930588f54g.jpg

2、软件环境准备

使用了官方提供的ENET参考样例。GD32F4xx_Firmware_Library_V3.0.2\GD32F4xx_Firmware_Library\Examples\ENET

修改映射GD32F427开发板的UART0到PB6/PB7。
image.png

修改固件库头文件的PHY类型和PHY地址。
image.png

3、测试步骤

将LAN8720通过网线与路由器连接,启动AN自协商,固件去polling PHY的link状态,然后通过串口打印。
image.png

推荐阅读
关注数
10708
内容数
187
中国高性能通用微控制器领域的领跑者兆易创新GD系列芯片技术专栏。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息