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

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

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

打印出系统时钟

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

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

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

打开#define PHY_USING_LAN8720A的宏定义

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

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

引脚连接如下

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

修改LWIP的两个配置

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

 

 

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值