FRDM MCXW72 802.15.4 MAC 应用,支持无线 UART
此应用程序演示了如何使用 IEEE 802.15.4 MAC 层进行无线通信。它同时支持 PAN 协调器和终端设备角色,并提供不同的功率模式和接收器配置选项。
特征
- PAN协调器模式:创建和管理802.15.4网络
- 终端设备模式:
- 空闲时开启接收功能(始终监听)
- 空闲时轮询模式下关闭接收功能(无低功耗模式)
- 空闲时关闭接收功能(轮询模式,支持低功耗)
- 频道管理:设置和扫描频道(11-26)
- UART 数据桥接器:通过 UART 以 802.15.4 协议发送/接收数据
- 能量检测扫描:寻找干扰最小的最佳信道。
- 主动扫描:发现可用的协调员
- 关联:设备与协调器的自动关联
- 低功耗支持:为电池供电设备提供可选的低功耗模式
电路板:FRDM-MCXW72
类别:无线连接
外设:UART、802.15.4、GPIO
工具链:VS Code、GCC
目录
1. 软件
2. 硬件
3. 设置
以下步骤用于设置和运行该应用程序。
3.1 步骤 1 - 在 VS Code 中导入项目
将此仓库克隆到您的本地计算机:
git clone https://github.com/nxp-appcodehub/dm-frdmmcxw72-wireless-uart-15-4-mac-app.git
在 VS Code 中,打开 MCUXpresso for VS Code 扩展,然后在“项目”选项卡中Quickstart Panel,点击“项目Import project”。在新打开的窗口中,点击“项目” Folder,导航到克隆的仓库文件夹,然后点击“导入” Open。扩展程序将搜索独立项目,并在窗口上方显示找到的兼容 MCUXpresso CMake 项目armgcc。点击该项目,然后点击“导入”按钮Import导入项目。项目将显示在窗口左下角的“项目”Projects面板中。
3.2 步骤 2 - 编写 NBU
MCX W72无线应用架构需要在电路板上刷入两个二进制文件:主应用固件和NBU(窄带单元)固件。NBU固件负责管理802.15.4无线电操作。
NBU 二进制文件包含在 NXP SDK 中,您可以从MCUXpresso SDK Builder(位于下载的 FRDM MCXW72 zip 压缩包中,路径为 [路径] middlewarewirelessieee-802.15.4binmcxw72)或NXP SDK Github 代码库下载。无需下载 SDK 即可直接获取二进制文件的路径是[路径]。所需的二进制文件名是 [文件名] mcxw72_nbu_ble_15_4_dyn_mac.bin。
此存储库中的应用程序与 SDK 25.12.00 中的二进制文件一起使用。
需要使用安全配置 SDK 工具 (SPSDK)来处理 NBU 更新。该工具可以使用 Python 安装:
pip install spsdk
注意:某些依赖项可能与已安装的 Python 模块发生冲突。但是,blhost 工具仍然已安装并可以使用。
闪烁NBU图像
NBU仅当发布新的 NXP SDK 时才应写入映像。此步骤之前需要安装SPSDK 。
必须使用与NBU您正在使用的应用程序 SDK 版本相匹配的镜像。这意味着,下载 SDK 后,在加载任何无线 SDK 示例之前,NBU请使用 SDK 提供的二进制文件更新您的镜像。对于FRDM用户,请编写以下二进制文件:
middleware/wireless/ieee-802.15.4/bin/mcxw72/mcxw72_nbu_ble_15_4_dyn_mac.bin
- 在写入映像之前,请确保 FRDM-MCXW72 处于
ISP模式,方法是按住SW3按钮(也称为ISP),同时将 MCXW72 板连接到 USB 端口(如果已连接到 USB 端口,请拔下板)。 - 设备连接成功后,您可以通过运行以下命令查找分配的端口:
nxpdevscan
- 清除之前的NBU固件:
blhost -p COM_PORT -- flash-erase-all 2
- 刷新新的NBU二进制文件:
blhost -p COM_PORT write-memory 0x48800000 .mcxw72_nbu_ble_15_4_dyn_mac.bin
- 重置电路板。
3.3 步骤 3 - 在 VS Code 中构建和调试应用程序
要构建应用程序二进制文件,在Projects导入的应用程序armgcc所在的面板中,您需要单击构建操作图标(如下图绿色方框所示)。要进行全新构建,请右键单击项目并按Pristine build。
调试时,将开发板通过 USB 线连接后,点击调试图标(播放按钮),如下图红色方框所示。调试器将启动,应用程序将在开发板上运行。
已知问题
使用 MCUXpresso 扩展在 VS Code 中导入独立项目可能会导致错误,进而导致应用程序无法成功构建。构建应用程序时遇到的错误可能如下:
cmake:152 (message):
Could not find toolchain file:
/path_to_app/frdmmcxw72_15_4_mac_app/armgcc/armgcc.cmake
Call Stack (most recent call first):
CMakeLists.txt:34 (project)
此错误是由于导入生成的文件存在缺陷导致的。解决方法如下:
CMakePresets.json在项目面板中找到该文件。该文件位于Project Files下拉菜单中。- 找到该
"toolchainFile": "${sourceDir}/armgcc.cmake",行条目并将其修改为"toolchainFile": "${sourceDir}/cmake/toolchain/armgcc.cmake",. - 右键单击项目并按
Pristine build以执行清理构建。
4. 运行演示
初始设置
- 将第一块板子通过 USB 接口连接到电脑。
- 使用以下设置打开串口终端:
- 波特率:115200
- 数据位:8
- 奇偶性:无
- 停止位:1
- 流量控制:无
- 重置电路板
- 您应该会看到欢迎界面:
```
###### #####
###### # ###### ##### #############
####### ## ###### ##### ###############
######## ### ########### #### #####
#### ##### #### ######### ##### #####
#### ##### #### ######### #################
#### ######## ########### ###############
#### ##### ###### ##### ############
#### ### ###### ##### ##
#### # ###### ##### #
802.15.4 MAC Demo
-Press 'h' to see the available commands
802.15.4 MAC app Interface shortcuts
-Input [c] to start app in PAN Coordinator mode
-Input [e] to start app in RX on when idle end device
-Input [p] to start app in RX off when idle end device (no low power)
-Input [l] to start app in RX off when idle end device (with low power)
-Input [f] to factory reset the device
-Input [ch] to show current channel
-Input [ch <11-26>] to set channel to a value between 11 and 26
-Input [h] to Show this help
IEEE802.15.4 application is initialized and ready.
```
将设备启动为 PAN 协调器的过程如下:
- 首先,用户可以选择创建网络的 802.15.4 信道(默认设置为 11),这是可选步骤。可以通过输入 [ch <11-26>] 命令来完成的。
- 然后,输入 [c],设备将启动进入 PAN 协调器模式。在此步骤中,如果信道已在之前设置(如步骤 1 所述),则能量扫描结果将被忽略,网络将在已设置的信道上启动。如果在启动前未设置信道,应用程序将执行能量扫描以查找最佳可用信道,并在该信道上启动网络。
- PAN协调器将显示802.15.4网络配置详情,例如PAN ID和信道。PAN ID是随机生成的。
Starting as PAN coordinator on channel 15
Sending the MLME-Start Request message to the MAC...
Done!
Started the coordinator with PAN ID 0x442B
- PAN协调器现在可以接受来自终端设备的关联请求。
将设备作为终端设备启动的流程如下:
- 输入所需的终端设备类型命令:
设备接入网络后,用户可以输入指令start并按回车键开始数据传输。应用程序将在PAN协调器和终端设备之间发送消息。
5. 支持
如需更多支持,请访问 NXP 无线社区页面 - NXP 无线社区
项目元数据
有关此示例的内容/正确性的问题,可以作为 Issues 提交到此 GitHub 存储库中。
来源:恩智浦appcodehub
299
