STM32F407 lwip速度测试

发布者:幸福家园最新更新时间:2022-05-16 来源: eefocus关键字:STM32F407  lwip  速度测试 手机看文章 扫描二维码
随时随地手机看文章

硬件:正点原子探索者开发板


下位机:lwip1.4裸跑

上位机:JPerf2.0.2

测试结果:最快传输速到达到10.2MBytes,平均带宽80.7Mb/s

在这里插入图片描述

稳定速度:传输速到达到8.55MBytes,平均带宽72.1Mb/s

在这里插入图片描述

所用lwip配置如下:

#ifndef __LWIPOPTS_H__

#define __LWIPOPTS_H__


#define SYS_LIGHTWEIGHT_PROT    0


//NO_SYS==1:不使用操作系统

#define NO_SYS                  1  //不使用UCOS操作系统


//使用4字节对齐模式

#define MEM_ALIGNMENT           4  


//MEM_SIZE:heap内存的大小,如果在应用中有大量数据发送的话这个值最好设置大一点 

#define MEM_SIZE                (16*1024) //内存堆大小


//MEMP_NUM_PBUF:memp结构的pbuf数量,如果应用从ROM或者静态存储区发送大量数据时,这个值应该设置大一点

#define MEMP_NUM_PBUF           16


//MEMP_NUM_UDP_PCB:UDP协议控制块(PCB)数量.每个活动的UDP"连接"需要一个PCB.

#define MEMP_NUM_UDP_PCB        6


//MEMP_NUM_TCP_PCB:同时建立激活的TCP数量

#define MEMP_NUM_TCP_PCB        10


//MEMP_NUM_TCP_PCB_LISTEN:能够监听的TCP连接数量

#define MEMP_NUM_TCP_PCB_LISTEN 6


//MEMP_NUM_TCP_SEG:最多同时在队列中的TCP段数量

#define MEMP_NUM_TCP_SEG        15


//MEMP_NUM_SYS_TIMEOUT:能够同时激活的timeout个数

#define MEMP_NUM_SYS_TIMEOUT    8



/* ---------- Pbuf选项---------- */

//PBUF_POOL_SIZE:pbuf内存池个数. 

#define PBUF_POOL_SIZE          20


//PBUF_POOL_BUFSIZE:每个pbuf内存池大小. 

#define PBUF_POOL_BUFSIZE       1528



/* ---------- TCP选项---------- */

#define LWIP_TCP                1  //为1是使用TCP

#define TCP_TTL                 255//生存时间


/*当TCP的数据段超出队列时的控制位,当设备的内存过小的时候此项应为0*/

#define TCP_QUEUE_OOSEQ         0


//最大TCP分段

#define TCP_MSS                 (1500 - 40)   //TCP_MSS = (MTU - IP报头大小 - TCP报头大小


//TCP发送缓冲区大小(bytes).

#define TCP_SND_BUF             (4*TCP_MSS)


//TCP_SND_QUEUELEN: TCP发送缓冲区大小(pbuf).这个值最小为(2 * TCP_SND_BUF/TCP_MSS) 

#define TCP_SND_QUEUELEN        (2* TCP_SND_BUF/TCP_MSS)


//TCP发送窗口

#define TCP_WND                 (8*TCP_MSS)



/* ---------- ICMP选项---------- */

#define LWIP_ICMP                 1 //使用ICMP协议


/* ---------- DHCP选项---------- */

//当使用DHCP时此位应该为1,LwIP 0.5.1版本中没有DHCP服务.

#define LWIP_DHCP               0


/* ---------- UDP选项 ---------- */ 

#define LWIP_UDP                1 //使用UDP服务

#define UDP_TTL                 255 //UDP数据包生存时间



/* ---------- Statistics options ---------- */

#define LWIP_STATS 0

#define LWIP_PROVIDE_ERRNO 1



//STM32F4x7允许通过硬件识别和计算IP,UDP和ICMP的帧校验和

#define CHECKSUM_BY_HARDWARE //定义CHECKSUM_BY_HARDWARE,使用硬件帧校验



#ifdef CHECKSUM_BY_HARDWARE

  //CHECKSUM_GEN_IP==0: 硬件生成IP数据包的帧校验和

  #define CHECKSUM_GEN_IP                 0

  //CHECKSUM_GEN_UDP==0: 硬件生成UDP数据包的帧校验和

  #define CHECKSUM_GEN_UDP                0

  //CHECKSUM_GEN_TCP==0: 硬件生成TCP数据包的帧校验和

  #define CHECKSUM_GEN_TCP                0 

  //CHECKSUM_CHECK_IP==0: 硬件检查输入的IP数据包帧校验和

  #define CHECKSUM_CHECK_IP               0

  //CHECKSUM_CHECK_UDP==0: 硬件检查输入的UDP数据包帧校验和

  #define CHECKSUM_CHECK_UDP              0

  //CHECKSUM_CHECK_TCP==0: 硬件检查输入的TCP数据包帧校验和

  #define CHECKSUM_CHECK_TCP              0

#else

  //CHECKSUM_GEN_IP==1: 软件生成IP数据包帧校验和

  #define CHECKSUM_GEN_IP                 1

  // CHECKSUM_GEN_UDP==1: 软件生成UDOP数据包帧校验和

  #define CHECKSUM_GEN_UDP                1

  //CHECKSUM_GEN_TCP==1: 软件生成TCP数据包帧校验和

  #define CHECKSUM_GEN_TCP                1

  // CHECKSUM_CHECK_IP==1: 软件检查输入的IP数据包帧校验和

  #define CHECKSUM_CHECK_IP               1

  // CHECKSUM_CHECK_UDP==1: 软件检查输入的UDP数据包帧校验和

  #define CHECKSUM_CHECK_UDP              1

  //CHECKSUM_CHECK_TCP==1: 软件检查输入的TCP数据包帧校验和

  #define CHECKSUM_CHECK_TCP              1

#endif



/*

   ----------------------------------------------

   ---------- SequentialAPI选项----------

   ----------------------------------------------

*/


//LWIP_NETCONN==1:使能NETCON函数(要求使用api_lib.c)

#define LWIP_NETCONN                    0


/*

   ------------------------------------

   ---------- Socket API选项----------

   ------------------------------------

*/

//LWIP_SOCKET==1:使能Socket API(要求使用sockets.c)

#define LWIP_SOCKET                     0


#define LWIP_COMPAT_MUTEX               1


#define LWIP_SO_RCVTIMEO                1 //通过定义LWIP_SO_RCVTIMEO使能netconn结构体中recv_timeout,使用recv_timeout可以避免阻塞线程



/*

   ----------------------------------------

   ---------- Lwip调试选项----------

   ----------------------------------------

*/

//#define LWIP_DEBUG                     1 //开启DEBUG选项


#define ICMP_DEBUG                      LWIP_DBG_OFF //开启/关闭ICMPdebug


#endif /* __LWIPOPTS_H__ */

关键字:STM32F407  lwip  速度测试 引用地址:STM32F407 lwip速度测试

上一篇:STM32内存地址说明
下一篇:stm32读取DS2411

推荐阅读最新更新时间:2024-11-08 10:28

STM32F407 串口接收中断的使用
1 首先,在HAL_UART_MspInit函数当中初始化串口的外设时钟,串口接收中断使能配置,串口IO配置。该函数会由HAL库自行调用。 2 然后,写一个中断入口函数,该函数需要调用HAL库当中的HAL_UART_IRQHandler接口,HAL_UART_IRQHandler中会对中断的标志位进行处理,然后会调用中断回调函数HAL_UART_RxCpltCallback。 3 重写中断回调函数,在该函数当中处理串口缓冲区当中的内容。 4 HAL库的中断使用顺序都大致类似,其它类型的中断处理对坐入号替换就好。
[单片机]
<font color='red'>STM32F407</font> 串口接收中断的使用
STM32F407学习笔记——GPIO_按键控制LED亮灭
#include stm32f4xx.h #include stm32f4xx_conf.h #include delay.h GPIO_TypeDef* io_led=GPIOC;//定义一个指向结构体GPIO_TypeDef的io_led const u16 pin_led=GPIO_Pin_1;//引脚 GPIO_TypeDef* io_key=GPIOC; const u16 pin_key=GPIO_Pin_0; void Led_Init() { GPIO_InitTypeDef GPIO_init_l;//用于初始化的结构体 RCC_AHB1PeriphClockCmd(RCC_AHB1Per
[单片机]
2. Stm32f407 led闪烁示例
硬件平台: stm32f407ve 软件平台: win10 (OS Name: Microsoft Windows 10 Enterprise OS Version: 10.0.18363 N/A Build 18363) Keil5 5.26.2 HAL库版本: 2.14.0(目前下载的最新的) 实验介绍: 本次是使用hal库进行led闪烁实验。(根据之前建立的模板操作,这里不再建立工程模板) Led闪烁的原理,就是循环的亮和灭,工程模板已经是点亮了led,这个时候,我需要做的就是在循环中不断的点亮和熄灭,而且点亮和熄灭要注意一定的时间间隔,也就
[单片机]
2. <font color='red'>Stm32f407</font> led闪烁示例
基于STM32F407的永磁同步电机伺服控制器设计
自20世纪90年代以来,随着现代电机技术、现代电力电子技术、微电子技术、控制理论及计算机技术等支撑技术的快速发展,交流伺服控制技术得到极大的发展,使得先前困扰着交流伺服系统的电机控制复杂、调速性能差等问题取得了突破性的进展。交流伺服系统的性能日渐提高,价格趋于合理,使得交流伺服系统取代直流伺服系统,尤其是在高精度、高性能、智能化、模块化和网络化要求的伺服控制领域成了一个发展趋势。 在伺服控制器中,为了保证伺服控制良好的实时性、准确性及灵活性,常采用专用于电机控制的DSP(DSC)或FPGA作为控制核心,这些芯片都针对电机控制做了大量的优化,如:带死区的互补型PWM,多种触发、同步方式的快速ADC,高可靠性和抗干扰性。但它们都不约
[单片机]
基于<font color='red'>STM32F407</font>的永磁同步电机伺服控制器设计
STM32F407系统时钟解析
STM32F4时钟系统初始化是在system_stm32f4xx.c中的SystemInit()函数中完成的。对于系统时钟关键寄存器设置主要是在SystemInit函数中调用SetSysClock()函数来设置的。我们可以先看看SystemInit()函数体: //@brief Setup the microcontroller system // Initialize the Embedded Flash Interface, the PLL and update the // SystemFrequency variable. //@param None //@retval None void System
[单片机]
<font color='red'>STM32F407</font>系统时钟解析
【STM32】STM32F407 + DHT11
一、DHT11简介 DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃。 ——来自百度百科 测量范围:湿度 5~95%RH, 温度 -20~+60℃ 测量精度:湿度 ±5%RH, 温度 ±2℃ 供电电压:3.3~5.5V DC 输 出:单总线数字信号 分辨率:湿度1%RH, 温度0.1℃ 关于单总线协议可以查看这篇文章:【STM32】stm32f407 + DS18B20 碰出不一样的火花 二、编程思路 温湿度传感器 DHT11 和 温度传感器 DS18B20 均采用 单总线协议,因此两者的编程思路很相似,不过 DHT11 增加了湿度
[单片机]
STM32F407学习笔记二(GPIO)
从上文可以看到,在系统启动过程中会对系统时钟进行一次配置,有了时钟源以后,我们来看简单的GPIO配置:对于GPIO,使用寄存器进行配置时:我们先来看一个例子: #include stm32f4xx.h uint32_t Gb_TimingDelay; void Delay(uint32_t nTime); void main() { SysTick_Config(SystemCoreClock/1000);//1ms based time RCC- AHB1ENR |= RCC_AHB1ENR_GPIODEN; //ENABLE GPIOD RCC- APB2ENR |= RCC_APB2ENR_SYSCFGEN
[单片机]
<font color='red'>STM32F407</font>学习笔记二(GPIO)
基于STM32F407单片机开发了一种定心支片顺性测量系统
摘要: 针对传统的扬声器定心支片顺性测量仪线性范围判断不准确以及无法进行动态测量的问题,设计了一种定心支片顺性测量系统。该系统以STM32F407单片机为核心,硬件部分通过运动控制电路和数据采集电路实现了自动测量的功能,并使用低电压纹波的线性直流稳压电源使得采样结果更加准确。软件部分通过滑动均值滤波算法来减小输出误差,并采用了最小二乘法来提高拟合优度,最后通过线性逼近法来获得定心支片的线性范围。实验结果表明,该系统具有较高的分辨率,能准确获得定心支片的顺性曲线和线性范围。 0 引言 定心支片是扬声器的核心部件之一,它用于保证扬声器工作时,音圈在磁隙中处于正确的位置,并且保证音圈在振动过程中仅沿轴向作往复运动 。受到制作材料和设
[单片机]
基于<font color='red'>STM32F407</font>单片机开发了一种定心支片顺性测量系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved