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

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:eillt

GD32F427 ENET以太网外设介绍

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

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

MII接口模式

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

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

RMII接口模式

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

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)引脚上,如下图所示。

REF_CLK Out模式

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

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

移植流程

1、硬件环境准备

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

2、软件环境准备

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

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

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

3、测试步骤

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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值