本帖最后由 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机上输入命令行 其中-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机->开发板) 开发板上输入命令行 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网卡跑的RNIDS协议吗