[评测分享]
【Silicon Labs EFR32xG24 开发套件】-5-驱动VEML6035环境光传感器
#板卡评测
1803 人阅读
|
0 人回复
|
2022-12-05
TA的每日心情 | 奋斗 2024-6-21 17:19 |
|---|
签到天数: 358 天 连续签到: 1 天 [LV.8]以坛为家I
状元
- 积分
- 3004
|
本帖最后由 SensorYoung 于 2022-12-5 11:32 编辑
我在上一次的测评中提及了USART的使用,本次将尝试获取板载光传感器数据,并通过串口显示。首先参考用户手册上面关于光传感器的介绍:
在xG24 Dev Kit上, VEML6035通过一个开关与主控芯片EFR32MG24连接。在使用VEML6035之前必须先置位PC09(High),这会使能给VEML6035的供电,同时把VEML6035连接到主控芯片的I2C总线上。此外,手册建议必须要把PC09置位或者清零。下图是VEML6035跟EFR32MG24连接:
本文在上次UART程序的基础上,继续探索SSV5图形化配置工具配置,生成代码,把采集到的环境光传感器数据通过串口发送到上位机。
首先通过双击.slcp文件进入图形化配置工具。
然后Board -> BoardControl,点击Config,在General一栏,Enable光传感器;确定光传感器的控制开关对应于PC09。
然后 安装光传感器的驱动:
驱动安装成功后有提示:
接着安装I2C驱动,可以在Platform -> Driver -> I2C下面找到,点击Install即可。这里I2C的实例化名称定义为:I2C_Sensor_VEML6035.
创建成功后,会自动的生成代码:
安装之后在PinTool里面分配相应的引脚
非常喜欢ssv5的一点是可以显示函数的调用结构,非常的实用!
接下来就行调用VEML6035相关的API来读取传感器数据!
编写主代码,编译:
- sl_veml6035_init(sl_i2cspm_I2C_Sensor_VEML6035, 1);
- printf("Following is Output from Light Sensor.\r\n");
- while(1){
- sl_system_process_action();
- sl_veml6035_get_als_lux(sl_i2cspm_I2C_Sensor_VEML6035, &my_als_lux);
- sl_veml6035_get_white_lux(sl_i2cspm_I2C_Sensor_VEML6035, &my_white_lux);
- printf("my_als_lux_Int = %d.\r\n", (uint32_t)(my_als_lux*100));
- printf("my_white_lux_Int = %d.\r\n", (uint32_t)(my_white_lux*100));
- printf("--------------------------\r\n");
- printf("my_als_lux_Float = %.3f.\r\n", my_als_lux);
- printf("my_white_lux_Float = %.3f.\r\n", my_white_lux*100);
- sl_udelay_wait(1000000);
- }
复制代码
遇到了3个错误,主要是一些头文件引用的问题。
解决后重新编译:
下载后,测试结果如下,可以看到用手遮住板卡,传感器数值快速下降,非常灵敏。
目前在使用printf打印的时候,发现flot类型的无法打印,但是整型数后可打印的问题,尝试做如下设置:
问题得到解决!传感器数据通过printf打印成整形和浮点都可以!
|
|
|
|
|
|
|
|
|