0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RW007 Wi-Fi 实战分享

RT-Thread官方账号 2024-08-10 08:35 次阅读

1.开发环境

本文将会介绍如何使用RT-Thread env 工具创建一个基于RT-Thread RTOS的软件项目;如何使用RT-Thread env 工具对项目进行配置,实现FRDM-MCXN947开发板通过RW007模组进行WiFi联网;以及如何使用RT-Thread env 工具对项目进行配置,实现WiFi网络延迟和带宽测试。

ENV环境

2.步骤说明

2.1 RW007模组介绍

RW007模组是由上海睿赛德电子科技有限公司开发的一款支持WiFi和蓝牙功能的无线通信模块,它提供了基于SPI和UART 两种接口通信方式。

SPI接口相对于UART接口,具有更高的通信速率,因此本文采用SPI接口进行实验。

RW007模组工作在SPI模式下时,主控芯片为模组需要提供1组SPI信号,一个中断输入,一个IO输出,包含电源和地总,一共8个引脚。

RT-Thread官方也提供了RW007模组的Arduino评估板(以下简称RW007评估板),如下图所示:

7cfa1b0c-56b0-11ef-817b-92fbcf53809c.jpg

图片中间部分为RW007模组。

查阅RW007评估版原理图,可以看到SPI和UART接口部分,如下图所示:

7cfe503c-56b0-11ef-817b-92fbcf53809c.png

可以看到,Arduino接口与RW007模组引脚的连接关系,如下表所示:

7d0241e2-56b0-11ef-817b-92fbcf53809c.png

2.2 Arduino接口简介

本文使用的硬件平台是恩智浦 NXP FRDM-MCXN947, 开发板提供了Arduino接口,如下图蓝色部分:

7d0cf3b2-56b0-11ef-817b-92fbcf53809c.jpg

FRDM-MXCN947开发板 Arduino接口,和RW007评估版通信的引脚如下:

7d114a3e-56b0-11ef-817b-92fbcf53809c.jpg

其中,D10~D13为SPI信号,D9为中断信号(INT),D8为复位控制(RST);

FRDM-MCXN947开发板和RW007评估板连接如下图:

7d1c9d76-56b0-11ef-817b-92fbcf53809c.jpg

2.3 RW007软件包简介

RT-Thread RW007软件包实现了MCU主控端与RW007模组的SPI/UART接口的底层通讯,同时实现了与RT-Thread的WiFi框架、网络协议栈对接。借助此软件包,开发者可以在RT-Thread系统上轻松实现WiFi联网或BLE功能。

软件包源码仓库链接:https://github.com/RT-Thread-packages/rw007

软件包源码仓库链接(国内镜像):https://gitee.com/RT-Thread-Mirror/rw007

2.4 RT-Thread env工具简介

RT-Thread Env 工具 包括配置器和包管理器,用来对内核和组件的功能进行配置,对组件进行自由裁剪,对线上软件包进行管理,使得系统以搭积木的方式进行构建,简单方便。

2.5 新建工程

首先,克隆RT-Thread主线源码到本地(Windows系统使用git-bash):

7d218b56-56b0-11ef-817b-92fbcf53809c.png

接着,跳转到 FRDM-MXCN947 板级支持包(BSP)目录:

7d2a3dc8-56b0-11ef-817b-92fbcf53809c.png

$ cd bsp/nxp/mcx/mcxn/frdm-mcxn947/

最后,使用 scons 命令创建独立的项目目录(可以在env命令行,或者gitb-bash中执行):

7d4e1f22-56b0-11ef-817b-92fbcf53809c.png

其中,target参数用于指定项目模板(可以使用mdk、iar等),project-name参数和project-path参数分别表示项目名称和项目目录,可以根据实际需要修改修改。

注意:git-bash执行scons之前,需要保证已经安装了Python,并且已使用pip install scons安装scons软件包。否则会报 scons 命令找不到。

scons命令执行成功,命令输出,如下图所示:

7d57f236-56b0-11ef-817b-92fbcf53809c.png

scons命令创建的目录,内容如下图所示:

7d6337cc-56b0-11ef-817b-92fbcf53809c.jpg

其中,rtt_n947开头的两个文件,就是scons生成的项目文件。如果不加—project-name参数,则是project开头的两个文件。

2.5.1 添加RW007软件包

在env命令行环境中,跳转到上一小节创建的项目目录 E:\DIY\FRDM-MCXN947\rtt_n947目录,

然后,使用 menuconfig 命令:

7d6dfa18-56b0-11ef-817b-92fbcf53809c.png

2.5.2 打开RW007配置项

类似的,依次选择:

│ -> Hardware Drivers Config

│ -> Board extended module Drivers

如下图所示:

7d758ad0-56b0-11ef-817b-92fbcf53809c.png

空格选中Enable RW007选项。

选中该选项后,将会自动选中RW007软件包,以及片上SPI1配置。

左右移动光标到Save上,回车保存配置。

保存配置之后,.config和rtconfig.h文件将会更新。

保存配置后,就可以退出配置界面了。

2.5.3 启用pin驱动

类似的,依次进入菜单:

→ Hardware Drivers Config → On-chip Peripheral Drivers

如下图所示:

7d79e27e-56b0-11ef-817b-92fbcf53809c.jpg

如图,选中Enable GPIO。

这样,就开启了pin驱动。开启pin驱动的原因是,SPI的CS使用了pin接口进行控制。

左右移动光标到Save上,回车保存配置。

保存配置之后,.config和rtconfig.h文件将会更新。

保存配置后,就可以退出配置界面了。

2.5.4 禁用RW007的STM32驱动

类似的,依次选择:

RT-Thread online packages → IoT - internet of things → Wi-Fi → rw007: SPI WIFI rw007 driver

进入RW007软件包配置界面:

7d7e3f40-56b0-11ef-817b-92fbcf53809c.jpg

上下移动光标到”example driver port (RW007 for stm32)”上,回车,进入这个配置项:

7d82d3ac-56b0-11ef-817b-92fbcf53809c.png

选中,not use example driver porting by myself。

选中之后,自动返回RW007软件包配置页面:

7d86f734-56b0-11ef-817b-92fbcf53809c.jpg

此时,RW007的STM32驱动就被禁用掉了。

左右移动光标到Save上,回车保存配置。

保存配置之后,.config和rtconfig.h文件将会更新。

保存配置后,就可以退出配置界面了。

2.5.5 下载软件包

刚刚我们用menuconfig选中了“RT-Thread online packages”中的RW007软件包,RW007软件包的代码默认不在本地。menuconfig选中并保存配置后,需要运行pkgs —update命令,才能将RW007软件包的代码下载到本地。

执行pkgs —update命令,输出如下图所示:

7d901968-56b0-11ef-817b-92fbcf53809c.png

2.5.6 更新MDK项目文件

使用menuconfig命令修改配置之后(尤其是增加软件包之后),需要更新MDK项目文件,新增的代码才会被编译。

对于scons创建时添加了project-name参数的,更新时也要加project-name参数:

7db40936-56b0-11ef-817b-92fbcf53809c.png

2.6 编译运行

2.6.1 打开MDK项目

鼠标双击打开rtt_n947.uvprojx文件,打开后看到如下图所示:

7dbe87bc-56b0-11ef-817b-92fbcf53809c.png

可以看到,RW007的代码已经在里面了。

2.6.2 编译下载程序

Keil中,按F7编译项目,按F8下载固件。

下载固件之前,需要使用USB Type-C线,将PCUSB口连接到FRDM-MCXN947开发板的MCU-LINK口上。

默认的下载固件设置是正确的,如果不能下载固件很可能是没有安装MCXN947的支持包。

下载固件完成,Keil输出如下

7dc2f8ce-56b0-11ef-817b-92fbcf53809c.png

2.6.3 运行RT-Thread

打开串口终端,配置如下:

7de7fa02-56b0-11ef-817b-92fbcf53809c.jpg

连接串口后,

按下开发板复位键,串口终端可以看到,输出了RW007固件的版本信息

7deead2a-56b0-11ef-817b-92fbcf53809c.png

2.7 WIFI测试

接下来,我们进行一些简单的WiFi测试。

接下来我们查看wifi命令的使用方式:

7df3fbe0-56b0-11ef-817b-92fbcf53809c.png

2.7.1 扫描测试

尝试扫描周围的WiFi热点:

7dff37da-56b0-11ef-817b-92fbcf53809c.png

可以看到,成功扫描到了周围的WiFi热点。

2.7.2 连接测试

尝试连接其中的一个热点(这里连接的是无线路由器):

7e04cbfa-56b0-11ef-817b-92fbcf53809c.png

可以看到,成功连接上了WiFi热点,并且获取到了IP地址。

2.8 延迟测试

ping命令可以输出网络延迟信息,可以作为网络延迟的简单测试工具。

2.8.1 ping百度

接下来,用 ping 命令测试一下,板子能不能ping通baidu.com:

7e09db2c-56b0-11ef-817b-92fbcf53809c.png

可以ping通baidu.com,说明TCP/IP协议基本没有太大问题(域名解析OK,而且可以发送数据到公网主机)。

2.8.2 ping路由器

接下来,ping一下局域网的无线路由器:

7e131b74-56b0-11ef-817b-92fbcf53809c.png

ping局域网的路由器,延迟明显小了很多。

作为对比,可以看一下笔记本ping路由器的延迟:

7e18c9ac-56b0-11ef-817b-92fbcf53809c.png

我的笔记本电脑连接的也是同一个无线路由器。

模组比笔记本的WiFi延迟稍微高一点点,差别不大。

2.9 带宽测试

2.9.1 添加netutils软件包

RT-Thread的netutils组件中提供了iperf命令,可以用于测试网络带宽。

menuconfig界面,依次选择:

7e3e5e4c-56b0-11ef-817b-92fbcf53809c.png

选中netutils软件包,然后回车进入软件包配置页面:

7e456976-56b0-11ef-817b-92fbcf53809c.png

如图,选中Enable iperf-liked network performace tool。

左右移动光标到Save上,回车保存配置。

保存配置之后,.config和rtconfig.h文件将会更新。

保存配置后,就可以退出配置界面了。

执行pkgs —update命令,输出如下图所示:

7e51704a-56b0-11ef-817b-92fbcf53809c.png

更新MDK项目文件:

7e572c56-56b0-11ef-817b-92fbcf53809c.png

重新编译固件,下载固件,复位运行,串口终端就有iperf命令了:

7e5c3926-56b0-11ef-817b-92fbcf53809c.png

2.9.2 iperf命令参数

直接运行iperf,默认输出帮助信息:

7e621440-56b0-11ef-817b-92fbcf53809c.png

可以看到iperf的命令参数使用方法。

注意:

RT-Thread的iperf命令实现中,对参数的顺序由要求,如果使用过程中发现参数报错,需要查看源码定位原因;

RT-Thread的iperf不支持持续时间选项,一般是先启动,后通过stop选项停止的方式控制测试时长;

2.9.3 PC端的iperf

PC端的iperf可以到iperf项目官网下载:https://iperf.fr/iperf-download.php

我使用的mobaxterm,里面自带了iperf命令,所以就不单独下载了:

7e684d56-56b0-11ef-817b-92fbcf53809c.png

2.9.4 iperf测试准备工作

进行iperf测试之前,需要准备:

最好用PC创建热点,用无线路由器也行,但是需要确保信号强度足够;

确保开发板和PC直接的距离不要太远,否则WiFi信号较弱,测试的结果可能会偏小;

最好在WiFi热点较少的环境下进行测试,否则测出的结果数据也会偏小;

2.9.5 进行iperf带宽测试

下面进行测试,测试步骤如下:

在PC上,启动iperf服务端:iperf -s -p 5678

在开发板上,通过ping命令测试开发板和PC直接IP是否可达

在开发板上,启动iperf客户端:iperf -c 192.168.3.6 -p 5678 (其中192.168.3.6是PC的IP地址)

启动后,可以通过ps命令查看正在运行的线程

一段时间后,在开发板上,停止iperf客户端:iperf —stop

开发板上iperf停止后,PC端应该可以看到iperf的输出;

开发板上整个过程的输出如下:

7e6fb67c-56b0-11ef-817b-92fbcf53809c.png

PC端输出:

7e7bf25c-56b0-11ef-817b-92fbcf53809c.png

可以看到带宽为7.02Mbps。

2.9.6 iperf测试小结

实际上,影响WiFi带宽测试结果数据的因素很多。我们这里,其中,起决定性的的主要由以下几个方面:

模组本身支持的最高WiFi传输速率;

模组接口支持的最高工作频率;

主控芯片接口最高支持的工作频率;

热点的WiFi最高传输速率;

各种环境因素,例如开发板和PC直接的距离、环境是否有其他热点干扰等等;

为了测出比较高的数据,我把开发板直接放到路由器天线边上,才测到以上的结果:

7e821df8-56b0-11ef-817b-92fbcf53809c.jpg

2.10 补充说明

如果有时候测试发现栈溢出,则需要修改TCPIP线程栈大小:

7e8c52fa-56b0-11ef-817b-92fbcf53809c.png

将其修改为4096即可。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WIFI
    +关注

    关注

    81

    文章

    5296

    浏览量

    203578
  • 开发板
    +关注

    关注

    25

    文章

    5032

    浏览量

    97375
  • RT-Thread
    +关注

    关注

    31

    文章

    1285

    浏览量

    40088
收藏 人收藏

    评论

    相关推荐

    睿赛德(RT-Thread) RW007 WIFI模块免费试用申请

    RW007是RT-Thread推出的一款高性价比 SPI或SDIO 接口 的Wi-Fi模块,内置RT-Thread,提供基于 802.11 b/g/n 的高速 无线 数据 传输 功能,降低高速
    的头像 发表于 05-25 16:20 3232次阅读

    【Vision Board创客营连载体验】RW007 WIFI模块联网

    : RT-Thread online packages —> 、IoT - internet of things —>、Wi-Fi —>,勾选 rw007: SPI WIFI
    发表于 04-29 21:55

    RT-Thread RW007 SPI WiFi 模块使用

    、安全固件功能。支持快速连接、airkiss 配网支持存储多达 5 条连接信息更多相关信息资料见 RW007 介绍页面:睿赛德科技推出高速Wi-Fi模块RW007:内置RT-Thread物联网操作系统
    发表于 06-11 13:56

    【睿赛德 RW007 WiFi 模块试用连载】RW007 WIFI模块联网与使用(一)

    packages---> 、IoT - internet of things--->、Wi-Fi--->,勾选 rw007: SPI WIFI rw007 driver---> 选项接着进一步
    发表于 06-16 07:06

    【睿赛德 RW007 WiFi 模块试用连载】基于RT-STUDIO配置RW007的过程

    一、工具背景开发板,本次测试用的是原子的探索者407,为什么呢?因为漂亮啊。网络模块,就是本文的核心RW007,蓝色的PCB,跟探索者一起情侣装。二、新建RT-STUDIO工程目前RT-STUDIO
    发表于 07-12 12:57

    【睿赛德 RW007 WiFi 模块试用连载】基于RT-STUDIO配置RW007

    `一、工具背景开发板,本次测试用的是原子的探索者407,为什么呢?因为漂亮啊。网络模块,就是本文的核心RW007,蓝色的PCB,跟探索者一起情侣装。二、新建RT-STUDIO工程目前
    发表于 07-12 12:58

    【睿赛德 RW007 WiFi 模块试用连载】RW007模块调试心路历程

    本篇帖子是我拿到RW007后的试用记录,也算是心路历程了吧,我的试用文章:https://bbs.elecfans.com/jishu_2099349_1_1.html,欢迎各位去逛逛。2021
    发表于 07-12 22:20

    【睿赛德 RW007 WiFi 模块试用连载】STM32F411连接RW007

    ` 本帖最后由 TLLED 于 2021-7-13 09:50 编辑 官网的例程是使用STM32F401 Nucleo-64开发板来驱动RW007,手上有一块STM32F411
    发表于 07-13 00:15

    手把手教你适配RW007 Wi-Fi模块

    RW007是什么?RW007 Wi-Fi模块有何功能?RW007Wi-Fi模块有哪些基本参数呢?
    发表于 02-28 09:33

    请问RW007是否可以作为WIFI主机?

    请问RW007是否可以作为WIFI主机,手机连接RW007的热点。
    发表于 05-27 11:41

    在柿饼派上更新RW007固件与驱动并测试RW007的BLE功能

    1、通过RW007的BLE 功能读取米家蓝牙温湿度计数据  一直在关注 RT-Thread 的柿饼派和 RW007 模块,听说最近新版的 RW007 模块支持 BLE 功能了,于是便向客服咨询在柿饼
    发表于 09-29 14:15

    rw007不确定原因的不定时重启何解

    使用rw007 spi lwip连接,经常性会发生下图这样当发送失败的时候,个人感觉是rw007重启了,导致rtt wlan框架没法自动重连wifi。打印的wifi信息目前是已经把wlan框架的自动
    发表于 02-21 11:17

    配置rw007 SPI WiFi模块的步骤教程

    RW007是RT-Thread推出的一款高性价SPI的Wi-Fi模块,内置RT-Thread,提供基于802.11b/g/n的高速无线数据传输功能,减低高速Wi-Fi模块的应用门槛。
    的头像 发表于 09-14 14:17 6491次阅读
    配置<b class='flag-5'>rw007</b> SPI WiFi模块的步骤教程

    RW007系列综合实战1】STM32+RW007实现BLE透传功能

    本期文章将分为5篇连载,前2篇将围绕模块功能详解展开,其后3篇将为大家讲解基于RW007相关DEMO的实现,文章目录如下:
    发表于 01-25 18:05 2次下载
    【<b class='flag-5'>RW007</b>系列综合<b class='flag-5'>实战</b>1】STM32+<b class='flag-5'>RW007</b>实现BLE透传功能

    基于RT-Thread测试RW007(SPI接口)的无线网络功能

    本文主要基于 PSoC™ 62 with CAPSENSE™ evaluation kit开发板 X RT-Thread,测试RW007(SPI接口)的无线网络功能。
    发表于 08-09 16:23 1666次阅读
    基于RT-Thread测试<b class='flag-5'>RW007</b>(SPI接口)的无线网络功能