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

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

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

一、cubemx配置

1.通过rt-studio打开cubemx【rt-thread难点指南】以太网配置_第1张图片

2.打开connectivity,选择ETH

【rt-thread难点指南】以太网配置_第2张图片

3.选择mode为RMII

【rt-thread难点指南】以太网配置_第3张图片

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

具体引脚自己参考自己板子的原理图,这里以我的板子原理图为例。注意PD3为以太网接口复位引脚,这里先不对其进行配置。
【rt-thread难点指南】以太网配置_第4张图片
【rt-thread难点指南】以太网配置_第5张图片

修改Ethernet MAC Address 可以修改mac地址,这里保持默认。
【rt-thread难点指南】以太网配置_第6张图片
保持默认
【rt-thread难点指南】以太网配置_第7张图片
【rt-thread难点指南】以太网配置_第8张图片
【rt-thread难点指南】以太网配置_第9张图片

5.选择不要生成main()

【rt-thread难点指南】以太网配置_第10张图片

6.生成代码

cubemx其余选项不用管,点击生成代码
【rt-thread难点指南】以太网配置_第11张图片

二、rt-studio配置

1.点击确认,并编译

【rt-thread难点指南】以太网配置_第12张图片
我们编译直接过了,你编译没过也不要紧,跟着步骤来就行/
【rt-thread难点指南】以太网配置_第13张图片

2.配置board.h

【rt-thread难点指南】以太网配置_第14张图片
按照英文提示去掉注释
【rt-thread难点指南】以太网配置_第15张图片

/*-------------------------- 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

【rt-thread难点指南】以太网配置_第16张图片

4.RT-Thread Settings配置

使能以太网物理层驱动
【rt-thread难点指南】以太网配置_第17张图片

打开网络配置,如下图(内部参数保持默认)
【rt-thread难点指南】以太网配置_第18张图片

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

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

#include 

#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设备驱动程序
【rt-thread难点指南】以太网配置_第19张图片

6.修改部分文件

a.修改phy.h

我们打开phy.h,路径如下图
【rt-thread难点指南】以太网配置_第20张图片
注释掉32行
【rt-thread难点指南】以太网配置_第21张图片

b.修改main.c

我们打开main.c,路径如下
【rt-thread难点指南】以太网配置_第22张图片
删除
【rt-thread难点指南】以太网配置_第23张图片
删除整个函数
【rt-thread难点指南】以太网配置_第24张图片
删除整个函数
【rt-thread难点指南】以太网配置_第25张图片

d.修改stm32f4xx_hal_conf.h

取消掉串口的注释
【rt-thread难点指南】以太网配置_第26张图片

7.编译常见错误

如果提示找不到pin.h文件,请关注include路径,这个文件是在这个位置。
【rt-thread难点指南】以太网配置_第27张图片【rt-thread难点指南】以太网配置_第28张图片

如果出现如下错误,请关注这里是否已打开注释。
【rt-thread难点指南】以太网配置_第29张图片
【rt-thread难点指南】以太网配置_第30张图片

8.运行结果

a.编译结果

【rt-thread难点指南】以太网配置_第31张图片

b.运行结果

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

ifconfig 获取当前设备ip
【rt-thread难点指南】以太网配置_第32张图片
ping工具–常见网络测试工具
【rt-thread难点指南】以太网配置_第33张图片

你可能感兴趣的:(单片机,stm32,物联网,嵌入式硬件,硬件架构)