[评测分享]
【Silicon Labs EFR32xG24 开发套件】利用IIC读温湿度并用串口打印
#板卡评测
2335 人阅读
|
0 人回复
|
2022-12-16
TA的每日心情 | 开心 2025-8-15 21:04 |
|---|
签到天数: 730 天 连续签到: 1 天 [LV.9]以坛为家II
翰林
- 积分
- 23626
|
【Silicon Labs EFR32xG24 开发套件】板小,但是兼容了好几款传感器,麻雀虽小五脏俱全。
我继续探索板卡自带的温湿度传感器S。从原理图中可以看到传感器的型号是:Si7021。采用了Silicon Labs的第二代RH感测解决方案,温度测量范围从-40~+125℃,精度高达±0.4℃;相对湿度可以从0~80%RH进行准确测量。
下图为温湿度传感器参数:
再来一个附件:
传感器我就不多介绍,详细的参数请看规格书,下面我们看一下原理图:
SI7021是用IIC通信的,IIC上面挂了好几个传感器。
通过TS3A4751连接在PC04 PC05 IO口上。
下图简单的说明,和Si7021如何连接到EFR32MG24。
下在看代码:
IIC的初始化:
I2C_TransferReturn_TypeDef ret;
uint8_t cmdReadId2[2] = SI7021_CMD_READ_ID_BYTE2;
uint8_t deviceId[8];
// Wait for sensor to become ready
sl_sleeptimer_delay_millisecond(80);
// Check for device presence and compare device ID
ret = SI7021_transaction(I2C_FLAG_WRITE_READ, cmdReadId2, 2, deviceId, 8);
// Make sure transfer was successful
EFM_ASSERT(ret == i2cTransferDone);
// Check the Received Device ID
EFM_ASSERT(deviceId[0] == SI7021_DEVICE_ID);
// Initialize LED PWM module
initialise_temp_limits();
// Initialize Periodic timer
initialise_timer();
// stdout is redirected to VCOM in project configuration
printf("Welcome to the I2CSPM example application\r\n");
读取传感器的值:
sl_atomic_load(local_read_sensor_data, read_sensor_data);
if (local_read_sensor_data) {
// Measure the current humidity and temperature
SI7021_measure(&relative_humidity, &temperature);
// Print the current humidity and temperature to vcom
printf("\r\n");
printf("Relative Humidity = %ld%%\r\n", relative_humidity);
printf("Temperature = %ld C\r\n", temperature);
// Set appropriate LEDs (led0 or 1) based on temperature
set_leds(temperature);
// Reset the flag
local_read_sensor_data = false;
sl_atomic_store(read_sensor_data, local_read_sensor_data);
通过串口打印出传感器的值:一个是温度,一个是温度。
视频:
https://www.bilibili.com/video/BV1CV4y1A7yV/?vd_source=0e4686609dd9c60a63b3f7fe54080c03
|
|
|
|
|
|
|
|
|