掉落的枫叶像老工程师的笔记经验我打开夜灯照亮岁末的秋天晚霞掠过天边北风掠过工作台的桌面我把努力融进了落叶想换来熟悉的那些肯定的笑颜
开发平台
STM32F407开发板(带以太网),板子上的PHY为LAN8720A,没有用到显示屏全为串口输出调试信息。实现功能
通过STM32CubeMX在原子STM32F407板子上搭建TCP Server 及 TFTP Server ,实现这些功能非常简单。步骤
功能介绍、工程搭建、工程代码、TFTP 服务器测试
1、TCP Server 实现显示连接上的客户端IP及对客户端发来的数据回传2、TFTP Server 实现IAP功能及读取MCU内部FLASH数据。这里用到的是文件传输协议,主要是参考官方文档UM1709,及官方STM324xG_EVAL的LWIP IAP例子。
工程搭建外设配置
打开STM32CubeMX,点NEW PROJECT,在左侧的输入框中输入407ZG,在右侧会显示STM32F407ZGT6的MCU列表,选择此列表,双击。设置时钟源为外部时钟开启SWD调试接口,开启ETH外设,选择RMII接口(LAN8720A为RMII接口),中间件里时能LWIP。使用RMII接口的时候软件会自动配置对应的引脚,但是一定要仔细对比软件配置的引脚是否为板子上硬件所连接的。
原子F407板子上的LAN8720A的RMII接口引脚如下图,
-
配置时钟外部高速晶振选择为8M,PLL SORCE MUX 选择为HSE,在HCLK处输入168点回车,软件会自动配置好
-
中间件配置这里主要配置,ETH、LWIP、串口1、GPIO
-
生成工程代码
点左上角的Project,选择Settings...(不建议直接点黄色的齿轮),点击OK。再点右上方的黄色齿轮即可生成工程代码。
1、TCP Server 的实现
看起来代码很多,其实真的不复杂。
大致流程:先新建一个TCB_PCB、开始监听、挂载客户端连接请求回调函数、挂载接收数据回调函数、挂载发送完成回调函数、挂载出错回调函数、挂载心跳包回调函数、关闭连接等,最重要的是释放内存!每收到一个数据链,它已经被申请了内存,所有在处理完这个数据后一定要释放。
2、TCP服务器测试用网络调试助手连接TCP服务器(两者必须在一个网关里面,192.168.000.XXX),网络调试助手里选择TCP客户端,远程主机IP为 192.168.0.120 , 端口号为7
详细测试步骤请点击阅读原文下载。
通过测试,则表示TCP服务器已经完成。您也可以通过手机连接这个路由器的WIFI,通过 网络调试助手APP来连接这个开发板的服务器,电脑可以通过 TCP客户端与开发板的TCP服务器连接同时也可以用手机做TCP客户端连接开发板的TCP服务器。
3、TFTP Server 的实现还是在上面的代码上来实现此功能,即在TCP 服务器的代码上实现TFTP 服务器。打开刚才STM32CubeMX工程,在原来的基础上来配置LWIP。
因为是要通过TFTP 来实现 IAP 功能 ,所有一定有FLASH 的操作,这里我们COPY官方例子里面的flash_if.c和flash_if.h
至此,TFTP服务器搭建完成,下载到开发板,串口显示如下信息:Start 开始监听 挂载客户端连接回调函数 TFTP初始化成功 Static IP address: 192.168.0.120可以通过上面的TCP服务器测试步骤来测试TCP服务器功能,正常测试,工作正常,ping也能通
-
STM32
+关注
关注
2270文章
10895浏览量
355744 -
TFT
+关注
关注
10文章
385浏览量
111063 -
TCP
+关注
关注
8文章
1353浏览量
79055 -
STM32F4
+关注
关注
3文章
194浏览量
28047
发布评论请先 登录
相关推荐
评论