44|0

452

帖子

0

资源

一粒金砂(初级)

【飞控开发基础教程8】疯壳·开源编队无人机-I2C(激光测距) [复制链接]

COCOFLY教程
——疯壳·无人机·系列
I2C(激光测距)
    
    

1.png  

图1
    
    
    一、VL53L1X 简介
    VL53L1X 属于 STMicroelectronics 即常说的意法半导体(ST)公司推出的
    FlightSense™ 产品系列 ToF(Time of flight)激光测距传感器。
    VL53L1X 是目前市场上最快的微型 ToF 传感器,精确测距能力达 4 米,测距频率快至 50 Hz。它采用微型、可回流焊封装,集成了一个单光子雪崩二极管
    (SPAD)接收阵列、一个 940nm 不可见激光 1 类发射器、物理红外滤波器和光学器件,可在各种环境照明条件下实现最佳测距性能,并提供一系列覆盖窗口选择。
    由于封装小巧,因此它很容易集成到设备中。与传统的红外传感器不同, VL53L1X 采用 ST 最新一代 ToF 技术,无论目标颜色和反射率如何,都可以进行绝对距离测量。还可以对接收阵列上的 ROI(感兴趣区域)大小进行编程,从而减小传感器 FoV(视场角)。VL53L1X 激光测距传感器的实物图如下图所示。
    
2.png     
    图2
    二、I2C 概述
    Inter-Integrated Circuit,即内部集成电路接口,缩写为 IIC 或 I2C。IIC 总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C 总线在物理连接上非常简单,分别由 SDA(串行数据线)和 SCL(串行时钟线)及上拉电阻组成。通信原理是通过对 SCL 和 SDA 线高低电平时序的控制, 来产生 I2C 总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。如下图所示为单片机与 I2C接口的传感器之间通信示意图。
    
3.png     
    图3
    
    三、I2C 总线协议
    对 I2C 总线的操作实际就是主从设备之间的读写操作。大致可分为以下两种操作情况:
    第一,主设备往从设备中写数据。数据传输格式如下:
4.png     

图4
    第二,主设备从从设备中读数据。数据传输格式如下:
    
5.png     图5
    实际上把 I2C 协议拆分开来它的组成有:起始条件、终止条件、地址段、数据段、响应 ACK、非响应 NACK。
    (1)START 和 STOP,起始和终止条件都是由主机(master)发起产生。总线在起始条件之后处于忙碌状态,在停止条件之后又处于空闲状态。
    
6.png
    图6
    起始条件:SCL 线是高电平时,SDA 线从高电平向低电平切换。停止条件:SCL 线是高电平时,SDA 线从低电平向高电平切换。
    (2)地址段,地址段由 7bit 地址+读写位组成,一个 7-bit 的地址是从最高位(MSB) 开始发送的,这个地址后面会紧跟 1-bit(R/W)的操作符,1 表示读操作,0 表示写操作。 接下来的一个 bit 是 NACK/ACK,当这个帧中前面 8 bit 发送完后,接收端的设备获得 SDA 控制权,此时接收设备应该在第 9 个时钟脉冲之前回复一个 ACK(将 SDA 拉低)以表示接收正常,如果接收设备没有将SDA 拉低,则说明接收设备可能没有收到数据(如寻址的设备不存在或设备忙) 或无法解析收到的消息,如果是这样,则由 master 来决定如何处理,比如:停止。
    
7.png     图7
    (3)数据段,SDA 数据线上的每个字节必须是 8 位,每次传输的字节数量没有限制。每个字节后必须跟一个响应位(ACK)。首先传输的数据是最高位
    (MSB),SDA 上的数据必须在 SCL 高电平周期时保持稳定,数据的高低电平翻转变化发生在 SCL 低电平时期。
    
8.png     
    图8
    以传输 Byte:1010 1010 (0xAAh)为例,SDA SCL 传输时序如下所示:
    
9.png     
    图9
    (4)响应 ACK(Acknowledge)和非响应 NACK(Not Acknowledge),
    每个字节传输必须带响应位,相关的响应时钟也由主机产生,在响应的时钟脉冲期间(第 9 个时钟周期),发送端释放 SDA 线,接收端把 SDA 拉低。以上图传输 101010101 为例,SCL 第 9 位时钟高电平信号期间,SDA 拉低其代表了有ACK响应位。当在 SCL 第 9 位时钟高电平信号期间,SDA 仍然保持高电平,这种情况定义为 NACK 非响应位。这种情况下,主机可以直接产生 STOP 条件终止以后的传输或者继续重新 START 开始一个新的传输。以下情况会导致出现 NACK 位:
    a、接收机没有发送机响应的地址,接收端没有任何 ACK 发送给发射机;
    b、由于接收机正在忙碌处理实时程序导致接无法接收或者发送; c、传输过程中,接收机识别不了发送机的数据或命令;
    d、接收机无法接收;
    e、主机接收完成读取数据后,要发送 NACK 结束告知从机。以下图例代表 NACK 时序:
    
  10.png   
    图10
    
    根据 I2C 协议分解的各个部分,可得出读和写的时序图,以向某传感器的地址为 0x09 的寄存器写入两个字节 0x02 和 0x84 为例,如下图所示为该过程时序图。
    
  11.png
    图11
    以从某传感器的地址为 0x09 的寄存器中读出两个字节 0x02 和 0x84 为例, 该时序图如下所示。
    
  12.png   
    图12
    
    四、激光测距实验
    
    激光测距实验使用STM32 的GPIO 模拟I2C 与激光测距模组VL53L1X 相连接,串口 1 即UART1,通过 USB 转串口模块连接电脑,把 I2C 获取到的VL53L1X的距离值(mm 为单位)通过串口 1 传输到电脑端的串口调试助手显示出来。做该实验的时候需要把视觉模组暂时取下,并且把 USB 转串口的线接到视觉模组接口处。激光测距模组 VL53L1X 在无人机支架底部,杜邦线和 SH1.0 接口接到主板上的 USART3(这里用该接口的 GPIO 模拟 I2C)的接口上,如下图所示。
    
13.png     
    图13
    根据原理图,可以看到 VL53L1X 的 I2C 接口分别是:PB10、PB11,如下图所示。
    
14.png     
    图14
    串口 1 的配置可以参考《串口(基础收发),配置代码(通过调用官方库)。获取 VL53L1X 的测距数据代码编写的思路如下:
    代码思路
    
表1.png     
    表1
    模拟 I2C 的 GPIO 初始化代码如下:
    
15.png     
    图15
    VL53L1X 的初始化代码如下。
    
15.png
    图16
    VL53L1X 的测距代码如下。
    
  17.png   
    图17
    每隔 5s 读取一次距离,并发送到串口上。代码如下所示。
    
  18.png   
    图18
    这里注意要把串口的发送也配置好,这样才能把数据发送到电脑。串口 1 通过 USB 转串口模块接到电脑,保存、编译、下载代码,可以看到串口调试助手每隔 5s 在打印 VL53L1X 的 2 个字节的距离数据(mm 为单位),数据如下图所示:
    
  19.png
    图19
    
    如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系
    
    完整配套资料:http://www.fengke.club
   对应开源套件地址:http://shop115904315.taobao.com 
    文件下载请点击: 【8】I2C(激光测距).pdf (868.42 KB, 下载次数: 0)


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    推荐帖子
    关于W寄存器工作问题

    如图,为什么将 movlw 0xff 移出 loop 循环,W里面的值就会被清零?

    28335的SD卡驱动

    请问Ti官方有28335的SD卡驱动吗?

    DSP图像处理、语音处理与USB2.0接口应用解决方案

    DSP经过十几年在国内的发展,已广泛应用到了图像、语音、电机控制等各个领域,这就给大家在做系统方案设计时提供了可借鉴的 ...

    点评下载资料,参加幸运抽奖,让我们迈开技术交流分享的步伐!!

    活动链接:点评下载资料,参加幸运抽奖,让我们迈开技术交流分享的步伐!! 请获得评论标兵奖的网友在确认期限前确认 ...

    钽电容的寿命究竟有多长?

    最近买了2个二手的DALSA线扫描相机,到手时电源板的钽电容已经坏了,我换成陶瓷电容后开始时工作正常,不过升温特别快,当温度升 ...

    【大学生电子竞赛题目分析】——2021年A题《信号失真度测量装置》

    一、任务 设计制作信号失真度测量装置,对来自函数/任意波形发生器的周期信号(以下简称为输入信号)进行采集分析,测得输入 ...

    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表