基于STM32CUBEMX驱动TMOS模块STHS34PF80(1)----获取ID

基于STM32CUBEMX驱动TMOS模块STHS34PF80----1.获取ID

  • 概述
  • 样品申请
  • 视频教程
  • 所有功能
  • 接口
  • 最小系统图
  • 生成STM32CUBEMX
    • 串口配置
    • IIC配置
    • IO口设置
    • 串口重定向
  • 模块地址
  • 参考demo
  • IIC写函数
  • IIC读函数
  • 参考程序初始化
  • 获取ID
  • 主函数

概述

STHS34PF80 是一款非冷却、工厂校准的红外运动和存在检测传感器,工作波长在 5 µm 至 20 µm 之间。
STHS34PF80 传感器设计用于测量视野内物体发出的红外辐射量。该信息由 ASIC 进行数字处理,可以对其进行编程以监控运动、存在或过热状况。
凭借其卓越的灵敏度,STHS34PF80 可以在最远 4 米的距离内检测到人体的存在,而无需光学镜头。
STHS34PF80 采用小型 3.2 x 4.2 x 1.455(最大)mm 10 引脚 LGA 封装。

最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:6_15061293 。
在这里插入图片描述
STHS34PF80是一种红外传感器,可用于检测静止和移动物体的存在,以及过温条件。它使用独特的TMOS技术测量物体的红外辐射,以便在物体位于视场内时检测其存在或运动。
在传感器上沉积了一个光学带通滤波器,将其工作范围限制在5微米到20微米的波长范围内,使其不对可见光和其他频段敏感。
传感器基于一组连接在一起并作为单个感应元件运作的浮动真空热晶体管MOS(TMOS)矩阵。得益于ST独特的MEMS制造技术,实现了先进的热隔离,使传感器能够将最小的温度变化转化为电信号,然后将这些信号馈送给ASIC。
传感器分为两个部分,一个暴露于红外辐射,另一个被屏蔽。通过在两个部分之间进行差分读数,可以消除传感器自加热的影响。
STHS34PF80集成了高精度温度传感器,用于测量环境温度并测量物体的精确红外辐射。
ASIC还实现了专门的智能处理,以检测/区分静止和移动物体,并可以断言专用中断。
可用不同的输出数据速率(ODR),范围从0.25赫兹到30赫兹,以及单次测量模式。
STHS34PF80配备了I²C / 3线SPI接口,并采用了与SMD安装兼容的OLGA 3.2 x 4.2 x 1.455 mm 10L封装。
封装所保证的视场为80°。
在这里插入图片描述

样品申请

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

视频教程

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

基于STM32CUBEMX驱动TMOS模块STHS34PF80(1)----获取ID

所有功能

● 主要特性
○ 高灵敏度红外存在和运动检测传感器
○ 对于尺寸为 70 x 25 cm² 的物体,在不使用镜头的情况下可达 4 米
○ 集成硅红外滤光片
○ SMD 友好
○ 能够检测静止物体
○ 能够区分静止和移动的物体
○ 80° 视野
○ 工厂校准
○ 低电量
○ 用于存在/运动检测的嵌入式智能算法
● 电气规格
○ 电源电压:1.7V 至 3.6V
○ 电源电流:10μA
○ 2 线 I²C / 3 线 SPI 串行接口
○ 可编程 ODR(0.25 Hz 至 30 Hz)
○ 一击模式
● 传感规格
○ 红外灵敏度:2000 LSB/°C
○ RMS 噪声:25 LSB rms
○ 工作波长:5 µm 至 20 µm
○ 本地温度传感器精度:±0.3℃
● 包装规格
○ LGA 10 引线,3.2 x 4.2 x 1.455(最大)毫米
○ 符合 ECOPACK 和 RoHS 标准
在这里插入图片描述

接口

STHS34PF80模块接口的示意图如下所示,支持IIC或者SPI通讯。
在这里插入图片描述

最小系统图

在这里插入图片描述

生成STM32CUBEMX

串口配置

查看原理图,PA9和PA10设置为开发板的串口。
在这里插入图片描述

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

IIC配置

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

在这里插入图片描述

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

IO口设置

STS34PF80IO设置如下所示。
在IIC模式下CS需要给个高电平。
在这里插入图片描述
官方提供IIC接线如下所示。
在这里插入图片描述
在这里插入图片描述

需要把PA8配置为输出模式,默认高电平,配置PA7为输入模式。

在这里插入图片描述

串口重定向

打开魔术棒,勾选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 */

模块地址

STHS34PF80模块的默认设备地址为1011010(0x5A)。设备地址是用来识别和通信特定设备的标识符。通过将VL6180模块的设备地址设置为1011010(0x5A),您可以确保与该模块进行正常的通信和控制。
在这里插入图片描述

参考demo

这里参考ST在GITHUB上发布的案例来进行修改。
https://github.com/STMicroelectronics/sths34pf80-pid/blob/master/sths34pf80_reg.c
物体存在检测demo。
https://github.com/STMicroelectronics/STMems_Standard_C_drivers/blob/master/sths34pf80_STdC/examples/sths34pf80_tmos_presence_detection.c

IIC写函数

参考例程序中对应的驱动程序为sths34pf80_write_reg(),如下所示。
在这里插入图片描述
由上面表格可以得知,地址为101 1010(0x5A),如果是写操作,那么具体的地址为1011 0100(0xB4)。

/**
  * @brief  读取数据
  *
  * @param  add   模块地址
  * @param  reg   寄存器地址
  * @param  data  buffer 缓冲区
  * @param  len   读取长度
  * @retval ret   正常返回HAL_OK
  *
  */
uint8_t sths34pf80_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;
}

IIC读函数

参考例程序中对应的驱动程序为sths34pf80_read_reg(),如下所示。
在这里插入图片描述

由上面表格可以得知,地址为101 1010(0x5A),如果是读操作,那么具体的地址为1011 0101(0xB5)。

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

}

参考程序初始化

在这里插入图片描述

获取ID

参考例程序中对应的获取ID驱动程序,如下所示。
在这里插入图片描述

获取ID可以查看0x0F,读出来的值应该为0xD3。
在这里插入图片描述

读取函数如下所示。

/**
  * @brief  获取设备ID
  *
  * @param  add      设备地址
  * @param  val      设备ID.
  * @retval ret   		正常返回HAL_OK
  *
  */

uint8_t STHS34PF80_getChipID(uint8_t add)
{
  uint8_t temp[1]={0};
	sths34pf80_read_reg(add,STHS34PF80_WHO_AM_I,temp,1);
  return temp[0];
}

主函数

  /* USER CODE BEGIN 2 */

	uint8_t STHS34PF80_ID =STHS34PF80_getChipID(STHS34PF80_ADDRESS);
	printf("STHS34PF80_ID=0x%x\n",STHS34PF80_ID);	
	
  /* USER CODE END 2 */

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Exploiting Proximity-Aware Tasks for Embodied Social Navigation 论文阅读

论文信息 题目&#xff1a;Exploiting Proximity-Aware Tasks for Embodied Social Navigation 作者&#xff1a;Enrico Cancelli&#xff0c; Tommaso Campari 来源&#xff1a;arXiv 时间&#xff1a;2023 Abstract 学习如何在封闭且空间受限的室内环境中在人类之间导航&a…

【JavaEE】懒人的福音-MyBatis框架—[单表]增删改查等常规操作

【JavaEE】MyBatis框架要点总结&#xff08;2&#xff09; 文章目录 【JavaEE】MyBatis框架要点总结&#xff08;2&#xff09;1. 单表查看操作1.1 (条件查询)通过id查找用户1.1.1 接口上声明方法1.1.2 xml文件中去实现方法1.1.3 测试 1.2 传递参数的重点问题&#xff1a;sql注…

监控Elasticsearch的关键指标

Elasticsearch 的核心职能就是对外提供搜索服务&#xff0c;所以搜索请求的吞吐和延迟是非常关键的&#xff0c;搜索是靠底层的索引实现的&#xff0c;所以索引的性能指标也非常关键&#xff0c;Elasticsearch 由一个或多个节点组成集群&#xff0c;集群自身是否健康也是需要我…

虚拟机的创建与使用

一、虚拟机的下载 链接&#xff1a;百度网盘下载链接 提取码&#xff1a;a9p4 二、新建虚拟机系统 需要有版本序列号 注意: 选择 第一个是纯dos 的窗口指令 桌面没有任何东西 选择第二个就是正常的操作系统.有文件夹 我的电脑之类的 三、从主机中复制文件到虚拟机中需要安装 …

阿里云服务器搭建Magento电子商务网站图文教程

本文阿里云百科分享使用阿里云服务器手动搭建Magento电子商务网站全流程&#xff0c;Magento是一款开源电商网站框架&#xff0c;其丰富的模块化架构体系及拓展功能可为大中型站点提供解决方案。Magento使用PHP开发&#xff0c;支持版本范围从PHP 5.6到PHP 7.1&#xff0c;并使…

如何通过CSS选择器选择一个元素的子元素?如何选择第一个子元素和最后一个子元素?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 选择一个元素的子元素⭐ 选择第一个子元素和最后一个子元素⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&…

spark 图计算 助力解决 dataframe中的链式依赖

链式依赖说明 name newName a b c d b c 我们需要的结果 即我们可以支持获取到链式转换的 起点 重点 以及链式的中间转换过程顺序数组. 特别说明: 出版只支持 单向 无分叉的图,其他复杂场景暂时未测试. 场景举例: 比如某件商品价格变化,我们需要知…

gitee(码云)如何生成并添加公钥配置用户信息

一&#xff0c;简介 在使用Gitee的时候&#xff0c;公钥是必须的&#xff0c;无论是克隆还是上传。本文主要介绍如何本地生成和添加公钥到服务器&#xff0c;然后配置自己的用户信息&#xff0c;方便日后拉取与上传代码。 二&#xff0c;步骤介绍 2.1 本地生成公钥 打开git ba…

接口测试之Jmeter+Ant+Jenkins接口自动化测试平台

平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行&#xff0c;自动生成测试报告&#xff0c;以及持续集成。Jmeter支持接口的测试&#xff0c;Ant支持自动构建&#xff0c;而Jenkins支持持续集成&#xff0c;所以三者组合在一起可以构成一个功能完善的接口自动化…

CDN(Content Delivery Network)内容分发网络

从DNS域名系统到CDN内容分发网络 DNS什么是DNS直接使用DNS的缺点 CDNCDN加速过程使用CDN的优势 DNS 什么是DNS 输入域名www.baidu.com后&#xff0c;浏览器先检查缓存和本地Host文件&#xff0c;看有没有对应的ip地址&#xff0c;有则直接使用&#xff0c;没有就会向本地DNS服…

Shader 编程:三角形、矩形等多边形绘制

该原创文章首发于微信公众号&#xff1a;字节流动 未经作者&#xff08;微信ID&#xff1a;Byte-Flow&#xff09;允许&#xff0c;禁止转载 SDF 有向距离场 上节其实牵扯到 SDF 算法&#xff0c;因为后面涉及高级特效的时候会经常用到&#xff0c;这里先提前对它做个简单的介…

Git 代码分支规范

目的 俗话说&#xff1a;没有规矩&#xff0c;不成方圆。遵循一个好的规章制度能让你的工作事半功倍。同时也可以展现出你做事的认真的态度以及你的专业性&#xff0c;不会显得杂乱无章&#xff0c;管理困难。Git分支规范也是一样。当遵循了某种约定的Git分支&#xff0c;在代…

《合成孔径雷达成像算法与实现》Figure3.8

与图3.7的代码区别只在于原始信号的表达式对了一个时间偏移 代码复现如下&#xff1a; clc clear all close all%参数设置 TBP 100; %时间带宽积 T 10e-6; %脉冲持续时间 tc …

Apollo Planning2.0决策规划算法代码详细解析 (1):环境搭建

背景: apollo开源团队近期更新了planning版本,对代码进行了一定程度上的重构。 重构后代码结构更加清晰,对扩展更为友好;此外,也更新了dreamview对pnc的支持,使得调试更加方便。 本教程将继续更新对于Apollo Planning2.0决策规划算法代码的详细解析,便于大家更好理解…

在x86下运行的Ubuntu系统上部署QEMU用于模拟RISC-V硬件环境

1.配置工作环境 sudo apt install gcc bison flex libncurses-dev ninja-build \pkg-config build-essential zlib1g-dev pkg-config libglib2.0-dev \binutils-dev libboost-all-dev autoconf libtool libssl-dev \libpixman-1-dev python-capstone virtualenv software-prop…

数据结构入门:栈

目录 前言 1. 栈 1.1栈的概念及结构 1.2 栈的实现 1.2.1 栈的定义 1.2.2 栈的初始化 1.2.3 入栈 1.2.4 出栈 1.2.5 栈的元素个数 1.2.6 栈顶数据 1.2.7 栈的判空 2.栈的应用 2.1 题目一&#xff1a;括号匹配 2.1.1 思路 2.1.2 分析 2.1.3 题解 总结 前言 无论你是计算机科学专…

从源码Debug深入spring事件机制,基于观察者模式仿写spring事件监听骨架

文章目录 1.测试案例2.DEBUG源码分析3. 异步监听4.ApplicationListener子接口5. 注解支持6. 基于观察者模式高仿spring事件监听6.1 先定义自定义一个事件6.2 定义两个监听器6.3 定义一个持有所有监听器的对象&#xff0c;类似spring的SimpleApplicationEventMulticaster6.4 事件…

【C++起飞之路】初级—— auto、范围for循环、宏函数和内联函数

auto、范围for、内联函数、宏函数和nullptr 一、auto — 类型推导的魔法&#xff08;C 11)1、auto 是什么&#xff1f;2、工作原理3、优势4、限制和注意事项 二、范围for (C11)1、基本语法2、优势3、工作原理4、注意事项5、C11&#xff1a; 范围 for 循环的扩展&#xff1a; 三…

数据结构:力扣OJ题

目录 ​编辑题一&#xff1a;链表分割 思路一&#xff1a; 题二&#xff1a;相交链表 思路一&#xff1a; 题三&#xff1a;环形链表 思路一&#xff1a; 题四&#xff1a;链表的回文结构 思路一&#xff1a; 链表反转&#xff1a; 查找中间节点&#xff1a; 本人实力…

找不到资产文件project.assets.json

NuGet 在“obj”文件夹中写入名为 project.assets.json 的文件&#xff0c;.NET SDK 使用该文件来获取有关要传递到编译器的包的信息 。 如果在生成过程中找不到资产文件 project.assets.json&#xff0c;则会发生此错误。 1.执行命令的方式解决 点击工具&#xff0c;分别展开命…