一、硬件介绍
1、产品特点
PSOC E84 Edge AI KIT开发板配备双 CPU 内核(400 MHz Arm Cortex‑M55和200 MHz Arm Cortex‑M33),芯片集成图形音频模块、数字信号处理 DSP 单元、安全隔离区、高性能存储扩展等接口;
板载KitProg3编程调试器、SWD调试排针、6轴IMU传感器、3轴磁力计、气压传感器、温湿度传感器、雷达模块以及64MB QSPI Flash、16MB Octal RAM以及具有Wi‑Fi、蓝牙二合一的CYW55513无线模块模组;

主要特性
双核CPU:400MHz Cortex‑M55(高性能) + 200MHz Cortex‑M33(低功耗)
支持1.8V、3.3V工作电压
主要原理图

二、功能效果
通过板载的温湿度、气压传感器,采集室内的环境数据,并通过串口进行输出;
气压传感器、温湿度传感器通过I2C方式进行连接
气压传感器(DPS368)
DPS368 是一款微型数字气压传感器,具有高精度和低电流消耗,可测量压力和温度;
主要特性
压力范围:300 hPa ~ 1200 hPa
精度:± 0.06 hPa (or ±0.5 m)


温湿度传感器(SHT40)
主要特性
温度范围: -40℃~+125℃ (±0.2℃)
湿度范围: 0%RH~100%RH ( ±1.8%RH)


三、代码编写
在之前PSOC_Edge_Hello_World例程的基础上,添加相关传感器功能库;
在Library Manager中分别搜索 sht4x 和 dps3xx 并添加到cm33_ns工程中;


在cm33_ns中的main.c中编写相关代码
串口每隔1s打印一次温湿度、气压传感器采集到的数据
#include "cybsp.h"
#include "mtb_hal.h"
#include "mtb_sht4x.h"
#include "mtb_xensiv_dps3xx.h"
#include "retarget_io_init.h"
// I2C控制器底层上下文结构体
cy_stc_scb_i2c_context_t i2c_controller_context;
// MTB HAL层的I2C实例对象
mtb_hal_i2c_t CYBSP_I2C_CONTROLLER_hal_obj;
// DPS368传感器
xensiv_dps3xx_t pressure_sensor;
int main(void) {
cy_rslt_t result = CY_RSLT_SUCCESS;
// SHT40读取原始数据:湿度(毫相对湿度)、温度(毫摄氏度),除以1000得到实际值
int32_t humidity_milli, temp_sht_milli;
// DPS368读取原始数据:气压(hPa)
float pressure;
/* 初始化芯片内核、外设时钟以及开发板BSP资源 */
result = cybsp_init();
if (CY_RSLT_SUCCESS != result) {
CY_ASSERT(0);
}
/* 开启全局中断 */
__enable_irq();
/* 初始化串口重定向 */
init_retarget_io();
/* 初始化SCB硬件I2C外设 */
result =
Cy_SCB_I2C_Init(CYBSP_I2C_CONTROLLER_HW, &CYBSP_I2C_CONTROLLER_config,
&i2c_controller_context);
if (CY_RSLT_SUCCESS != result) {
CY_ASSERT(0);
}
// 使能I2C
Cy_SCB_I2C_Enable(CYBSP_I2C_CONTROLLER_HW);
/* 把底层SCB I2C封装成MTB HAL标准I2C对象 */
result = mtb_hal_i2c_setup(&CYBSP_I2C_CONTROLLER_hal_obj,
&CYBSP_I2C_CONTROLLER_hal_config,
&i2c_controller_context, NULL);
if (CY_RSLT_SUCCESS != result) {
CY_ASSERT(0);
}
/* 初始化SHT40温湿度传感器 */
result =
mtb_sht4x_init(&CYBSP_I2C_CONTROLLER_hal_obj, MTB_SHT40_ADDRESS_DEFAULT);
if (CY_RSLT_SUCCESS != result) {
CY_ASSERT(0);
}
/* 初始化DPS368气压传感器 */
result = mtb_xensiv_dps3xx_init_i2c(&pressure_sensor,
&CYBSP_I2C_CONTROLLER_hal_obj,
XENSIV_DPS3XX_I2C_ADDR_DEFAULT);
if (CY_RSLT_SUCCESS != result) {
CY_ASSERT(0);
}
for (;;) {
// SHT40 数据(高精度测量模式)
result = mtb_sht4x_measure_high_precision(&CYBSP_I2C_CONTROLLER_hal_obj,
&temp_sht_milli, &humidity_milli);
// DPS368 数据
xensiv_dps3xx_read(&pressure_sensor, &pressure, NULL);
// 串口打印
if (CY_RSLT_SUCCESS == result) {
printf("==== Sensor Data ====\r\n");
// 原始值除以1000,换算成常规摄氏度、相对湿度
printf("SHT40: Temp = %.2f ℃ RH = %.2f %%RH\r\n",
(float)temp_sht_milli / 1000.0f, (float)humidity_milli / 1000.0f);
printf("DPS368: Pressure = %.2f hPa \r\n", pressure);
}
// 延时1秒
Cy_SysLib_Delay(1000);
}
}
四、程序烧录
1、连接设备至电脑端;
连接至开发板的J1 USB口(KitProg3)
2、选择Application页面的 Program 进行程序烧录;
Build:增量编译
Rebuild:重新编译
Clean:清空编译内容
Erase:擦除 Flash
Program:编译并烧录程序到开发板中


五、效果演示


我要赚赏金
