回答

收藏

[评测分享] 【Silicon Labs EFR32xG24 开发套件】-5-驱动VEML6035环境光传感器

#板卡评测 #板卡评测 1803 人阅读 | 0 人回复 | 2022-12-05

本帖最后由 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来读取传感器数据!


编写主代码,编译:
  1. sl_veml6035_init(sl_i2cspm_I2C_Sensor_VEML6035, 1);
  2.   printf("Following is Output from Light Sensor.\r\n");
  3.   while(1){
  4.       sl_system_process_action();
  5.       sl_veml6035_get_als_lux(sl_i2cspm_I2C_Sensor_VEML6035, &my_als_lux);
  6.       sl_veml6035_get_white_lux(sl_i2cspm_I2C_Sensor_VEML6035, &my_white_lux);
  7.       printf("my_als_lux_Int = %d.\r\n", (uint32_t)(my_als_lux*100));
  8.       printf("my_white_lux_Int = %d.\r\n", (uint32_t)(my_white_lux*100));

  9.       printf("--------------------------\r\n");


  10.       printf("my_als_lux_Float = %.3f.\r\n", my_als_lux);
  11.       printf("my_white_lux_Float = %.3f.\r\n", my_white_lux*100);

  12.       sl_udelay_wait(1000000);
  13.   }
复制代码




遇到了3个错误,主要是一些头文件引用的问题。


解决后重新编译:

下载后,测试结果如下,可以看到用手遮住板卡,传感器数值快速下降,非常灵敏。


目前在使用printf打印的时候,发现flot类型的无法打印,但是整型数后可打印的问题,尝试做如下设置:


问题得到解决!传感器数据通过printf打印成整形和浮点都可以!

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条