STM32 基础系列教程 39 - Lwip_tftp

本文介绍了文件传输协议(FTP),包括其定义、特点和端口号等。重点讲解了基于正点源子的stm32f4探索者开发板,使用stm32cubemx工具和KEIL5,构建stm32 + LWIP的TFTP服务器的实验,涵盖工程配置、代码添加、编译下载及文件传输测试等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。

FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。

      TCP/IP协议中,FTP标准命令TCP端口号为21或2121,FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制。本节我们将学习stm32 + LWIP构建一下TFTP(简单文件传输协议)服务器,使用UDP通信,其对应的端口为69。

 

示例详解

基于硬件平台: 正点源子的stm32f4 探索者开发板,主要使用了SDIO文件系统以及以太网接口, MCU 的型号是 STM32F4ZET6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。本示例所用的开发板及部分原理图:

https://www.eeboard.com/shop/data/uploads/2018/08/01/1533087371.jpg

 

 

    1. 关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:

 

      1. 系统时钟树

 

      1. 网口配置

高级参数项默认是LAN8742,开发板使用的是LAN8720,它两寄存器基本一样,所以本实验对高级参数不作修改。

 

      1. RCC配置

      1. SYS配置

 

      1. Lwip配置(开启tftp)

 

      1. 文件系统,因为是文件传输协议,所以要对文件时行操作,本例中用SDIO接口,加文件系统实现文件操作:

开DMA,不是必需但建议开!

DMA及SDIO中断设置,原则是全局中断优先级高于DMA中断:

文件系统,我们直接先用SD Card:

高级设置中使用DMA开启,当然也可以不开:

 

      1. 引脚配置

IO脚按原理图来配置即可,但这时要注意一点是网口芯片有个复位引脚PD3在程序运行时要配迈高,可参考如下:

      1. 堆栈配置,本工程较大,可以适当加大堆栈大小:

 

    1. 工程代码
      1. 在main.c 中加入如下图所示代码:

 

在Fatfs.c文件的MX_FATFS_Init函数中加入文件挂载操作:

    1. 编译工程,下载代码, ip为路由器自动分配,如果设备网口及LWIP成功运行,在路由器列表中同样也应该可以看到我们的设备,同时应该是可以PING通的:

(注:在使用探索者F4调试时,下载或仿真调试时先不要PC串口工具连接上开发板的USB_232接口,有可能导致程序运行不了--boot0引脚电平不对,可以先跑起来再在PC串口工具上连接相应端口!!)

安装并打开tftp工具(该工具在WIN10兼容性不是很好,可以试试修改兼容模式运行),进行如下操作:

往开发板上传桌面上的文件456.txt,文件名保存为Stm32cube.txt:

上传完成,删除桌面上已有的789.txt文件,从开发板下载Stm32cube.txt,保存本地名字为789.txt

查看789.txt文件内容发现与456.txt文件内容一致:

到此stm32+lwip的tftp服务构建实验就完成了。

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

 

文中源码资料下载,在公众号里给十三发消息:

下载|STM32基础系列教程39

 

关注十三公众号

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值