logo
当前位置:首 页 > 硬件技术 > 查看文章

基于STM32F407搭建TCP服务器及TFTP服务器

硬件技术 你是第3215个围观者 0条评论 供稿者: 标签:
掉落的枫叶像老工程师的笔记经验
我打开夜灯照亮岁末的秋天
晚霞掠过天边
北风掠过工作台的桌面
我把努力融进了落叶
想换来熟悉的那些肯定的笑颜

开发平台

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接口引脚如下图,

  1. 配置时钟
    外部高速晶振选择为8M,PLL SORCE MUX 选择为HSE,在HCLK处输入168点回车,软件会自动配置好
  2. 中间件配置
    这里主要配置,ETH、LWIP、串口1、GPIO
  3. 生成工程代码

    点左上角的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中文社区(www.stmcu.org )的一位名字叫156****4352的网友,一位武汉的小鲜肉。

↓_(:зゝ∠)_详细步骤以及TFTP 服务器测试  下载至www.stmcu.com.cn/share

说说梦想,谈谈感悟 ,聊聊技术,有啥要说的来github留言吧 https://github.com/cjx2328

—— 陈 建鑫

陈建鑫
footer logo
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容。站长联系:cjx2328#126.com(修改#为@)
Copyright ©ziao Studio All Rights Reserved. E-mail:cjx2328#126.com(#号改成@) 沪ICP备14052271号-3