【RT-Thread应用笔记】英飞凌PSoC 62 + CYW43012 WiFi延迟和带宽测试

文章目录

    • 一、安装SDK
    • 二、创建项目
    • 三、编译下载
      • 3.1 编译代码
      • 3.2 下载程序
    • 四、WiFi测试
      • 4.1 扫描测试
      • 4.2 连接测试
    • 五、延迟测试
      • 5.1 ping百度
      • 5.2 ping路由器
    • 六、带宽测试
      • 6.1 添加netutils软件包
      • 6.2 iperf命令参数
      • 6.3 PC端的iperf
      • 6.4 iperf测试准备工作
      • 6.5 进行iperf带宽测试
      • 6.6 iperf测试小结

本文主要介绍如何在PSoC62 Evaluation kit开发板上运行RT-Thread,如何连接CYW43012 WiFi蓝牙模组,以及如何进行WiFi联网、网络延迟、网络带宽测试。本文主要在RT-Thread Studio环境下进行,只需要进行一些配置即可完成全部操作,整个操作过程不需要写代码,非常简单。

一、安装SDK

RT-Thread Studio可以在RT-Thread官网下载,安装没啥难度,这里不再介绍了。

打开RT-Thread Studio后,首先打开SDK Manager,

Untitled

在RT-Thread SDK管理器界面,找到PSOC62-IFX-EVAL-KIT支持包,选中并安装:

Untitled

以及调试器支持包:

Untitled

二、创建项目

接着,通过RT-Thread Studio菜单栏,”文件”→“新建” → “RT-Thread项目”打开新建项目界面。

新建项目界面,按照如下步骤操作:

  1. 选中“基于开发板”;
  2. 开发板下拉菜单选择“PSOC62-IFX-EVAL-KIT”;
  3. 类型选择“示例工程”;
  4. 示例选择“cyw43012_wifi_demo”;
  5. 按照前面几步后,Project name已经自动填充了,可以修改,也可以不改;

如下图所示:

Untitled

此时,点“完成”,就会创建项目目录了:

Untitled

三、编译下载

3.1 编译代码

点击工具栏的锤子图标,编译项目:

Untitled

或者使用快捷键Ctrl+B也可以。

3.2 下载程序

编译完成后,可以看到控制台输出了RAM和Flash占用:

Untitled

接下来将CYW43012模组插到板子上:

psoc6_board_module.jpg

psoc6_board_connected.jpg

然后,再通过USB线,将开发板连接到PC,注意连接到板子的DAP口。

再到RT-Thread Studio中,使用“下载”按钮,开始烧录:

Untitled

或Ctrl+Alt+D即可进行烧录。

下载过程中,控制台窗口可以看到进度:

Untitled

下载完成:

Untitled

四、WiFi测试

接下来连接串口终端,我用的是MobaXterm,参数配置如下:

Untitled

连接串口后,按下板子上的复位键,可以看到:

Untitled

有RT-Thread系统启动日志,以及模组的固件信息。

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

在RT-Thread的msh交互环境中,使用help查看当前已有哪些命令:

Untitled

可以看到有一个wifi命令。

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

Untitled

4.1 扫描测试

尝试扫描周围的WiFi热点:

Untitled

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

4.2 连接测试

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

Untitled

可以看到,成功连接上了WiFi热点。

五、延迟测试

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

5.1 ping百度

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

Untitled

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

5.2 ping路由器

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

Untitled

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

Untitled

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

模组比笔记本的WiFi延迟高一些,不过还好,还算可以接受。

六、带宽测试

6.1 添加netutils软件包

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

RT-Thread Studio中,双击“RT-Thread Settings”:

Untitled

点击“添加软件包”,在弹出的搜索框中输入netutils,回车搜索:

Untitled

点击“添加”,关闭搜索界面,回到RT-Thread Settings界面:

Untitled

鼠标放到netutils组件上,点击悬浮菜单的“配置项”,netutils配置项下方的Version下拉菜单选择v1.3.3,打开“使能类似iperf的网络性能工具”,如下图:

Untitled

此时,Ctrl+S保存配置,此时将会下载netutils软件包源码到本地,控制台可以看到下载进度:

Untitled

重新,编译、烧录、运行,msh中就有iperf命令了:

Untitled

6.2 iperf命令参数

在RT-Thread的msh中运行iperf,默认输出帮助信息:

Untitled

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

注意:

  1. RT-Thread的iperf命令实现中,对参数的顺序由要求,如果使用过程中发现参数报错,需要查看源码定位原因;
  2. RT-Thread的iperf不支持持续时间选项,一般是先启动,后通过stop选项停止的方式控制测试时长;

6.3 PC端的iperf

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

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

moba_iperf_help.png

6.4 iperf测试准备工作

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

  1. 最好用PC创建热点,用无线路由器也行,但是需要确保信号强度足够;
  2. 确保开发板和PC直接的距离不要太远,否则WiFi信号较弱,测试的结果可能会偏小;
  3. 最好在WiFi热点较少的环境下进行测试,否则测出的结果数据也会偏小;

6.5 进行iperf带宽测试

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

  1. 在PC上,启动iperf服务端:iperf -s -p
  2. 在开发板上,通过ping命令测试开发板和PC直接IP是否可达
  3. 在开发板上,启动iperf客户端:iperf -c 192.168.3.6 -p 5678 (其中192.168.3.6是PC的IP地址)
    • 启动后,可以通过ps命令查看正在运行的线程
  4. 一段时间后,在开发板上,停止iperf客户端:iperf --stop
  5. 开发板上iperf停止后,PC端应该可以看到iperf的输出;

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

Untitled

PC端输出:

Untitled

可以看到带宽为8.61Mbps(8.47是上一次测出来的值)。

6.6 iperf测试小结

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

  1. 模组本身支持的最高WiFi传输速率;
  2. 模组接口支持的最高工作频率;
  3. 主控芯片接口最高支持的工作频率;
  4. 热点的WiFi最高传输速率;
  5. 各种环境因素,例如开发板和PC直接的距离、环境是否有其他热点干扰等等;

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

psoc62_and_ap.jpg

好了,本篇内容就到这里,感谢阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/426053.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ESP32 IDF】key按键与EXTI中断

文章目录 前言一、按键的使用1.1 按键的简介1.2 读取按键的高低电平1.3 读取按键具体代码 二、中断二、EXIT外部中断2.1 EXIT外部中断简介2.2 外部中断基础知识2.3 设置外部中断注册外部中断服务函数设置触发方式添加中断函数 2.4 示例代码 总结 前言 在嵌入式系统开发中&…

OJ:用栈实现队列

232. 用栈实现队列 - 力扣(LeetCode) 总体思路 思路:由于C语言阶段没有相对应的栈库,所以我们需要手搓一个栈,再在此基础上来实现这道题,题目所由多个接口函数所构成 ,在开始写代码前&#xf…

YOLOv9独家原创改进|使用DySample超级轻量的动态上采样算子

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、DySample论文摘要 尽管最近的基于内核的动态上采样器如CARAFE、FADE和SAPA取得了令人印象深刻的性能提升,但它们引入了大量的工作量&…

实时抓取SKU商品属性详细信息API数据接口(淘宝,某音)

item_sku-获取sku详细信息 taobao.item_sku详细信息 API公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_sku 名称类型必须描述keyString是调用key(演示示例)secretString是调用密钥api_nameString是API接口名称(包括在请求地…

芯来科技发布最新NI系列内核,NI900矢量宽度可达512/1024位

参考:芯来科技发布最新NI系列内核,NI900矢量宽度可达512/1024位 (qq.com) 本土RISC-V CPU IP领军企业——芯来科技正式发布首款针对人工智能应用的专用处理器产品线Nuclei Intelligence(NI)系列,以及NI系列的第一款AI专用RISC-V处理器CPU IP…

机器人 标准DH与改进DH

文章目录 1 建立机器人坐标系1.1 连杆编号1.2 关节编号1.3 坐标系方向2 标准DH(STD)2.1 确定X轴方向2.2 建模步骤2.3 变换顺序2.4 变换矩阵3 改进DH(MDH)3.1 确定X轴方向3.2 建模步骤3.3 变换顺序3.4 变换矩阵4 标准DH与改进DH区别5 Matlab示例参考链接1 建立机器人坐标系 1.1…

现代化数据架构升级:毫末智行自动驾驶如何应对年增20PB的数据规模挑战?-OceanBase案例

毫末智行是一家致力于自动驾驶的人工智能技术公司,其前身是长城汽车智能驾驶前瞻分部,以零事故、零拥堵、自由出行和高效物流为目标,助力合作伙伴重塑和全面升级整个社会的出行及物流方式。 在自动驾驶领域中,是什么原因让毫末智行…

边缘智能网关:让环境监测更智能

在环境监测领域,边缘智能网关可用于区域环境的实时监测、分析和预警,例如河湖水位监测、雨雪监测、风沙/风速监测,通过实时采集并分析环境变化数据,能够有助于对于突发、急发的各种自然灾害进行快速预警和应对。 一、边缘智能网关…

Docker 创建容器并指定时区

目录 1. 通过环境变量设置时区(推荐)2. 挂载宿主机的时区文件到容器中3. 总结 要在 Docker 容器中指定时区,可以通过两种方式来实现: 1. 通过环境变量设置时区(推荐) 在 Docker 运行时,可以通…

Unity UI实现表格渲染

前言 最近有在用Unity做前端UI, 用到了实现表格数据渲染,也就是后台给的list渲染到表格中,查看了许多资料发现比较少,因此在这里记录一下吧,希望可以帮助到大家哦。 也是第一次使用Unity,先简单介绍一下&…

类构造完成,Bean注入之后执行方法

PostConstruct 容器执行之后执行 PreDestory 在容器销毁之前执行

redis进阶(一)

文章目录 前言一、Redis中的对象的结构体如下:二、压缩链表三、跳跃表 前言 Redis是一种key/value型数据库,其中,每个key和value都是使用对象表示的。 一、Redis中的对象的结构体如下: /** Redis 对象*/ typedef struct redisO…

今日arXiv最热大模型论文:谷歌最新研究,将LLM用于回归分析任务,显著超越传统模型

回归分析是一个强大的工具,能够准确预测系统或模型的结果指标,给定一组参数。然而,传统上这些方法仅适用于特定任务。本文研究者提出了OMNIPRED框架,这是一个训练语言模型作为通用端到端回归器的框架,它可以处理来自多…

SNAP:如何批量预处理Sentinel2 L2A数据集并输出为TIFF文件?

我的需求 我目前就是希望下载哨兵2号数据,然后在SNAP中进行批量提取真彩色波段并输出为TIFF文件。 数据集下载说明 目前哨兵网站似乎进行了一大波更新,连网站都换了,网址如下: https://dataspace.copernicus.eu/ 打开后界面如…

五千字 DDL、DML、DQL、DCL 超详解

SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。 DDL (Data Definition Language) 数据定义语言,用来定义数据库对象(数据库,表, 字段) DML (Data Manipulation Languag) 数据操作语言,…

想从事数据方向职场小白看过来, 数据方面的一些英文解释

想从事数据方向职场小白看过来,一些英文名词解释 文章目录 想从事数据方向职场小白看过来,一些英文名词解释 英文类解释NoSQL:ESB:ACID :Data Vault:MDM:OLAP:SCD:SBA:MP…

从嵌入式Linux到嵌入式Android

最近开始投入Android的怀抱。说来惭愧,08年就听说这东西,当时也有同事投入去看,因为恶心Java,始终对这玩意无感,没想到现在不会这个嵌入式都快要没法搞了。为了不中年失业,所以只能回过头又来学。 首先还是…

Python算法100例-2.11 换分币

完整源代码项目地址,关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.运行结果 1.问题描述 将5元的人民币兑换成1元、5角和1角的硬币,共有多少种不同的兑换方法。 2.问题分析 根据该…

【框架】Spring 框架重点解析

Spring 框架重点解析 1. Spring 框架中的单例 bean 是线程安全的吗? 不是线程安全的 Spring 框架中有一个 Scope 注解,默认的值是 singleton,即单例的;因为一般在 Spring 的 bean 对象都是无状态的(在生命周期中不被…

嵌入式Qt 对话框及其类型 QDialog

一.对话框的概念 对话框是与用户进行简短交互的顶层窗口。 QDialog是Qt中所有对话框窗口的基类。 QDialog继承与QWidfet是一种容器类型的组件。 QDialog的意义: QDialog作为一种专业的交互窗口而存在。 QDialog不能作为子部部件嵌入其他容器中。 QDialog是定制…