STM32F103ZET6驱动TOF250激光测距传感器

news2024/12/27 12:52:07

STM32驱动TOF250激光测距传感器

  • TOF250介绍
    • I2C通讯协议
    • I2C寄存器地址
  • TOF250引脚说明和STM32的接线
      • 和STM32的接线
  • 程序
  • 实验结果
  • 总结

TOF250介绍

在这里插入图片描述
TOF250是一款基于TOF原理的单点测距雷达,采用940nm红外光源,提供了精确和可重复的远
距离测量用于高速自动对焦(AF).创新的TOF time-of-flight技术使该传感器性能独立于目标物体的反射率. TOF(time-of-flight)测量技术用低成本的CMOS工艺的SPAD (单光子雪崩二极管) 来实现它使测量结果准确,对环境光具有更高的抗干扰性 。支持UART和I2C通讯。

I2C通讯协议

在这里插入图片描述

I2C寄存器地址

在这里插入图片描述
注:主机在发送寄存器地址后要延时至少30uS给模块准备数据,否则I2C会出现异常。

TOF250引脚说明和STM32的接线

在这里插入图片描述
在这里插入图片描述

和STM32的接线

TOF250STM32
5V5V
GNDGND
SDAPB7
SCLPB6

说明:

此次测试仅使用的是模拟IIC,方便理解
USB打印结果需要用到串口1的TX

程序

main.c

int main(void)
{
    //unsigned char y;
    __I2C_Status_TypeDef i2CStatus;
//    u16 len;                           //检测每次接收到的长度,方便字符串转整数的时候进行处理
    User_I2C_Init(); //IIC初始化
    delay_init();
    // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

    /**************************************************************
    **TOF250串口通信协议:
    **波特率 : 9600
    **数据位 : 8
    **校验   : 无
    **停止位 : 1
    ****************************************************************/
    uart_init(9600);	 //串口初始化为115200
    while(1)
    {
        i2CStatus = I2C_RecvBytes(TOF250_ID,TOF250_DIST_H, &RxData[0], 2,100);    //通过IIC读取TOF250距离值信息
        if(i2CStatus == I2C_OK) {
            Tof250_dist = RxData[1] + RxData[0]*256;
            printf("%u cm\n",Tof250_dist);
        }
        delay_ms(100);                                      //延时100ms,TOF250默认更新速度10HZ
    }
}

myiic.h

#define USER_I2C_SCL_PIN  GPIO_Pin_6
#define USER_I2C_SDA_PIN  GPIO_Pin_7
#define USER_I2C_GPIO     GPIOB

//IO方向设置
 
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}

//IO操作函数	 
#define IIC_SCL    PBout(6) //SCL
#define IIC_SDA    PBout(7) //SDA	 
#define READ_SDA   PBin(7)  //输入SDA 

实验结果

在这里插入图片描述
准确率在5%

总结

需要具体例程的可以评论留下邮箱获取,TOF250官方CSDN是:https://blog.csdn.net/HCJ_Application/article/details/124058266
程序是参考官方的例程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OceanBase写入限速源码解读

一、简介 OceanBase中的写入限速机制旨在控制系统中写入操作&#xff08;一般写入操作包括插入、更新和删除等&#xff09;的速率&#xff0c;目的是为了提高数据库系统的稳定性。本文主要通过以下2个参数来解释写入限速的实现机制。 **1.**writing_throttling_trigger_perce…

MySQL-----索引特性

文章目录 前言一、没有索引,可能会有什么问题二、认识磁盘MySQL与存储先来研究一下磁盘在看看磁盘中一个盘片扇区结论磁盘随机访问(Random Access)和连续访问(Sequential Access) 三、MySQL与磁盘交互的基本单位四、建立共识五、索引的理解建立测试表插入多条记录查看插入结果中…

程序员最终会被自己开发的轮子所淘汰吗?

螺丝刀和扳手的发明&#xff0c;并没有让工人下岗&#xff1b; 工程机械&#xff08;挖掘机等&#xff09;的发明&#xff0c;也不会让建筑工人的需求量减少&#xff1b; 现代医学的各种先进设备&#xff0c;似乎也没有让医生数量大幅减少&#xff1b; …… 所以&#xff0c;关…

【团购-自定义Cell完善 Objective-C语言】

一、我们刚才这么写,有一个问题, 1.CZGoodsCell *cell = [[NSBundle mainBundle] loadNibNamed:@“CZGoodsCell” owner : nil options : nil ] ; 这样是不是没有进行单元格重用啊, 没有重用单元格, 我们说,前面还有一个对单元格进行重用吧, static NSString *ID = @“…

4.shell函数

文章目录 shell函数shell函数的作用函数返回值函数传参函数变量作用范围递归阶乘使用函数递归目录/var/log&#xff0c;如果是文件直接输出文件名&#xff0c;如果是目录则输出目录名且输出此目录下的所有目录和文件名通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录…

python的小技巧

python的小方法 &#xff08;1&#xff09;利用dir()这个函数方法&#xff0c;知道库里面的方法有些什么。&#xff08;2&#xff09; 利用type()这个函数方法&#xff0c;知道是什么类型的数据&#xff08;3&#xff09;从序列元素中获取元素[1]单个星号还可以在列表/元组/字典…

纯干货!蓝牙耳机哪个牌子好?性价比高蓝牙耳机推荐

蓝牙耳机是我们使用最多的数码产品之一&#xff0c;不论是通勤、运动、上课都少不了它。身为数码测评专员&#xff0c;我每天都会进行测评&#xff0c;对各类数码产品也有深入研究&#xff0c;近期很多网友咨询蓝牙耳机哪个牌子好&#xff0c;于是我进行深入测评后整理了这份性…

【刷题】141. 环形链表

141. 环形链表 一、题目描述二、示例三、实现思考总结 141. 环形链表 一、题目描述 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环…

基于jdk11从源码角度剖析AQS 抽象同步其的核心原理

在高并发的情况下&#xff0c;使用基于CAS自旋实现的轻量级锁存在恶性空自旋浪费CPU 资源和导致“总线风暴”两大问题&#xff0c; 解决CAS恶性空自旋的有效方法是空间换时间&#xff0c;常见解决方法有分散操作热点和使用队列削峰。JUC并发包使用的是队列削峰的方案解决CAS的性…

YOLOv7升级换代:EfficientNet骨干网络助力更精准目标检测

目录 一、EfficientNet骨干网络1、EfficientNet架构2、EfficientNet在目标检测中的应用3、EfficientNet分辨率的缩放4、EfficientNet深度与宽度的缩放 二、YOLOv7结构1、YOLOv7网络架构2、YOLOv7骨干网络3、YOLOv7使用了EfficientNet作为骨干网络&#xff0c;具有以下几个优点&…

如何基于异步消息队列进行深度学习模型推理预测?distributed inference with pytorch celery huey sqlite

文章目录 celery 简介celery in pytorchwindows 平台下使用celery 的一些问题参考文献与学习路径一些类似消息队列多进行推理预测的实现参考celery and sqlitecelery vs hueycelery 简介 先说一下celery 不支持windows 【或者说支持的不好】 pypi https://pypi.org/project/…

docker-安装prometheus

概述 什么是Prometheus 如果对Prometheus不熟悉的, 可以先了解一下Prometheus的官网或者文档; Prometheus是一个开源的系统监控和报警系统&#xff0c;现在已经加入到CNCF基金会&#xff0c;成为继k8s之后第二个在CNCF托管的项目&#xff0c;在kubernetes容器管理系统中&…

基于java和go-cqhttp实现QQ机器人

目录 yh-qqrobot机器人简介go-cqhttp搭建1.下载应用2.生成bat文件3. 初始化项目4. 配置5. 运行项目 yh-qqrobot搭建搭建后端1. 导入sql文件2. 配置文件3. 导入到idea 搭建前端 yh-qqrobot机器人简介 yh-qqrobot是一个基于若依框和go-cqhttp集成的系统&#xff0c;一开始我只是揣…

ACM 1010 | 利润计算

文章目录 0x00 前言 0x01 题目描述 0x02 问题分析 0x03 代码设计 0x04 完整代码 0x05 运行效果 0x06 总结 0x00 前言 C 语言网不仅提供 C 语言&#xff0c;还包括 C 、 java 、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及软件下载、题解博…

day2_内存区域2垃圾回收算法

文章目录 方法区1.StringTable2.StringTable的位置3.StringTable的调优 垃圾回收1. 判断垃圾2. 5种引用3. 垃圾回收算法 方法区 前面提到了方法区中的组成&#xff0c;它的组成主要是: class(例如它的属性&#xff0c;方法等)常量池(StringTable等)类加载器 在jdk 1.8中&…

【python学习】基础篇-文件与系统-文件信息获取与目录操作

python内置文件高级操作函数 删除文件 Python 没有内置删除文件的函数&#xff0c;但是在内置的 os 模块中提供了删除文件的 remove()函数&#xff0c;语法格式如下: os.remove(path) 其中&#xff0c;path 为要删除的文件路径&#xff0c;可以使用相对路径&#xff0c;也可以…

P1058 [NOIP2008 普及组] 立体图

题目描述 小渊是个聪明的孩子&#xff0c;他经常会给周围的小朋友们讲些自己认为有趣的内容。最近&#xff0c;他准备给小朋友们讲解立体图&#xff0c;请你帮他画出立体图。 小渊有一块面积为 &#xfffd;&#xfffd;mn 的矩形区域&#xff0c;上面有 &#xfffd;&#x…

number类型超出16位的问题(前端、后端处理)

目录 1、前端解决方案 1.1 甩链接 1.2 接口返回数据过程中将数据处理为字符串&#xff08;过过嘴瘾&#xff09; 1.3 对返回的json字符串进行数据预处理代码如下 2、后端解决方案 2.1 toString、String、 、new String() 自己悟、就是要改的地方多。 2.2拦截器 (可能超出…

为什么越来越多的企业选择云计算?

一、前言 1.当下企业信息化的痛点 企业信息化&#xff0c;这也算是一个老生常谈的话题了&#xff0c;整个中国业内前前后后应该喊了有十多年了。不过到目前为止&#xff0c;我国很多企业公司都还没真正形成一个完整的信息化框架&#xff0c;或者只是运用了一个简单财务或客户…

Vue3组件通信 含有详细的步骤和解释

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、父传子 defineProps1.使用运行时声明2.使用针对类型的声明 二、子传父 defineEmits1.使用运行时声明2.使用针对类型的声明 总结 前言 Vue2的父子组件通信是…