Funpack5-4 - 基于FRDM-MCXN236实现环境数据采集与显示
该项目使用了FRDM-MCXN236,实现了环境数据采集与显示的设计,它的主要功能为:实时温度数据采集和串口输出。
标签
嵌入式系统
Funpack活动
FRDM-MCXN236
liuliuliu
更新2026-10-16
14

根据要求完成如下任务:

任务2:基于 FRDM-MCXN236 开发板,连接 I2C 传感器,实现环境数据采集与实时显示

  核心微控制器方面:该开发板的核心是一颗 MCX N236 微控制器,搭载 Arm Cortex-M33 内核,主频最高可达 150 MHz,配备 1MB 双组闪存(支持完整 ECC RAM)和 352KB ECC RAM,并集成 SmartDMA 加速器,能够高效地将工作负载分配到模拟与数字外设上。在安全保障方面,该芯片还内置了 EdgeLock 安全区域,一个独立的片上硬件安全子系统,为安全敏感型应用提供硬件级保护。


      开发板方面:板载调试器通过 USB-C 一线完成供电、调试和串口通信,同时支持 SWD/SWO、VCOM 虚拟串口以及 USB-to-SPI/I2C 桥接。扩展接口丰富:支持 Arduino、mikroBUS、FRDM 接头、FlexIO/LCD、SmartDMA/摄像头等多种扩展接口,并预留 Pmod 接口位。学生与工程师可以利用丰富的现成扩展模块(如电机驱动、无线模块、传感器)快速搭建验证系统。


      应用方向:电机驱动、传感器、工业与消费物联网应用等。

      设计思路:使用板卡的I2C功能,采集外部温度传感器数据,并串口打印采集到的数据。


程序流程图:

307f72eb-2d24-4048-bd3c-75721740792e.png

主要代码部分:

如下所示:使用板卡IIC功能配置温度测量模式、采集补偿温度数据和LED灯状态先红灯再绿灯。

/* =========================
* 系统初始化:红灯亮
* ========================= */
GPIO_PinWrite(
BOARD_LED_RED_GPIO,
BOARD_LED_RED_GPIO_PIN,
LOGIC_LED_ON
);
//配置温度测量模式
uint8_t config[2] = {0xF4, 0x27};
g_MasterCompletionFlag = false;

EXAMPLE_I2C_MASTER.MasterTransmit(
0x76,
config,
2,
false
);

while (!g_MasterCompletionFlag) //等待传输完成
{
}

/* 稍微等待 BMP280 */
SDK_DelayAtLeastUs(10000, SystemCoreClock);

/* =========================================================
* 读取温度原始数据 0xFA ~ 0xFC
* ========================================================= */

uint8_t reg = 0xFA;
uint8_t temp_data[3];

g_MasterCompletionFlag = false;

EXAMPLE_I2C_MASTER.MasterTransmit( //开始读取温度数据
0x76,
&reg,
1,
true
);

while (!g_MasterCompletionFlag) //等待传输完成
{
}

g_MasterCompletionFlag = false;

EXAMPLE_I2C_MASTER.MasterReceive( //读取3字节温度数据
0x76,
temp_data,
3,
false
);

while (!g_MasterCompletionFlag) //等待传输完成
{
}

PRINTF("TEMP raw: %02X %02X %02X\r\n", //打印温度原始数据
temp_data[0],
temp_data[1],
temp_data[2]);


/* =========================================================
* 读取 BMP280 温度校准参数 0x88 ~ 0x8D
* ========================================================= */

uint8_t cal_reg = 0x88;
uint8_t cal_data[6];

g_MasterCompletionFlag = false;

EXAMPLE_I2C_MASTER.MasterTransmit( //开始读取校准参数
0x76,
&cal_reg,
1,
true
);

while (!g_MasterCompletionFlag) //等待传输完成
{
}

g_MasterCompletionFlag = false;

EXAMPLE_I2C_MASTER.MasterReceive( //读取校准数据
0x76,
cal_data,
6,
false
);

/* 红灯灭 */
GPIO_PinWrite(
BOARD_LED_RED_GPIO,
BOARD_LED_RED_GPIO_PIN,
LOGIC_LED_OFF
);

/* 绿灯亮 */
GPIO_PinWrite(
BOARD_LED_GREEN_GPIO,
BOARD_LED_GREEN_GPIO_PIN,
LOGIC_LED_ON
);

/* 温度补偿 */
int32_t var1;
int32_t var2;
int32_t t_fine;
int32_t temperature;

var1 = ((((int32_t)(raw >> 3)
- ((int32_t)dig_T1 << 1)))
* ((int32_t)dig_T2)) >> 11;

var2 = (((((int32_t)(raw >> 4)
- (int32_t)dig_T1)
* ((int32_t)(raw >> 4)
- (int32_t)dig_T1)) >> 12)
* ((int32_t)dig_T3)) >> 14;

t_fine = var1 + var2;

temperature = (t_fine * 5 + 128) >> 8;


/* 输出 */
PRINTF("temperature = %d.%d%d C\r\n",
(int)(temperature / 100),
(int)((temperature % 100) / 10),
(int)(temperature % 10));


使用 EXAMPLE_I2C_MASTER.MasterTransmit( )、EXAMPLE_I2C_MASTER.MasterReceive( ) 函数对数据进行采集,采集后进行温度补偿,通过串口打印数据到串口助手上位机里。

实物展示:如下所示左侧BMP280传感器的VCC接开发板的3.3V、GND接GND、SCL接SCL、SDA接SDA引脚,插上TypC数据线,系统就开始工作。

ecf60f04820c32cf04eef12517f96c4f.jpg


活动心得体会:对于FRDM-MCXN236 板卡,基于高性能Arm®Cortex®-M33内核 运行频率高达150MHz,具有1MB闪存、352KB ECC RAM和SmartDMA,使用起来很好入门,确实是一块很好的板卡,希望Funpack 活动越来越好。

附件下载
frdmmcxn236_BMP280-i2c.rar
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号