FTP_Server_Teensy41

FLASH源码 2025-08-13

FTP_Server_Teensy41库



目录

  • 目录
  • 为什么我们需要此FTP_Server_Teensy41库
    • 特征
    • 目前支持的董事会
  • ChangElog
  • 先决条件
  • 安装
    • 使用Arduino Library Manager
    • 手动安装
    • VS代码和平台
  • 软件包的补丁
    • 1。
  • 原始文件
  • 例子
    • 1。FTP_SERVER_SDFAT2
    • 2。多验注射器
    • 3。ftp_server_sdfat2_nina new
  • 示例ftp_server_sdfat2
  • 调试终端输出样品
    • 1。ftp_server_sdfat2 on teensy4.1 with qnethernet
    • 2。teensy4.1上的ftp_server_sdfat2 with native ethernet
    • 3。使用以太网库中的w5x00 teensy 4.0上的ftp_server_sdfat2
  • 调试
  • 故障排除
  • 问题
  • 完毕
  • 贡献和感谢
  • 贡献
  • 执照
  • 版权


为什么我们需要此FTP_Server_Teensy41库

特征

FTP_Server_Teensy41库是从Arduino-ftp-server库修改的W5x00 using Ethernet_Generic LibraryAdafruit Airlift Featherwing using WiFiNINA_Generic Library ,并使用QNEthernetNativeEthernet ,W5X00支持Teensy 4.X。在不久的将来,将支持any FS, such as PSRAM, LittleFS, (Q)SPI Flash, etc.


目前支持的董事会

  1. Teensy 4.1使用Qnethernet,本机越野,W5X00与以太网库或Adafruit Airlift Featherwing使用Wifinina_generic库和内置的SDCARD,等等。
  2. Teensy 4.0使用W5X00与Ethernet_generic Library或Adafruit Airlift Featherwing使用WiFinina_Generic库


先决条件

  1. Arduino IDE 1.8.19+ for Arduino。
  2. Teensy core v1.57+ Teenensy 4.1
  3. QNEthernet Library version v0.16.0+ for Teensy 4.1内置以太网。
  4. NativeEthernet Library version stable111+ Teensy 4.1内置以太网。
  5. Ethernet_Generic library v2.7.1+使用W5x00 。要安装,请检查
  6. WiFiNINA_Generic library v1.8.15-1+使用Adafruit空运羽毛。要安装,请检查。

安装

使用Arduino Library Manager

最好和最简单的方法是使用Arduino Library Manager 。搜索FTP_Server_Teensy41 ,然后选择 /安装最新版本。您也可以使用此链接以获取更详细的说明。

手动安装

  1. 导航到FTP_Server_Teensy41页面。
  2. 下载最新版本FTP_Server_Teensy41 -main.zip
  3. 将zip文件提取到FTP_Server_Teensy41 -main目录
  4. 将整个FTP_Server_Teensy41 -main复制到Arduino库的目录,例如~/Arduino/libraries/

VS代码和平台:

  1. 安装VS代码
  2. 安装平台
  3. 使用库管理器安装FTP_Server_Teensy41库。在platform.io作者的库中搜索FTP_Server_Teensy41
  4. 使用示例中的Platform.ini文件包括Platform.ini文件,以确保将自动安装所有依赖的库。请访问文档以获取项目配置文件中的其他选项和示例


软件包的补丁

1。

为了能够在Teensy板上编译和运行,您必须将TeenSy目录中的文件复制到Teensy Hardware Directory(./arduino-1.8.19 /hardware/hardware/teensy/teensy/avr/boards.txt)中。

假设Arduino版本为1.8.19。这些文件必须复制到目录中:

  • ./arduino-1.8.19/hardware/teensy/avr/boards.txt
  • ./arduino-1.8.19/hardware/teensy/avr/cores/teensy/Stream.h
  • ./arduino-1.8.19/hardware/teensy/avr/cores/teensy3/Stream.h
  • ./arduino-1.8.19/hardware/teensy/avr/cores/teensy4/Stream.h

每当安装新版本时,请记住将此文件复制到新版本目录中。例如,新版本是X.yy.zz这些文件必须复制到目录中:

  • ./arduino-x.yy.zz/hardware/teensy/avr/boards.txt
  • ./arduino-x.yy.zz/hardware/teensy/avr/cores/teensy/Stream.h
  • ./arduino-x.yy.zz/hardware/teensy/avr/cores/teensy3/Stream.h
  • ./arduino-x.yy.zz/hardware/teensy/avr/cores/teensy4/Stream.h


原始文件

请看一下readme_orig.md或readme.md



例子

  1. ftp_server_sdfat2
  2. 多验注射
  3. ftp_server_sdfat2_nina new


示例ftp_server_sdfat2

1。文件ftp_server_sdfat2.ino

FTP_Server_Teensy41 /examples/ftp_server_sdfat2/ftp_server_sdfat2.ino

EDC4CFF中的第10至373行

包括 defines.h
包括< sd.h >
包括< spi.h >
定义pasv_response_style_new true
定义ftp_filesyst ftp_sdfat2
//默认2048
定义ftp_buf_size 8192
定义ftp_user_name_len 64 //最大允许和默认值为64
定义ftp_user_pwd_len 128 //最大允许和默认值为128
包括< FTP_Server_Teensy41 .h >
// ftpserver的对象
//可以在此处定义的被动模式下的命令端口和数据端口
// FTPSERVER FTPSRV(221,25000);
// ftpserver ftpsrv(421); //被动模式下的默认数据端口为55600
ftpserver ftpsrv; //默认命令端口为21(!!无括号!!)
提交myfile;
//更改此操作以匹配您的SD盾牌或模块;
// Arduino以太网盾:引脚4
// Adafruit SD盾牌和模块:引脚10
// Sparkfun SD盾:引脚8
//青少年音频板:引脚10
// Teensy 3.5&3.6&4.1板载:hindin_sdcard
// WIZ820+SD板:引脚4
// Teensy 2.0:引脚0
// Teensy ++ 2.0:引脚20
const int chipselect = bundin_sdcard; // 10;
sdclass myfs;
//使用SD实用程序库函数设置变量:
SD2CARD卡;
sdvolume量;
sdfile root;
/ **************************************************************************************************************
** **
**初始化**
** **
*************************************************************************************************
定义ftp_account teensy4x
定义ftp_password ftp_test
void initereThernet ()
{
如果use_qn_ethernet
系列。 printlnf ============== use_qn_ethernet ================ );
#elif use_native_ethernet
系列。 printlnf =========== use_native_ethernet ========== );
#elif use_ethernet_generic
系列。 printlnf =========== use_ethernet_generic ========= );
别的
系列。 printlnf ========================================
#endif
如果use_native_ethernet
//启动以太网连接和服务器:
//使用DHCP动态IP和随机Mac
uint16_t index = millis ()%number_of_mac;
//使用静态IP
//以ethernet.begin(mac [index],ip);
以太网。开始(Mac [index]);
系列。打印f使用mac index = ));
系列。 println (index);
系列。打印f连接!ip地址: ));
系列。 println以太网。localip());
#elif use_qn_ethernet
如果使用_DHCP
//使用DHCP启动以太网连接
系列。打印使用DHCP => 初始化以太网);
以太网。开始();
//为DHCP提供以太网屏蔽最小1秒,staticp给出2秒钟以初始化:
延迟1000 );
别的
//使用静态IP启动以太网连接
系列。打印使用静态IP => 初始化以太网);
以太网。开始(myip,mynetmask,mygw);
以太网。 setdnsserverip (mydnsserver);
#endif
如果(!以太网。WaitforLocalip( 5000 ))
{
系列。 println无法配置以太网 );
如果(!以太网。linkstatus())
{
系列。 println未连接以太网电缆。 );
}
//永远留在这里
true
{
延迟1 );
}
}
别的
{
系列。打印 IP地址= );
系列。 println以太网。localip());
}
//为DHCP提供以太网屏蔽最小1秒,staticp给出2秒钟以初始化:
//延迟(2000);
别的
ftp_logwarnf默认spi pinout: ));
ftp_logwarn1f mosi: ),mosi);
ftp_logwarn1f miso: ),miso);
ftp_logwarn1f sck: ),sck);
ftp_logwarn1f ss: ),ss);
ftp_logwarnf =========================== );
//未知板,什么都不做,使用默认SS = 10
#ifndef use_this_ss_pin
定义use_this_ss_pin 10 //其他董事会
#endif
如果定义(board_name)
ftp_logwarn3f board: ),board_name, f ,setcspin: ),use_this_ss_pin);
别的
ftp_logwarn1f未知板setcspin: ),use_this_ss_pin);
#endif
//对于其他董事会,如有必要
以太网。 init (use_this_ss_pin);
//启动以太网连接和服务器:
//使用DHCP动态IP和随机Mac
uint16_t index = millis ()%number_of_mac;
//使用静态IP
//以ethernet.begin(mac [index],ip);
以太网。开始(Mac [index]);
系列。打印 IP地址= );
系列。 println以太网。localip());
#endif
}
void cardinit ()
{
//我们将使用实用程序库中的初始化代码
//因为我们只是在测试卡是否有效!
if (!card。init spi_half_speed,chipselect))
{
系列。 println初始化失败。要检查的事物: );
系列。 println *插入卡片? );
系列。 println *您的布线正确? );
系列。 println *您是否更改了芯片销钉以匹配盾牌或模块? );
返回;
}
别的
{
系列。 println接线是正确的,存在卡片。 );
}
//打印卡的类型
系列。打印 \ n卡类型: );
开关(卡。类型())
{
案例SD_CARD_TYPE_SD1:
系列。 println SD1 );
休息;
案例SD_CARD_TYPE_SD2:
系列。 println sd2 );
休息;
案例SD_CARD_TYPE_SDHC:
系列。 println sdhc );
休息;
默认
系列。 println未知 );
}
//现在我们将尝试打开“卷”/“分区” - 应该是fat16或fat32
如果(!卷。初始化(卡))
{
系列。 println找不到FAT16/FAT32分区。 \ n确保您已格式化了卡片 );
返回;
}
//打印第一个脂肪型体积的类型和大小
下载源码

通过命令行克隆项目:

git clone https://github.com/khoih-prog/FTP_Server_Teensy41.git