Bootstrap

【rt-thread难点指南】以太网配置

【rt-thread难点指南】以太网配置

本文以以太网口LAN8720A、MCU型号为stm32f407为例,介绍以太网配置步骤。如果有问题或建议,欢迎留言或邮件[email protected]沟通。

一、cubemx配置

1.通过rt-studio打开cubemxcubemx

2.打开connectivity,选择ETH

在这里插入图片描述

3.选择mode为RMII

在这里插入图片描述

4.选择自己板子对应的引脚

具体引脚自己参考自己板子的原理图,这里以我的板子原理图为例。注意PD3为以太网接口复位引脚,这里先不对其进行配置。
在这里插入图片描述
在这里插入图片描述

修改Ethernet MAC Address 可以修改mac地址,这里保持默认。
修改mac
保持默认
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.选择不要生成main()

在这里插入图片描述

6.生成代码

cubemx其余选项不用管,点击生成代码
在这里插入图片描述

二、rt-studio配置

1.点击确认,并编译

在这里插入图片描述
我们编译直接过了,你编译没过也不要紧,跟着步骤来就行/
在这里插入图片描述

2.配置board.h

在这里插入图片描述
按照英文提示去掉注释
在这里插入图片描述

/*-------------------------- ETH CONFIG BEGIN --------------------------*/

/** if you want to use eth you can use the following instructions.
 *
 * STEP 1, define macro related to the eth
 *                 such as    BSP_USING_ETH
 *
 * STEP 2, copy your eth init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end if board.c file
 *                 such as     void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)
 *
 * STEP 3, modify your stm32xxxx_hal_config.h file to support eth peripherals. define macro related to the peripherals
 *                 such as     #define HAL_ETH_MODULE_ENABLED
 *
 * STEP 4, config your phy type
 *                 such as     #define PHY_USING_LAN8720A
 *                             #define PHY_USING_DM9161CEP
 *                             #define PHY_USING_DP83848C
 * STEP 5, implement your phy reset function in the end of board.c file
 *                 void phy_reset(void)
 *
 * STEP 6, config your lwip or other network stack
 *
 */

#define BSP_USING_ETH
#ifdef BSP_USING_ETH
#define PHY_USING_LAN8720A
/*#define PHY_USING_DM9161CEP*/
/*#define PHY_USING_DP83848C*/
#endif
/*-------------------------- ETH CONFIG END --------------------------*/

3.打开RT-Thread Settings

在这里插入图片描述

4.RT-Thread Settings配置

使能以太网物理层驱动
在这里插入图片描述

打开网络配置,如下图(内部参数保持默认)
在这里插入图片描述

5.保存退出,打开board.c

添加如下代码
这以太网上电的时候系统会自动调用这个函数,这里要补全,不然会报错,还记得我在前面说的我的以太网模块复位引脚是PD3吗

#include <pin.h>

#define RESET_IO GET_PIN(D, 3)
void phy_reset(void)
{
   rt_pin_mode(RESET_IO, PIN_MODE_OUTPUT);
   rt_pin_write(RESET_IO, PIN_HIGH);
   rt_thread_mdelay(50);
   rt_pin_write(RESET_IO, PIN_LOW);
   rt_thread_mdelay(50);
   rt_pin_write(RESET_IO, PIN_HIGH);
}

如果提示找不到pin.h文件,请注意是否打开pin设备驱动程序
在这里插入图片描述

6.修改部分文件

a.修改phy.h

我们打开phy.h,路径如下图
在这里插入图片描述
注释掉32行
在这里插入图片描述

b.修改main.c

我们打开main.c,路径如下
在这里插入图片描述
删除
在这里插入图片描述
删除整个函数
在这里插入图片描述
删除整个函数
在这里插入图片描述

d.修改stm32f4xx_hal_conf.h

取消掉串口的注释
在这里插入图片描述

7.编译常见错误

如果提示找不到pin.h文件,请关注include路径,这个文件是在这个位置。
在这里插入图片描述在这里插入图片描述

如果出现如下错误,请关注这里是否已打开注释。
在这里插入图片描述
在这里插入图片描述

8.运行结果

a.编译结果

在这里插入图片描述

b.运行结果

请确保你的以太网口,已经连通网络

ifconfig 获取当前设备ip
在这里插入图片描述
ping工具–常见网络测试工具
在这里插入图片描述

;