【Silicon Labs 开发套件评测】+光传感与霍尔传感的检测
[复制链接]
本帖最后由 yin_wu_qing 于 2021-8-22 19:24 编辑
收到板子也有段时间了,由于最近手头的事比较多,所以只能周末补发贴子咯。前期回顾:【Silicon Labs 开发套件评测】+关于板上传感器的资料,这块开发板集成了多个传感器,此次与大伙分享一下关于环境光传感器(VEML6035)与霍尔效应传感器(Si7210)的功能检测。
威世半导体生产的环境光传感器VEML6035倡导低功耗、高灵敏度,采用IIC总线通讯,官方描述如下图所示:
根据数据手册我们可以获悉传感器的设备地址是0x29,数据手册中关于IIC接口介绍如下:
Si7210是由芯科科技(Silicon Labs)提供的霍尔传感器,其SOT-23封装的管脚定义如下:
根据数据手册我们可以获悉Si7210的设备地址有0x30, 0x31, 0x32, or 0x33,数据手册中关于IIC接口介绍如下:
VEML6035器件与霍尔传感器(Si7210)在EFM32PG22开发板上的电路连线可参考电路原理图
在“Simplicity Studio IDE”中,创建一个RTOS基本工程,接着需要安装、使能一些关于IIC接口的组件。
这里使用串口工具来打印输出传感器所采集的实时数据,因此需要加载第三方重定向的函数库
使能VEML6035与Si7210传感器
然后在工程源码中添加传感器数据处理的任务,部分代码如下:
#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_t xStack[BLINK_TASK_STACK_SIZE];
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);
}
}
编译完成,将hex文件下载到开发板中,然后打开串口调试助手,用手指放在VEML6035传感器上面,使周围环境光亮度发生变化,然后用螺丝刀在Si7210传感器附近晃动,产生霍尔值很明显。
此次分享就告一段落啦,检测的结果说明环境光传感器(VEML6035)与霍尔效应传感器(Si7210)很灵敏,EFM32PG22微控制器非常适合这类低功耗器件的应用场景。
veml6035-1605016.pdf
(217.75 KB, 下载次数: 0)
SI7210-B-03-IVR数据手册.PDF
(519.37 KB, 下载次数: 0)
|