开发的过程计划为:
一、安装Zephyr环境,跑通"hoelloworld"程序
二、跑通官方代码心率模拟程序“peripheral_hr”
三、调试SHT30温湿度测量
接下来开始流程
一、安装Zephyr环境
关于环境的安装,我前后试了两种方法,既:1、Power shell的指令集安装 2、基于VScode下的MCUXpresso for VS Code 不过最好用的还是第二种,因为第一种还要单独安装Debug环境,第二种直接集成了,
续调试程序都用的第二种方式,第一种给大家提供安装思路
1、Power shell的指令集安装
关于指令的安装我是参考的这篇讲解:https://passport.eepw.com.cn/auth/login?url=https://forum.eepw.com.cn/thread/399428/1 ,跟着他的步骤走,即可安装成功,途中可能会遇到网速问题,建议在早上6-7点安装网速好
可以创建一个自己的目录和官方demo分开一面混淆,我就创建一个名为myapps的文件夹存储
进入创建好的目录
PS C:\Windows\system32> cd D:\nxp_w71_zephyr\myapps
激活进入配置的虚拟环境
PS D:\nxp_w71_zephyr\myapps> ..\.venv\Scripts\Activate.ps1
复制Demo程序作为基本
这个是串口打印程序
(.venv) PS D:\nxp_w71_zephyr\myapps> cp -Recurse D:\nxp_w71_zephyr\zephyr\samples\hello_world .\my_hello_app
这个是点灯闪烁程序
(.venv) PS D:\nxp_w71_zephyr\myapps> cp -Recurse D:\nxp_w71_zephyr\zephyr\samples\basic\blinky .\led_progect
ii . 打开文件夹查看当前目录
进入项目目录
(.venv) PS D:\nxp_w71_zephyr> cd D:\nxp_w71_zephyr\myapps\my_hello_app
运行构建
(.venv) PS D:\nxp_w71_zephyr\myapps\my_hello_app> west build -p auto -b frdm_mcxw71

(.venv) PS D:\nxp_w71_zephyr\myapps\my_hello_app> west flash


2、基于VScode下的MCUXpresso for VS Code
这种方式按照我上传的附件中的方法去安装FRDM-MCXW72_Zephyr_Lab(1).pdf,下载途中若遇见下载失败的包可以直接截图问豆包去哪里下载,它会推荐下载网址
在前置工作都准备完成后
你已经通过 MCUXpresso Installer 安装了Zephyr Developer工具包,包括:
CMake、Ninja、Git、Python
Arm GNU Toolchain
Zephyr SDK、Zephyr Python 环境
GN、Curl 等依赖
VS Code 和 MCUXpresso 扩展也已安装,只是扩展提示需要手动更新,可以在扩展市场更新。
在 VS Code 中导入 Zephyr 仓库(关键步骤)
- 打开 VS Code,点击左侧的 MCUXpresso 图标(通常是 NXP 的标志)。
- 在打开的 MCUXpresso 面板中,找到QUICKSTART PANEL(快速启动面板)。
- 点击Import Repository(导入仓库)。

- 在弹出的窗口中,选择REMOTE(远程)标签页,Repository选择Zephyr。
- 选择你需要的Revision(版本号,默认是最新稳定版)。
- 设置Name(仓库名,建议保留默认)和Location(本地存放路径,建议放在非中文目录)。
- 点击Import,等待仓库下载和初始化完成(国内网络可能较慢,请耐心等待)。
仓库导入完成后,在 MCUXpresso 面板的IMPORTED REPOSITORIES下,能看到 Zephyr 仓库。
可以尝试导入一个示例工程:点击Import Example from Repository,选择 Zephyr 仓库、开发板和示例(如hello_world或blinky),导入并编译,验证环境正常。
二、跑通官方代码心率模拟程序“peripheral_hr”

这里我选的克隆的是官方提供的心率历程

此时就把工程添加进来了,然后点击编译,由于这里我已经编译过了且文件代码没改动,它就直接显示完成了,图如下,若是第一次编译则工程需要构建build文件就会慢一些

然后点击旁边的运行符号即可


此时程序已下到了板子中,然后根据文档中的测试app打开,App的下载连接为https://share.eepw.com.cn/share/download/id/396489#share_fb_down
我们在手机中下载安装IoT Toolbox APP(文末给出下载地址),打开手机蓝牙和定位功能,点击APP的“Heart Rate”按钮,即可搜索到板载蓝牙,点击连接即可考到模拟的相关数据了,若没有搜到蓝牙信号请继续往下走。


若未搜索到蓝牙信号,板子上的蓝色指示灯也没有闪烁则说明蓝牙固件没有烧录到板子上,因此需要去刷一下蓝牙固件,这里我试了好多种方法都说要先进ISP模式,但是我的板子一直进不了ISP模式,于是另外的方法是直接打开命令提示符输入指令blhost.exe -p COM5 -- receive-sb-file "D:/nxp_w71_zephyr/modules/hal/nxp/zephyr/blobs/mcxw71/mcxw71_nbu_ble.sb3",即可刷固件,不过首先电脑上要有blhost.exe,关于mcxw71_nbu_ble.sb3可以问豆包怎么下载放在何处,刷完之后结果如图

然后打开LinkFlash把生成的.elf文件烧录进去地址设为0x48800000即可,如下图

此时即可以搜到蓝牙信号了,就可以去完成上述的心率例子显示了
三、调试SHT30温湿度测量
这里我参考的是https://forum.eepw.com.cn/thread/400426/1 这个帖子
这里可以克隆一个helloworld的工程来开发,核心就是要配置设备树,iic的功能
这里需要编写prj.conf文件配置,打开一些使能,使能I2C的功能,我是这样配的

然后要编写设备树,
在目录下新建 app.overlay 文件。
这里需要根据开发板实际使用的 I2C 总线来写。一般可能是 i2c0、i2c1 或 i2c2。
这里先以 i2c1 为例:

main函数程序如下
#include <stdio.h>#include <zephyr/kernel.h> #include <zephyr/device.h> #include <zephyr/drivers/sensor.h> #include <zephyr/sys/printk.h>// #define SHT30_NODE DT_NODELABEL(sht30)
int main(void){ // const struct device *sht30 = DEVICE_DT_GET(SHT30_NODE); const struct device *sht30 = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(sensirion_sht3xd)); struct sensor_value temperature; struct sensor_value humidity;
printf("Hello World! %s\n", CONFIG_BOARD_TARGET); printk("FRDM-MCXW72 SHT30 demo start\r\n");
if (!device_is_ready(sht30)) { printk("SHT30 device is not ready\r\n"); return 0; } printk("SHT30 device is ready\r\n");
while (1) { int ret; ret = sensor_sample_fetch(sht30);
if (ret < 0) { printk("Failed to fetch sample, ret = %d\r\n", ret); k_sleep(K_SECONDS(2)); continue; }
ret = sensor_channel_get(sht30, SENSOR_CHAN_AMBIENT_TEMP, &temperature); if (ret < 0) { printk("Failed to get temperature, ret = %d\r\n", ret); k_sleep(K_SECONDS(2)); continue; }
ret = sensor_channel_get(sht30, SENSOR_CHAN_HUMIDITY, &humidity);
if (ret < 0) { printk("Failed to get humidity, ret = %d\r\n", ret); k_sleep(K_SECONDS(2)); continue; }
printk("Temperature: %d.%06d C, Humidity: %d.%06d %%RH\r\n", temperature.val1, temperature.val2, humidity.val1, humidity.val2); k_sleep(K_SECONDS(2)); }
return 0;
}
即可在串口助手上看到打印的数据了,程序烧录后,打开串口终端,可以看到温湿度数据每 2 秒刷新一次:

至此,FRDM-MCXW71 驱动 SHT30 温湿度传感器实验完成
后续将进行成果贴,在心率的工程上合并SHT30的驱动程序实现最终效果
我要赚赏金
