拿到 FRDM-MCXW71 开发板一段时间,本次完整分享 VSCode+MCUXpresso Zephyr 环境搭建、DHT22 硬件接线、设备树配置、驱动编译下载全流程,方便开发者快速上手高精度温湿度采集,为后续蓝牙上传、环境监测项目打下基础。
一、开发环境选择与前期准备
(一)开发环境选型
本次选用VSCode 搭配 MCUXpresso for VS Code 插件 + Zephyr RTOS开发,对比传统 Keil MDK 优势明显:无软件授权限制、内置 AI 编码辅助、NXP 新一代 MCX 系列开发官方主推,对 FRDM-MCXW71 Cortex-M33 内核适配完善,编译、烧录、串口调试一站式完成。(二)硬件参数与物料清单
FRDM-MCXW71 开发板核心参数
内核:单 Cortex-M33,主频 96MHz
外设:板载 CMSIS-DAP 调试器、USB Type-C、多路 GPIO、BLE 蓝牙外设、Arduino 兼容扩展排针
供电:USB 3.3V/5V 双输出,完美适配 DHT22 传感器
DHT22(AM2302)高精度温湿度传感器参数
供电:3.3V~5V,兼容开发板 3V3 引脚
测温范围:-40℃~80℃,精度 ±0.5℃,支持小数位
测湿范围:0~100% RH,精度 ±2% RH,分辨率 0.1% RH
通信:单总线数字信号,自带内置 10K 上拉电阻,简化外部电路
(三)官方资源获取渠道
NXP MCUXpresso VS Code 官方安装文档:Zephyr lab installation and preparation — MCUXpresso for VS Code 26.05 documentation
NXP FRDM-MCXW71 板卡 SDK 资源:MCUXpresso Installer 内置在线 SDK 仓库
Zephyr 官方 DHT 传感器驱动样例:内置 SDK samples/sensor/dht 目录
二、开发环境搭建核心步骤
(一)MCUXpresso 工具链安装
下载打开 MCUXpresso Installer,勾选以下组件批量安装
Zephyr Developer 完整工具包
Arm GNU Toolchain 交叉编译工具链
MCUXpresso SDK(版本 26.3.0.0)
Ninja 编译工具、Git、串口调试工具
注意:SDK 下载时国内网络速度较慢,建议切换手机热点或分段下载,安装路径不要包含中文、空格。
VSCode 插件配置
打开 VSCode 插件商店搜索「MCUXpresso for VS Code」安装,重启软件后侧边栏出现 MCUX 快速启动面板。
(二)新建 Zephyr 工程
在 MCUX 快速面板点击「New Project Wizard」,选择导入 FRDM-MCXW71 开发板模板工程。
工程自动生成基础目录,关键文件说明:
prj.conf:内核功能开关配置
frdm_mcxw71.overlay:自定义硬件设备树
src/main.c:主应用逻辑代码
CMakeLists.txt:编译构建脚本
(三)内核功能开关配置 prj.conf
打开 prj.conf,开启传感器、DHT 驱动、GPIO、串口打印相关宏,缺少配置会出现驱动加载失败:CONFIG_GPIO=y CONFIG_SENSOR=y CONFIG_DHT=y CONFIG_DHT_LOCK_IRQS=y CONFIG_SERIAL=y CONFIG_CONSOLE=y
(四)设备树 overlay 引脚配置
新建 / 修改 frdm_mcxw71.overlay 文件,开启 GPIO 端口并注册 DHT22 传感器节点,本次选用 PTB5 作为 DHT22 数据引脚,开启内部上拉:/* 启用GPIOB端口 */ &gpiob { status = "okay"; }; /* DHT22传感器节点定义 */ / { dht22_sensor: dht22 { compatible = "aosong,dht"; dio-gpios = <&gpiob 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; }; };
说明:DHT22 单总线通信必须上拉,模块自带电阻可双重保障,避免读取无响应。
三、硬件接线操作
DHT22 共 3 根引脚 VCC、GND、S(数据),直接对接 FRDM-MCXW71 扩展排针 J8:DHT22 VCC → 开发板 3V3
DHT22 GND → 开发板 GND
DHT22 S 数据脚 → 开发板 PTB5(对应 overlay 配置引脚)
四、主程序代码编写(src/main.c)
Zephyr 内置标准 DHT 驱动,无需手动编写底层时序,直接调用标准 sensor API 读取温湿度,循环打印并搭配板载 LED 闪烁做运行指示:
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/drivers/sensor.h>
#include <zephyr/sys/printk.h>
/* 采集间隔500ms */
#define SLEEP_TIME_MS 500
#define LED_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED_NODE, gpios);
int main(void)
{
int ret;
bool led_state = false;
const struct device *dht22_dev = DEVICE_DT_GET_ANY(aosong_dht);
/* 初始化LED */
if (!device_is_ready(led.port)) {
printk("LED设备未就绪!\n");
return -1;
}
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE);
if (ret < 0) {
printk("LED初始化失败\n");
return ret;
}
if (!device_is_ready(dht22_dev)) {
printk("DHT22传感器未检测到\n");
return -ENODEV;
}
printk("DHT22高精度温湿度采集初始化完成\n");
while (1) {
/* LED翻转,指示程序正常运行 */
gpio_pin_toggle_dt(&led);
led_state = !led_state;
ret = sensor_sample_fetch(dht22_dev);
if (ret < 0) {
printk("DHT22采样失败,错误码:%d\n", ret);
} else {
struct sensor_value temp, hum;
sensor_channel_get(dht22_dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
sensor_channel_get(dht22_dev, SENSOR_CHAN_HUMIDITY, &hum);
printk("环境温度:%d.%d ℃ 环境湿度:%d.%d %%RH\n",
temp.val1, temp.val2 / 100000,
hum.val1, hum.val2 / 100000);
}
k_msleep(SLEEP_TIME_MS);
}
}五、工程编译与板卡连接
(一)工程编译
VSCode MCUX 面板选择当前工程,点击 Build 编译按钮,工具链自动校验设备树、内核配置、代码语法。编译成功终端输出无 error,生成可烧录 elf/hex 文件;若提示驱动未找到,优先检查 prj.conf 的 DHT 宏是否开启、overlay 引脚配置是否正确。(二)板卡与电脑连接
使用 USB Type-C 数据线连接 FRDM-MCXW71 与电脑 USB 口,板载 CMSIS-DAP 调试器自动识别,Windows 系统自动安装复合设备驱动,无需手动下载驱动包。打开 VSCode 调试配置,调试器选择 CMSIS-DAP
调试接口 SW 模式,下载时钟默认 5MHz,无需修改参数
设备列表正常显示开发板序列号、固件版本即代表连接正常
六、程序下载与运行效果
(一)程序下载
编译无报错后,点击 Flash 下载按钮,工具自动擦除、烧录固件,几秒完成并提示下载成功。(二)实际运行效果
板载 LED 周期性闪烁,代表主循环正常运行;
打开串口调试工具,波特率 115200,持续输出高精度温湿度:
环境温度:26.8 ℃ 环境湿度:53.5 %RH
我要赚赏金
