STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率

测试时使用的程序:Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)(F1程序/HAL库版本SDIO接口)

一、修改前的速度:

TCP:

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第1张图片

很慢很慢,才7KB/s。。。

收到747520字节,用时100.64秒,速率7.25KB/s
收到747520字节,用时100.84秒,速率7.24KB/s
收到747520字节,用时102.21秒,速率7.14KB/s
收到747520字节,用时101.12秒,速率7.22KB/s
收到747520字节,用时101.39秒,速率7.20KB/s
收到747520字节,用时101.14秒,速率7.22KB/s
收到747520字节,用时101.88秒,速率7.17KB/s
收到747520字节,用时102.31秒,速率7.14KB/s
收到747520字节,用时102.77秒,速率7.10KB/s
收到747520字节,用时102.62秒,速率7.11KB/s

UDP:

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第2张图片

收到1024个数据包,用时10.83秒,速率120.08KB/s
收到1024个数据包,用时7.29秒,速率178.45KB/s
收到1024个数据包,用时7.29秒,速率178.45KB/s
收到1024个数据包,用时7.32秒,速率177.67KB/s
收到1024个数据包,用时7.41秒,速率175.44KB/s
收到1024个数据包,用时7.29秒,速率178.45KB/s
收到1024个数据包,用时7.30秒,速率178.06KB/s
收到1024个数据包,用时7.33秒,速率177.30KB/s
收到1024个数据包,用时7.29秒,速率178.42KB/s
收到1024个数据包,用时7.79秒,速率166.99KB/s

从串口打印中可以看出,每个数据包的时间间隔都是75ms:

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第3张图片

二、提高UDP的传输速率

打开common.c,注释掉usart_send函数里面的内容,关闭串口打印输出。

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第4张图片

修改后测速结果:

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第5张图片

收到1024个数据包,用时0.86秒,速率1515.15KB/s
收到1024个数据包,用时1.45秒,速率895.93KB/s
收到1017个数据包,用时5.16秒,速率250.02KB/s
收到1024个数据包,用时1.08秒,速率1208.18KB/s
收到1024个数据包,用时7.78秒,速率167.01KB/s
收到1023个数据包,用时1.01秒,速率1280.80KB/s
收到1024个数据包,用时6.40秒,速率203.25KB/s
收到1024个数据包,用时2.78秒,速率468.13KB/s
收到1024个数据包,用时1.37秒,速率947.52KB/s
收到1024个数据包,用时1.20秒,速率1082.43KB/s

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第6张图片

收到1024个数据包,用时1.28秒,速率1016.42KB/s
收到1024个数据包,用时1.06秒,速率1225.26KB/s
收到1024个数据包,用时2.11秒,速率617.28KB/s
收到1024个数据包,用时1.19秒,速率1096.12KB/s
收到1024个数据包,用时1.26秒,速率1029.30KB/s
收到1024个数据包,用时1.08秒,速率1208.18KB/s
收到1024个数据包,用时1.20秒,速率1082.43KB/s
收到1024个数据包,用时12.14秒,速率107.11KB/s
收到1024个数据包,用时1.26秒,速率1028.48KB/s
收到1024个数据包,用时10.17秒,速率127.81KB/s

三、提高TCP的传输速率

打开lwipopts.h,添加三行代码:

#define TCP_WND (10 * TCP_MSS)
#define TCP_SND_BUF (10 * TCP_MSS)
#define MEMP_NUM_TCP_SEG 50

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第7张图片

打开wifi_test.c,将tcp_tester_buffer数组的长度改大,越大越好,把整个单片机的SRAM全部占满!

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第8张图片

修改后的测速结果:

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第9张图片

收到748400字节,用时0.56秒,速率1302.78KB/s
收到760196字节,用时0.53秒,速率1398.08KB/s
收到760480字节,用时0.47秒,速率1586.87KB/s
收到755228字节,用时0.42秒,速率1751.85KB/s
收到764388字节,用时0.45秒,速率1651.49KB/s
收到749860字节,用时0.44秒,速率1675.71KB/s
收到760480字节,用时0.48秒,速率1537.59KB/s
收到755228字节,用时0.47秒,速率1575.91KB/s
收到753768字节,用时0.50秒,速率1475.15KB/s
收到747528字节,用时0.42秒,速率1729.88KB/s

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第10张图片

收到754640字节,用时1.08秒,速率684.90KB/s
收到752780字节,用时0.83秒,速率888.92KB/s
收到754240字节,用时1.29秒,速率568.77KB/s
收到751320字节,用时0.89秒,速率825.32KB/s
收到751320字节,用时1.31秒,速率559.66KB/s
收到753368字节,用时1.33秒,速率554.83KB/s
收到748988字节,用时1.00秒,速率732.90KB/s
收到751908字节,用时0.76秒,速率961.11KB/s
收到759208字节,用时1.25秒,速率594.08KB/s
收到751908字节,用时1.14秒,速率645.24KB/s

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第11张图片

收到751320字节,用时0.83秒,速率887.20KB/s
收到763000字节,用时1.14秒,速率654.19KB/s
收到752780字节,用时1.37秒,速率535.81KB/s
收到749860字节,用时0.48秒,速率1516.12KB/s
收到757748字节,用时0.45秒,速率1633.53KB/s
收到752780字节,用时0.64秒,速率1150.45KB/s
收到751908字节,用时1.14秒,速率644.68KB/s
收到753368字节,用时0.97秒,速率760.82KB/s
收到746940字节,用时1.04秒,速率698.02KB/s
收到739828字节,用时0.80秒,速率908.79KB/s

四、测速环境

WiFi模块和无线路由器的距离为1米左右。

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第12张图片wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

用的无线路由器是装宽带的时候送的。电脑和路由器之间是有线连接(黄色网线)。

STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_第13张图片wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

你可能感兴趣的:(STM32,88W8801,WiFi,STM32,LwIP,TCP)