打印
[STM32H7]

【STM32H7S78-DK测评】以太网口使用并移植lwip

[复制链接]
24|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM32H7支持一个以太网口,在这类嵌入式设备上,通常使用LWIP来配置以太网协议栈,结合上一篇文章介绍的SD卡文件系统,本文介绍如何实现一个简单的tftp服务器
首先还是要看下原理图,板子上使用LAN8742作为phy,主控与phy通过RMII相连
这个LAN8742不用过多关注,就当成普通phy使用即可,普通phy的通用寄存器是一样的
使用lwip时,只需要在MX_LWIP_Init调用netif_add,即可使这个网口与lwip相关联,硬件的初始化是netif_add->ethernetif_init->low_level_init->HAL_ETH_Init实现调用的
其中low_level_initST实现,里面包含默认的MAC 等信息
然后HAL_ETH_Init会调用HAL_ETH_MspInit实现PIN脚和时钟初始化
注意到这里使用PC1作为ETH_MDC,那么开发板上面的JP6就要接到PC1那里
然后LWIP是支持DHCP的,这里打开
如果能成功分配到IP,那这些信息会存在gnetif里面
这样LWIP初始化就介绍完了,下面介绍其业务
首先使用tftpd_init初始化tftp服务。就是socket接收功能
端口使用69IP就是DHCP得到的IP
然后再初始化FATFS等,这个上一篇文章有介绍,这里不提
接着就是在主循环里面持续维护dhcp服务,比如dhcp连接,断开等,然后tftp的操作是依靠lwip的回调实现
而这个回调,正是上面tftpd_initrecv函数里面注册的
下面演示具体效果,首先还是要上电前插SD卡,然后要插好网线,不插网线会卡在lwip初始化那里(话说STSDK对热插拔支持奇差,凡是热插拔设备上电时必须插着)
然后找个支持路由器,一个口接电脑,一个口接开发板,在路由管理界面,看到这个MAC地址的,就是开发板
然后启动一个tftp的工具,推荐tftpd64
按下图配置
注意这个开发板文件目录,必须是0:/开头
然后执行put,就可以将文件发送到开发板,完成传输会显示此对话框
SD卡拔出,放电脑上,可以看到确实存在此文件
到这里,就完成了lwip功能的简单开发

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

776

帖子

2

粉丝