VD6283TX环境光传感器驱动开发(1)----获取ID

2023-10-03 15:36

本文主要是介绍VD6283TX环境光传感器驱动开发(1)----获取ID,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VD6283TX环境光传感器驱动开发----1.获取ID

  • 概述
  • 视频教学
  • 样品申请
  • 源码下载
  • 模块参数
  • IIC接线方式
  • 设备ID
  • 生成STM32CUBEMX
    • 串口配置
  • IIC配置
  • 串口重定向
  • 模块地址
  • 获取ID
  • 主函数
  • 结果演示

概述

环境光传感器是一种光电探测器,能够将光转换为电压或者电流,使用多光谱环境光传感器为了测量光谱上特定波长或特定带锯波长的强度,该传感器的目标是改善视觉体验并最终使用户感到舒适的照明视觉体验。
在这里插入图片描述
在这里插入图片描述

最近在弄ST的课程,需要样片的可以加群申请:615061293 。

视频教学

https://www.bilibili.com/video/BV1du411u7Uz/

VD6283TX环境光传感器驱动开发(1)----获取ID

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

源码下载

模块参数

VD6283 是 ST 的一款微型光学模块,尺寸为 1.83 x 1.0 x 0.55 mm,具有6个独立的环境光传感通道,包括红、绿、蓝、红外、透明和可见通道。它使用高级混合滤波器并能在7 mLux 到 30 kLux 的范围内运行。此传感器具有独特的读出架构,可以提取从100 Hz 到 2 kHz 频率的交流灯光闪烁信号。VD6283 还配备了 I2C 接口,工作电压为1.8 V,并具有低功耗特性。它可以在 -30 到 85 °C 的温度范围内运行。主要应用包括屏幕亮度调整的真实色调色感测定、光亮度和相关色温测量以及闪烁校正辅助的光频提取。通过专利架构和高性能的光电二极管设计,VD6283 可以提取灯光闪烁频率,避免视频上的“条纹效果”,或检查它们对人眼是否安全。此外,VD6283 是唯一能够同时进行闪烁操作和环境光传感操作的传感器。
在这里插入图片描述

IIC接线方式

IIC接线方式如下所示,需要注意的是供电和上拉都是1.8V。

在这里插入图片描述

开发板接线方式如下所示。

在这里插入图片描述

设备ID

我们可以通过查询0x00和0x01获取模块ID和模块版本号。

在这里插入图片描述

手册给出的取模块ID和模块版本号分别是0x70和0xBD。

在这里插入图片描述

生成STM32CUBEMX

串口配置

查看原理图,PA1和PA0设置为开发板的串口。

在这里插入图片描述
配置串口。
在这里插入图片描述

IIC配置

在这个应用中,VD6283TX模块通过I2C(IIC)接口与主控器通信。具体来说,VD6283TX模块的I2C引脚连接到主控器的PB6(引脚B6)和PB7(引脚B7)两个IO口。

在这里插入图片描述
配置IIC为普通模式,速度为100k。

在这里插入图片描述

串口重定向

打开魔术棒,勾选MicroLIB

在这里插入图片描述

在main.c中,添加头文件,若不添加会出现 identifier “FILE” is undefined报错。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函数声明和串口重定向:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);return ch;
}
/* USER CODE END PFP */

模块地址

VD6283TX模块的默认设备地址为0100000(0x20)。设备地址是用来识别和通信特定设备的标识符。通过将VL6180模块的设备地址设置为0100000(0x20),您可以确保与该模块进行正常的通信和控制。
若添加读写位,0x40为写地址,0x41为读地址。

在这里插入图片描述

获取ID

读写函数如下所示。

/*** @brief  读取数据** @param  add   模块地址* @param  reg   寄存器地址* @param  data  buffer 缓冲区* @param  len   读取长度* @retval ret   正常返回HAL_OK**/
uint8_t VD6283TX_read_reg(uint8_t add,uint8_t reg,  uint8_t * data, uint8_t len)
{uint8_t ret;ret=HAL_I2C_Mem_Read(&hi2c1 ,(add<<1)|1,reg,I2C_MEMADD_SIZE_8BIT,data,len,0xffff);return ret;
}/*** @brief  写入数据** @param  add   模块地址* @param  reg   寄存器地址* @param  data  buffer 缓冲区* @param  len   写入长度* @retval ret   正常返回HAL_OK**/
uint8_t VD6283TX_write_reg(uint8_t add,uint8_t reg, uint8_t * data, uint8_t len)
{uint8_t ret;ret=HAL_I2C_Mem_Write(&hi2c1 ,(add<<1)|0,reg,I2C_MEMADD_SIZE_8BIT,data,len,0xffff);return ret;}

获取ID以及版本号代码如下所示。

/*** @brief  获取设备ID** @param  add      设备地址* @param  val      设备ID.* @retval ret   		正常返回HAL_OK**/uint8_t VD6283TX_getChipID(uint8_t add)
{uint8_t temp[1]={0};VD6283TX_read_reg(add,VD6283TX_DEVICE_ID,temp,1);return temp[0];
}/*** @brief  获取VD6283硅芯片的修订版本** @param  add      设备地址* @retval          硅芯片修订版本**/
uint8_t VD6283TX_getSiliconRevision(uint8_t add)
{uint8_t revision[1] = {0};VD6283TX_read_reg(add, VD6283TX_REVISION_ID, revision, 1);return revision[0];
}

主函数

  /* USER CODE BEGIN 2 */HAL_Delay(200);	printf("123\n");//获取设备IDHAL_I2C_Mem_Write(&hi2c1 ,(add<<1)|0,reg,I2C_MEMADD_SIZE_8BIT,data,len,0xffff);uint8_t VD6283_ID =VD6283TX_getChipID(VD6283TX_ID);printf("VD6283TX_ID=0x%x\n",VD6283_ID);		//获取VD6283硅芯片的修订版本uint8_t VD6283_Revision =VD6283TX_getSiliconRevision(VD6283TX_ID);printf("getSiliconRevision=0x%x\n",VD6283_Revision);		/* USER CODE END 2 */

结果演示

在这里插入图片描述

这篇关于VD6283TX环境光传感器驱动开发(1)----获取ID的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/534

相关文章

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J