【Silicon Labs 开发套件评测】+光传感与霍尔传感的检测
本帖最后由 yin_wu_qing 于 2021-8-22 19:24 编辑<p> <span style="font-size:16px;"> </span><span style="font-size:20px;"> 收到板子也有段时间了,由于最近手头的事比较多,所以只能周末补发贴子咯。前期回顾:<a href="https://bbs.eeworld.com.cn/thread-1173930-1-1.html" target="_blank">【Silicon Labs 开发套件评测】+关于板上传感器的资料</a>,这块开发板集成了多个传感器,此次与大伙分享一下关于环境光传感器(VEML6035)与霍尔效应传感器(Si7210)的功能检测。</span></p>
<p><span style="font-size:20px;"> 威世半导体生产的环境光传感器VEML6035倡导低功耗、高灵敏度,采用IIC总线通讯,官方描述如下图所示:</span></p>
<p> <span style="font-size:20px;"> 根据数据手册我们可以获悉传感器的设备地址是0x29,数据手册中关于IIC接口介绍如下:</span></p>
<p> <span style="font-size:20px;"> Si7210是由芯科科技(Silicon Labs)提供的霍尔传感器,其SOT-23封装的管脚定义如下:</span></p>
<p> <span style="font-size:20px;"> 根据数据手册我们可以获悉Si7210的设备地址有0x30, 0x31, 0x32, or 0x33,数据手册中关于IIC接口介绍如下:</span></p>
<p></p>
<p> <span style="font-size:20px;"> VEML6035器件与霍尔传感器(Si7210)在EFM32PG22开发板上的电路连线可参考电路原理图</span></p>
<p></p>
<p> </p>
<p> </p>
<p> <span style="font-size:20px;"> </span></p>
<p><span style="font-size:20px;"> 在“Simplicity Studio IDE</span><span style="font-size:20px;">”中,创建一个RTOS基本工程,接着需要安装、使能一些关于IIC接口的组件。</span></p>
<p> <span style="font-size:20px;"> </span></p>
<p><span style="font-size:20px;"> 这里使用串口工具来打印输出传感器所采集的实时数据,因此需要加载第三方重定向的函数库</span></p>
<p> <span style="font-size:20px;"> 使能VEML6035与Si7210传感器</span></p>
<p></p>
<p><span style="font-size:20px;"> 然后在工程源码中添加传感器数据处理的任务,部分代码如下:</span></p>
<pre>
<code>#include <stdio.h>
#include "FreeRTOS.h"
#include "task.h"
#include "sl_i2cspm.h"
#include "em_cmu.h"
#include "sl_i2cspm_sensor_config.h"
#include "sl_veml6035.h"
#include "sl_si7210.h"
#ifndef TOOGLE_DELAY_MS
#define TOOGLE_DELAY_MS 1000
#endif
#ifndef EXAMPLE_USE_STATIC_ALLOCATION
#define EXAMPLE_USE_STATIC_ALLOCATION 0
#endif
static void Envir_Hall_test_task(void *arg);
sl_i2cspm_t *sl_i2cspm_sensor = SL_I2CSPM_SENSOR_PERIPHERAL;
void Sensor_Control_init(void)
{
TaskHandle_t xHandle = NULL;
BaseType_t xReturned = pdFAIL;
static StaticTask_t xTaskBuffer;
static StackType_txStack;
xReturned = xTaskCreate(Envir_Hall_test_task,
"Envir_Hall_test task",
BLINK_TASK_STACK_SIZE*3,
( void * ) NULL,
tskIDLE_PRIORITY + 3,
&xHandle);
EFM_ASSERT(xReturned == pdPASS);
}
static void Envir_Hall_test_task(void *arg)
{
const TickType_t xDelay = pdMS_TO_TICKS(TOOGLE_DELAY_MS);
float veml_templux;
float veml_daylux;
float si7210_hudata;
(void)&arg;
sl_veml6035_init(sl_i2cspm_sensor,true);
sl_si7210_init(sl_i2cspm_sensor);
while(1)
{
sl_veml6035_get_als_lux(sl_i2cspm_sensor,&veml_templux);
sl_veml6035_get_white_lux(sl_i2cspm_sensor,&veml_daylux);
printf("veml_templux:%ld\r\n",(int32_t)(veml_templux*100));
printf("veml_daylux:%ld\r\n",(int32_t)(veml_daylux*100));
sl_si7210_measure(sl_i2cspm_sensor,10000,&si7210_hudata);
printf("si7210_hudata:%ld\r\n",((int32_t)si7210_hudata*1000));
vTaskDelay(xDelay);
}
}
</code></pre>
<p><span style="font-size:20px;"> 编译完成,将hex文件下载到开发板中,然后打开串口调试助手,用手指放在VEML6035传感器上面,使周围环境光亮度发生变化,然后用螺丝刀在Si7210传感器附近晃动,产生霍尔值很明显。</span></p>
<p> <span style="font-size:20px;"> 此次分享就告一段落啦,检测的结果说明环境光传感器(VEML6035)与霍尔效应传感器(Si7210)很灵敏,EFM32PG22微控制器非常适合这类低功耗器件的应用场景。</span></p>
<p></p>
<p></p>
<p>看来环境光传感器和霍尔效应传感器确实是非常灵敏的</p>
<p>现在物联网时代,功耗确实是一大头!</p>
页:
[1]