基于STM32CUBEMX驱动多个VL6180X
概述
VL6180X是基于ST FlightSense™专利技术的最新产品。这是一个突破性的技术,实现了独立于目标反射率的绝对距离测量。现有技术通过测量反射光的光量来估算距离,这种方法的最大缺点是被测物体的颜色和表面对测量精度影响很大,而VL6180X则精确测量光线从传感器照射到最近物体然后反射到传感器所用时间(飞行时间),以此计算两者之间的距离。
VL6180X将一个红外发射器,一个红外传感器和一个环境光传感器整合于一个三合一即用型回流焊封装,易于集成,为终端产品制造商缩短了光学和机械设计优化过程并降低了相应的成本。
该模块为低功率操作设计。测距和ALS测量可在用户定义的时间间隔自动执行。支持多门限和中断方案以尽量减少主机操作。
主机控制和结果阅读通过使用I2C接口执行。可选的附加功能(如测量准备和门限中断)由两个可编程的GPIO引脚提供。
所有功能
- 三合一智能光学模块
- 接近传感器
- 环境光传感器
- VCSEL光源
- 快速,精确测距
- 绝对测量范围从0到超过10 cm(10cm以上的测距取决于具体情况)
- 不受目标反射率影响
- 环境光抑制
- 盖片的串扰补偿
- 盖片的串扰补偿
- 主机系统可以用距离和信号电平实现手势识别
- 可用演示系统:P-NUCLEO-6180X1 评估板
- 环境光传感器
- 高动态范围
- 精确/超低光敏感
- 校准输出值(以勒克斯为单位)
- 方便集成
- 单回流焊元件
- 无附加光学元件
- 单电源
- 用于器件控制和数据的I2C接口
- 提供一个文档化的C可移植 API(应用程序接口)
- 两个可编程GPIO
- 测距和ALS的窗口和门限功能
技术规范
注意供电为2.8V,IIC接口,最大支持快速模式速率,为400k,默认地址为0x29。
光照强度检测范围为 1 Lux -100 kLux。
接口
接口说明
最小系统图
初始化
首先需要检查寄存器SYSTEM__FRESH_OUT_OF_RESET {0x16}是否为0x01.
之后进行6180初始化。
初始化如下所示。
uint8_t ptp_offset;
uint8_t VL6180X_Init(uint8_t add)
{ptp_offset=VL6180X_ReadByte(add,VL6180X_REG_SYSTEM_FRESH_OUT_OF_RESET);printf("ptp_offset=%d\n",ptp_offset);
// if(VL6180X_Read_ID(add) == VL6180X_DEFAULT_ID)if(ptp_offset==0x01){ VL6180X_WriteByte(add,0x0207, 0x01);VL6180X_WriteByte(add,0x0208, 0x01);VL6180X_WriteByte(add,0x0096, 0x00);VL6180X_WriteByte(add,0x0097, 0xfd);VL6180X_WriteByte(add,0x00e3, 0x00);VL6180X_WriteByte(add,0x00e4, 0x04);VL6180X_WriteByte(add,0x00e5, 0x02);VL6180X_WriteByte(add,0x00e6, 0x01);VL6180X_WriteByte(add,0x00e7, 0x03);VL6180X_WriteByte(add,0x00f5, 0x02);VL6180X_WriteByte(add,0x00d9, 0x05);VL6180X_WriteByte(add,0x00db, 0xce);VL6180X_WriteByte(add,0x00dc, 0x03);VL6180X_WriteByte(add,0x00dd, 0xf8);VL6180X_WriteByte(add,0x009f, 0x00);VL6180X_WriteByte(add,0x00a3, 0x3c);VL6180X_WriteByte(add,0x00b7, 0x00);VL6180X_WriteByte(add,0x00bb, 0x3c);VL6180X_WriteByte(add,0x00b2, 0x09);VL6180X_WriteByte(add,0x00ca, 0x09);VL6180X_WriteByte(add,0x0198, 0x01);VL6180X_WriteByte(add,0x01b0, 0x17);VL6180X_WriteByte(add,0x01ad, 0x00);VL6180X_WriteByte(add,0x00ff, 0x05);VL6180X_WriteByte(add,0x0100, 0x05);VL6180X_WriteByte(add,0x0199, 0x05);VL6180X_WriteByte(add,0x01a6, 0x1b);VL6180X_WriteByte(add,0x01ac, 0x3e);VL6180X_WriteByte(add,0x01a7, 0x1f);VL6180X_WriteByte(add,0x0030, 0x00);// Recommended : Public registers - See data sheet for more detailVL6180X_WriteByte(add,0x0011, 0x10); // Enables polling for 'New Sample ready'// when measurement completesVL6180X_WriteByte(add,0x010a, 0x30); // Set the averaging sample period// (compromise between lower noise and// increased execution time)VL6180X_WriteByte(add,0x003f, 0x46); // Sets the light and dark gain (upper// nibble). Dark gain should not be// changed. !上半字节要写入0x4 默认增益是1.0VL6180X_WriteByte(add,0x0031, 0xFF); // sets the # of range measurements after// which auto calibration of system is// performedVL6180X_WriteByte(add,0x0041, 0x63); // Set ALS integration time to 100msVL6180X_WriteByte(add,0x002e, 0x01); // perform a single temperature calibration// of the ranging sensor// Optional: Public registers - See data sheet for more detailVL6180X_WriteByte(add,0x001b, 0x09); //测量间隔 轮询模式// period to 100ms 每步10ms->0-10msVL6180X_WriteByte(add,0x003e, 0x31); //测量周期 ALS模式// to 500ms VL6180X_WriteByte(add,0x0014, 0x24); // Configures interrupt on 'New Sample// Ready threshold event'//VL6180X_WriteByte(add,VL6180X_REG_SYSTEM_FRESH_OUT_OF_RESET, 0x00); //不发送00那么读出来的数值就是01return 0;}else return 1;
}
还在更新中
还在更新中还在更新中还在更新中还在更新中还在更新中
基于STM32CUBEMX驱动多个VL6180X相关推荐
- 【基于 STM32CubeMX + PWM + DMA驱动SW2812b全彩RGB灯】
基于 STM32CubeMX + PWM + DMA驱动SW2812b全彩RGB灯 STM32CubeMX配置: 工程源码: END 以上就是相关配置,最需要注意的就是时钟以及pre数值以及芯片时钟频 ...
- 课程 | 基于STM32CubeMX和HAL驱动库的嵌入式系统设计
帮成都这边一位老师友情分享一篇免费课程:基于STM32CubeMX和HAL驱动库的嵌入式系统设计. 如果想学习本课程,可以从文末给出的链接,或底部"阅读原文"进入报名,免费学习. ...
- 基于STM32cubemx的stm32f107vct6代码生成教程,实验一led闪烁
基于STM32cubemx的stm32f107vct6代码生成教程 一.软件准备 *MATLAB2018a *Keil4/5 *STM32CUBEMX *STM2-MAT/TARGET 4.3.0 ( ...
- STM32CubeMX驱动ADS1118模块
文章目录 1. 前言 2. ADS1118模块简介 3. 移植源码到工程 4. 驱动源码中函数介绍 4.1 us延时函数 4.2 写入和读取ADS1118配置寄存器 4.3 初始化ADS1118 4. ...
- 【原】开源——基于文件驱动的站点开发
我们大多数人都习惯了基于数据库网站的开发和维护,其实以前我也是! 今天我推出一个基于文件驱动的网站开发,易于维护,且使用简单,所见即所得! 目前只是开发一个简单的示例共大家参考和学习,请点击Downl ...
- Spring Boot 基于注解驱动源码分析--自动配置
Spring作为Java开发最常用的容器管理框架,使用注解为我们提供很多便捷,下面通过源码分析Spring基于注解驱动自动配置的原理 首先介绍两个关键类: ConfigurationClassPost ...
- Spring3基于注释驱动的AOP
51CTO正在组织十佳博客评选请 Spring3基于注释驱动的AOP 实在是郁闷刚刚编辑了一篇文章,由于字数的原因,没发布成功,好我就分开写吧,今天向大家介绍的是Spring基于注释驱动的AOP,其实 ...
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-基于接口驱动的数据层...
系列回顾 在前面的文章中,我用了大量的篇幅对UDA及ORM的使用进行了讲解和演示,我们已经知道并熟悉的使用UDA和ORM构建简单的应用,AgileEAS.NET在应用的纵向结构上建议使用分层结构,提出 ...
- Spring 2.5 基于注解驱动的 Spring MVC
基于注解的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,为 Spring MVC 提供了完全基于注解的配置.本文将介绍 Spring 2.5 新增的 Sping MVC 注解功能,讲述如 ...
最新文章
- 使用Xcode和Instruments调试解决iOS内存泄露(转)
- NUnit2.0详细使用方法
- 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)
- redis 6379端口telnet不通的解决办法
- c++17新特性_每个开发者都应该了解的一些C++特性
- Codeforces Round #419 (Div. 2)
- 汽车电子专业知识篇(十六)-整车电气系统设计——高压系统框架略读
- XHTML 语法规则及 HTML/XHTML 文档类型说明(XHTML 1.0/XHTML 1.1 和 HTML 4.01/HTML 5)
- Pyston v2.0 发布,速度比 Python 快 20%!
- 关于CMS的那点事 I
- java反编译工具jad和jd-gui使用
- 《开发者突击:精通ASP.NET AJAX网络程序设计》终于面世
- UItextInput-Protocol
- WORD中如何进行双行合一
- 泰坦尼克号数据集的下载
- javascript判断一个数是否是素数(质数)
- SPFA与迪杰斯特拉
- 优化知乎使用体验+完整保存知乎文章、回答
- 微信小程序:校验真实姓名和身份证号
- Java基础入门(上)