打印
[STM32F7]

STM32F7使用5GHz高速WIFI网卡

[复制链接]
11114|54
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 lin704932121 于 2018-3-23 22:29 编辑

  我之前写了篇帖子,介绍了如何在STM32f4平台下使用联发科的USB无线网卡,当时使用的是全速USB接口,通信速率并不高。后来一直有个想法,是否可以借助高速WIFI网卡的5GHz频段以及STM32的高速USB接口来进一步提高无线通信速率呢?最近总算抽出了点时间,接着来捣鼓这个WIFI网卡。我优化了底层的USB核心驱动,并对联发科的无线网卡驱动进行了部分修改,使它支持2.4GHz和5GHz的工作模式。我选择STM32F746G-Discovery开发板做为硬件平台,采用uCOS-III操作系统,并通过iperf软件来评估高速WIFI网卡在5GHz频段下的通信速率。

一、硬件连接


上图是STM32F746G-Discovery硬件连接示意图,需要连接好以下几个接口。
ST-LINK接口:ST-LINK接口连接到外部PC机,用于烧录程序。
USB FS接口:USB全速接口连接到外部USB键盘,用于输入iperf命令。
USB HS接口:USB高速接口连接到外部RT5572 WIFI网卡。
Ext 5V接口:由于整个硬件消耗电流较大,供电方式请选择外部5V供电,并能提供1A以上的峰值电流。

二、接入5GHz AP网络
开发板上电后,处于WIFI智能连接监听模式,等待其它设备提供5GHz AP的SSID和密码信息。这里通过手机来发送5GHz AP的SSID和密码信息。
1、手机安装智能连接程序。
2、确保手机打开了WIFI功能,并接入AP网络。
3、在智能连接程序中输入5GHz AP的SSID和密码信息。

4、如下图,开发板以智能连接监听的方式获取到手机发送的SSID和密码信息后,会主动接入5GHz AP网络,并通过DHCP协议来获取自身的IP地址。

三、使用iperf测试5GHz频段的通信速率
在无障碍物遮挡的环境下,使用iperf分别对WIFI网卡的上行和下行通信速率进行测试。现假设PC机获取到的ip地址为192.168.1.100,开发板获取到的ip地址为192.168.1.104。
1、上行通信速率测试(开发板->PC机)
  PC机上输入命令行
iperf -s -u -i 2 -p 5002
其中-s表示PC机处于服务器模式,-u表示UDP测试,-i 2表示每两秒报告一次结果,-p 5002表示UDP 5002端口。
  开发板上通过外部USB键盘输入命令行
iperf -c 192.168.1.100 -u -b 20Mbits -i 2 -p 5002
其中-c 192.168.1.100表示PC机的ip地址,-u表示UDP测试,-b 20Mbits表示测试带宽20Mbits,-i 2表示每两秒报告一次结果,-p 5002表示UDP 5002端口。

从上图可以看到,在20Mbits的测试带宽下,上行通信的丢包率在0.099%左右。
2、下行通信速率测试(PC机->开发板)
开发板上输入命令行
iperf -s -u -i 2 -p 5002
PC机上输入命令行
iperf -c 192.168.1.104 -u -b 20Mbits -i 2 -p 5002

从上图可以看到,在20Mbits的测试带宽下,下行通信的丢包率在30%左右。
四、总结
  借助于5GHz频段的高速WIFI网卡以及STM32f7的高速USB接口,可以将WIFI网卡的通信速率提升至上行20Mbits每秒和下行14Mbits每秒。测试过程还发现,通信速率的瓶颈并不在于WIFI网卡本身,而是WIFI驱动消耗了大量的CPU时间。若能把WIFI驱动优化得更好一些,通信速率应该还会有更大地提升。

USB_Wireless_LAN_STA_Driver_for_STM32F7xx.part03.rar

3.14 MB

USB_Wireless_LAN_STA_Driver_for_STM32F7xx.part02.rar

4 MB

USB_Wireless_LAN_STA_Driver_for_STM32F7xx.part01.rar

4 MB

评论
linuxubuntu 2022-4-10 21:34 回复TA
楼主USB网卡跑的RNIDS协议吗 
沙发
lin704932121|  楼主 | 2018-3-20 16:46 | 只看该作者
本帖最后由 lin704932121 于 2018-3-20 16:48 编辑

待补充

使用特权

评论回复
板凳
lin704932121|  楼主 | 2018-3-20 16:46 | 只看该作者
本帖最后由 lin704932121 于 2018-3-20 16:48 编辑

待补充

使用特权

评论回复
地板
zhousun| | 2018-3-20 19:14 | 只看该作者
请问usb网卡和F7之间USB上层协议是什么呢?如何通信?

使用特权

评论回复
5
dirtwillfly| | 2018-3-20 19:57 | 只看该作者
感谢分享

使用特权

评论回复
6
gyh974| | 2018-3-20 20:43 | 只看该作者
是否意味着这就是一个路由器?

使用特权

评论回复
7
lin704932121|  楼主 | 2018-3-20 21:38 | 只看该作者
zhousun 发表于 2018-3-20 19:14
请问usb网卡和F7之间USB上层协议是什么呢?如何通信?

上层协议是联发科的USB无线网卡驱动DPO_RT5572_LinuxSTA_2.6.1.3_20121022,我将它移植到了uCOS-III上,同时对驱动的内存进行了优化。

使用特权

评论回复
8
lin704932121|  楼主 | 2018-3-20 21:43 | 只看该作者
gyh974 发表于 2018-3-20 20:43
是否意味着这就是一个路由器?

这个驱动只支持STA、ADHOC模式,不支持AP模式的。

使用特权

评论回复
9
zhuomuniao110| | 2018-3-21 11:37 | 只看该作者
用的什么系统

使用特权

评论回复
10
lin704932121|  楼主 | 2018-3-21 14:51 | 只看该作者
本帖最后由 lin704932121 于 2018-3-22 12:41 编辑


uCOS-III操作系统

使用特权

评论回复
11
heisexingqisi| | 2018-3-21 18:18 | 只看该作者
ucOS不错,不知道在freeRTOS上容易移植不。

使用特权

评论回复
12
lin704932121|  楼主 | 2018-3-22 10:11 | 只看该作者
heisexingqisi 发表于 2018-3-21 18:18
ucOS不错,不知道在freeRTOS上容易移植不。

移植到其它RTOS应该不难,修改几个信号量、互斥锁和线程函数就可以了。

使用特权

评论回复
13
jjlink| | 2018-3-22 14:05 | 只看该作者
这技术,从底层到应用,从ucosIII到linux ,到安卓。。
有生之年,不知道我什么时候能做到。。。

使用特权

评论回复
14
lin704932121|  楼主 | 2018-3-22 17:49 | 只看该作者
jjlink 发表于 2018-3-22 14:05
这技术,从底层到应用,从ucosIII到linux ,到安卓。。
有生之年,不知道我什么时候能做到。。。
...

只要对技术有热情,什么都做得到,我也是出于兴趣才做的

使用特权

评论回复
15
sblpp| | 2018-3-23 09:26 | 只看该作者
谢谢楼主分享。
F7的高速usb也需要接usb phy吧?

使用特权

评论回复
16
lin704932121|  楼主 | 2018-3-23 10:19 | 只看该作者
sblpp 发表于 2018-3-23 09:26
谢谢楼主分享。
F7的高速usb也需要接usb phy吧?

只有STM32F723xx和STM32F733xx是片内高速PHY,其它F7系列都是片外高速PHY。

使用特权

评论回复
17
Rospiers| | 2018-3-23 17:57 | 只看该作者
WIFI网卡是USB的?

使用特权

评论回复
18
song19881218| | 2018-3-23 21:42 | 只看该作者
大神啥时候弄个usb的4g模块

使用特权

评论回复
19
lin704932121|  楼主 | 2018-3-24 12:58 | 只看该作者
song19881218 发表于 2018-3-23 21:42
大神啥时候弄个usb的4g模块

3g和4g的驱动是一样的

使用特权

评论回复
20
chfj3974| | 2018-3-28 08:22 | 只看该作者
膜拜

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

82

帖子

18

粉丝