系统框图

一篇就够系列之LAN8720的使用-编程知识网

        LAN8720是一款PHY芯片,寄存器配置与数据传输的接口是相互独立的,寄存器配置接口为SMI,数据传输接口为RMII,SMI接口为一根时钟线,一根数据线,被称做串行管理接口,RMII接口用来传输数据,相比MII接口,更加精简,被称做精简MII接口,其中字母R即reduced。

功能说明

收发器

        PHY芯片具备的基础功能。

自动协商

        纯粹是物理层活动,其执行与MAC控制器无关。

自动MDIX

         此功能意味着发送、接收数据线接错后,PHY芯片会自动调整。

MAC接口

        即RMII接口,与MAC进行数据传输的接口。

串行管理接口

        寄存器配置接口。

配置引脚

        用于配置PHY的硬件地址。

工作流程

        分析芯片的驱动流程,我们可以从网获取相关程序代码,代码有所不同,但是分析方式一致,即从寄存器入手,定位PHY芯片的初始化函数。

        获取了一份基于STM32F427芯片的工程,在stm32f4xx_hal_conf.h中找到PHY寄存器相关定义。

一篇就够系列之LAN8720的使用-编程知识网

         查找寄存器相关引用,发现在stm32f4xx_hal_eth.c文件HAL_ETH_Init()中,对PHY进行了初始化操作。

注意要点

1、此工程中使用了LAN8720的扩展寄存器PHY_SR,如果换成RTL8201芯片,需要调整寄存器的定义以及调用此寄存器的函数。比如函数ethernetif_update_config()、HAL_ETH_Init()。