一、概述
继上一篇 BLE 模式的鼠标功能实现,我们接下来将会教大家如何基于 QN9080 的 SDK 去实现三模鼠标的最后一个模式 —— 2.4G 模式。本文我们先给大家介绍一下 SDK 中比较重要的测试,这些测试对于之后的数据传输以及数据封包等都有重要的意义。
二、环境搭建
2.1 SDK 下载
本文基于 NXP QN9080 IC,SDK 可在NXP 官网 https://mcuxpresso.nxp.com 下载。
2.2 硬件
本文基于 QN9080 DK 板进行开发,DK 板如图 2.2 所示。
图 2.2
2.3 开发软件
SDK 支持 IAR、Keil、MCUXpreeso IDE 三种开发软件、本文以 IAR 为开发环境作为介绍。
三、工程介绍
在 SDK_2.2.0_QN908XCDK\boards\qn908xcdk\wireless_examples\genfsk\Connectivity_test 目录下的工程是描述 2.4G 的基本功能,我们可参考此工程进行相对应的功能测试,让我们更加熟悉如何利用 SDK 去修改成我们所需要的功能。
本文将教大家如何利用 SDK 进行一些在开发过程中必要的测试。
3.1 SDK 测试界面介绍
在烧录完 SDK 后,会先出现 “NXP” 的字样,并且提示按 “enter” 开始进行测试项的选择。体修改如图 3.1 - 1。
图 3.1 – 1
进入测试项选择后,我们可以看到有两部分组成,一部分是选择参数数据的操作,另一部分是选择你需要测试的具体项目。
参数项我们可以分为:
- Mode: 发送端或者接收端的选择
- Channel: 通信频道的增加以及减少
- Tx Power: 发射功率的增加以及减少
- Payload: 负载数据长度的增加以及减少
具体测试项可以分为:
- Continuous tests
- Packet Error Rate test
- Range test
其中的参数项可以在测试项运行的任意时候进行修改,参数项中的各项参数范围如下:
- Mode: Tx or Rx
- Channel: 0 – 80
- Tx Power: 0 – 20
- Payload: 16 – 63
以上的具体内容可参考图 3.1 – 2。
图 3.1 – 2
3.2 Continutes Test 介绍
3.2.1 数据发送测试
在 continutes Test 中你可以使用 Tx 端发送随机数或者是固定的数据,然后通过 Rx 端接收并且将接收到的数据进行打印。我们可以通过修改 SDK 决定发送随机数据还是固定数据(默认随机数据),修改方式如图 3.2.1 – 1。
图 3.2.1 - 1
发送随机数的具体操作流程是在进入测试界面后将一端设置为 Rx(默认),将另一端设置为 Tx(按 ‘t’)。
Tx 端操作步骤:
- 按 ‘1’ 进入 Continuous Test Menu
- 按 ‘2’ 进入随机数发送模式
Rx 端操作步骤:
- 按 ‘1’ 进入 Continuous Test Menu
- 按 ‘7’ 进入接收模式
如果需要停止均可通过按 ‘space’ 按键进行停止,按 ‘Enter’ 按键继续。Rx 端接收到数据后进行打印,具体结果如图 3.2.1 - 2。
图 3.2.1 – 2
如果将 SDK 修改成固定数据发送后,具体接收结果如图 3.2.1 - 3。
图 3.2.1 – 3
3.2.2 接收信号强度测试
在 Continuous Test 中还有一个比较重要的测试 —— 接收信号强度测试。这个测试可以实时显示接收信号强度值(RSSI),可以通过改变发射功率或者改变发射端与接收端之间的距离去改变接收信号强度值。具体操作如下:
Tx 端操作步骤:
- 按 ‘1’ 进入 Continuous Test Menu
- 按 ‘3’ 进入发送模式
- 按 ‘s’ 减小发射功率,检测 Rx 端 RSSI 值
- 按 ‘a’ 增大发射功率,检测 Rx 端 RSSI 值
- 将 Tx 与 Rx 之间的距离增大,检测Rx 端 RSSI 值
- 将 Tx 与 Rx 之间的距离缩小,检测Rx 端 RSSI 值
Rx 端操作步骤:
- 按 ‘1’ 进入 Continuous Test Menu
- 按 ‘8’ 进入接收模式,观察 RSSI 值的变化
改变发射功率的结果如图 3.2.2 – 1 - 图 3.2.2 – 3。
图 3.2.2 – 1
图 3.2.2 – 2
图 3.2.2 – 3
改变距离的结果图 3.2.2 – 4 - 图 3.2.2 - 6。
图 3.2.2 – 4
图 3.2.2 – 2
由此可得出结论:RSSI 值与发射功率的高低成正比,与两者之间的距离成反比。
3.3 Packet Error Rate test 介绍
Packet Error Rate test 主要是测试误码率,也就是说在传输成功后,接收端接收到的数据是否与发送端发送出来的数据是一致的,如果不一致则显示错误。具体 Tx 端数据处理的方式如如图 3.3 - 1,Rx 的比较方式如图3.3 – 2。通过比较特定数据,如果一致则 Rx 端认为是正确的包,如果对比结果不一致,则认为是误包。
图 3.3 - 1
图 3.3 - 2
具体的测试操作流程如下:
Tx 端操作步骤:
- 按 ‘2’ 进入 PER Rx Test Menu
- 按 ‘0’ - ‘8’ 选择要发送的数据包数量
- 输入一个大于 6 的数作为间隔时间
- 按 ‘Enter’ 开始发送
Rx 端操作步骤:
- 按 ‘2’ 进入 PER Rx Test Menu
- 按 ‘Space’ 开始接收
测试结果如图 3.3 – 3 以及 图 3.3 – 4:
图 3.3 – 3
图 3.3 - 4
图 3.3 - 3 以及 图 3.3 – 4 中的 ① 是在发包期间 RSSI 的平均值,② 是接收正确的包数以及接收到的总包数。
3.4 Range test 介绍
Range Test 主要测试的是实时发送数据的情况,Tx 端发送数据之后,Rx 端接收完之后对接收到的数据进行比较,确认了数据不是误包之后给 Tx 端发送 ACK,Tx 接收到 Rx 回的 ACK 后进行数据比较,如果正确了则发送下一包,如果不正确或者 10ms 内没有收到 Rx 端的 ACK 则重新发送。这种方式也是我们完成 2.4G 模式鼠标的最接近的通信方式。
具体的测试操作流程如下:
Tx 端操作步骤:
- 按 ‘3’ 进入 Range Tx Test Menu
- 按 ‘Space’ 开始发送
Rx 端操作步骤:
- 按 ‘3’ 进入 Range Rx Test Menu
- 按 ‘Space’ 开始接收
Tx 端测试结果如图 3.4.1 – 1,Rx 端测试结果如图 3.4.1 - 2。
图 3.4.1 – 1
图 3.4.1 – 1 中的 ① 是正常接收时 Tx 显示的 RSSI 值,② 是在接收不到 Rx 端 ACK 或者 ACK 出错时显示的丢包情况,③ 是停止发送之后整个发送期间的 RSSI 平均值,④ 是整个发送期间丢包的总包数。
图 3.4.1 - 2
图 3.4.1 – 2 中的 ① 是正常接收时 Rx 显示的 RSSI 值,②是停止发送之后整个发送期间的 RSSI 平均值。
四、总结
经过前面的解析说明,相信大家都能够基于 QN9080 SDK 对 2.4G 模式的一些功能进行测试并且分析测试结果,后面我们将会为大家分析 2.4G 数据包的组成,欢迎大家继续观看。
五、参考资料
[1] Device Class Definition for Human Interface Devices (HID)
评论