rt-thread studio中添加lan8720网络驱动

1.使用rt-thread studio新建项目,选择好主控芯片和打印串口。

rt-thread studio中添加lan8720网络驱动_第1张图片

新建工程第一步当然是关心芯片各个总线的系统时钟啦,打开driver文件下的drv_clk.c文件修改#define DBG_LVL DBG_INFO为#define DBG_LVL DBG_LOG

打印出系统时钟

rt-thread studio中添加lan8720网络驱动_第2张图片

编译、下载通过串口即可看到当前的系统时钟,可以看到rt thread系统已经把系统时钟配置好了,我们用系统默认就可以。

如果需要修改更改drv_clk.c文件里的system_clock_config()就可以了。

rt-thread studio中添加lan8720网络驱动_第3张图片

打开drivers文件下的 board.h文件,打开#define BSP_USING_ETH的宏定义

打开#define PHY_USING_LAN8720A的宏定义

rt-thread studio中添加lan8720网络驱动_第4张图片

打开CubeMX Settings(新版的rt thread studio虽然集成了CubeMX,但好像还是要先生存keil工程然后再复制代码)。

LAN8720芯片和单片机采用RMII接口。

rt-thread studio中添加lan8720网络驱动_第5张图片

引脚连接如下

LAN8720A          STM32F407VGT6

ETH_MDIO----------->PA2

ETH_MDC------------>PC1

ETH_RESET------------>PA0

RMII_TXD0-------------->PB12

RMII_TXD1-------------->PB13

RMII_TX_EN-------------->PB11

RMII_RXD0-------------->PC4

RMII_RXD1-------------->PC5

RMII_CRS_DV-------------->PA7

RMII_REF_CLK-------------->PA1

rt-thread studio中添加lan8720网络驱动_第6张图片

这里还有许多设置,不知道干嘛用的,全部默认即可。

rt-thread studio中添加lan8720网络驱动_第7张图片

配置完生成keil工程,然后打开工程里的stm32f4xx_hal_msp.c文件,复制void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)函数。

复制到自己工程的 board.c 文件的末尾

rt-thread studio中添加lan8720网络驱动_第8张图片

stm32f4xx_hal_conf.h 文件中打开对 ETH 的支持,也就是取消掉 HAL_ETH_MODULE_ENABLED 这个宏定义的注释

rt-thread studio中添加lan8720网络驱动_第9张图片

在主函数中添加void phy_reset(void)函数

rt-thread studio中添加lan8720网络驱动_第10张图片

打开RT-Thread Settings打开 LWIP 协议栈的支持

rt-thread studio中添加lan8720网络驱动_第11张图片

LWIP图标右键-->详细信息

rt-thread studio中添加lan8720网络驱动_第12张图片

这里不需要修改什么信息,然后编译下载,插上网线,网络已经通了,但还不支持ifconfig指令

rt-thread studio中添加lan8720网络驱动_第13张图片

仔细查了下ifconfig命令在SAL里面,那么就开启SAL

rt-thread studio中添加lan8720网络驱动_第14张图片

详细配置里默认已经打开了ifconfig功能了

rt-thread studio中添加lan8720网络驱动_第15张图片

重新编译、下载,试一下ifconfig命令

rt-thread studio中添加lan8720网络驱动_第16张图片

成功打印出设备的IP地址,默认是开启了DHCP功能的。

到这里LAN8720网络就已经调通了。很简单。。。。

就单这么一个程序,其他通信程序都没加,运行一段时间就是RxCpltCallback err = -3错误,虽然不影响通信,但看着不舒服啊。

rt-thread studio中添加lan8720网络驱动_第17张图片

修改LWIP的两个配置

rt-thread studio中添加lan8720网络驱动_第18张图片

然后编译、下载基本不会再出现这个错误了。

 

 

你可能感兴趣的:(单片机开发)