0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2023-12-01 15:28 次阅读

概述

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

最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:615061293 。
在这里插入图片描述
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/

完整代码下载

[https://download.csdn.net/download/qq_24312945/88216813]

所有功能

● 主要特性
○ 高灵敏度红外存在和运动检测传感器
○ 对于尺寸为 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%xn",STHS34PF80_ID);	
	
  /* USER CODE END 2 */

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48093

    浏览量

    740050
  • 模块
    +关注

    关注

    7

    文章

    2484

    浏览量

    46526
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61308
  • stm32cubemx
    +关注

    关注

    5

    文章

    260

    浏览量

    14447
收藏 人收藏

    评论

    相关推荐

    基于STM32CUBEMX驱动TMOS模块STHS34PF80(2)----驱动STHS34PF80进行人体检测

    由 ASIC 进行数字处理,可以对其进行编程以监控运动、存在或过热状况。 本章主要驱动STHS34PF80,进行人体检测。
    的头像 发表于 12-01 15:29 393次阅读
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驱动</b><b class='flag-5'>TMOS</b><b class='flag-5'>模块</b><b class='flag-5'>STHS34PF80</b>(2)----<b class='flag-5'>驱动</b><b class='flag-5'>STHS34PF80</b>进行人体检测

    基于STM32CUBEMX驱动TMOS模块STHS34PF80(3)----修改检测阈值

    用于配置和设置 STHS34PF80 传感器的一些参数,以便进行存在检测和运动检测。
    的头像 发表于 12-01 15:30 368次阅读
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驱动</b><b class='flag-5'>TMOS</b><b class='flag-5'>模块</b><b class='flag-5'>STHS34PF80</b>(3)----修改检测阈值

    基于STM32CUBEMX驱动TMOS模块STHS34PF80(4)----中断获取信号

    SHS34PF80的数据准备信号提供了一种机制,允许设备在新的测量数据可读取时通知系统,并触发同步操作,通过正确配置相关寄存器,可以确保系统及时捕获和处理来自设备的新数据,从而提高整体性能和响应能力。
    的头像 发表于 12-01 15:31 3865次阅读
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驱动</b><b class='flag-5'>TMOS</b><b class='flag-5'>模块</b><b class='flag-5'>STHS34PF80</b>(4)----中断<b class='flag-5'>获取</b>信号

    基于STM32CUBEMX驱动TMOS模块STHS34PF80(5)----配置嵌入式函数

    STHS34PF80传感器项目种修改 Arduino 脚本,重新移植到STM32的MCU中。
    的头像 发表于 12-01 15:33 378次阅读
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驱动</b><b class='flag-5'>TMOS</b><b class='flag-5'>模块</b><b class='flag-5'>STHS34PF80</b>(5)----配置嵌入式函数

    基于STM32CUBEMX驱动TMOS模块STHS34PF80(6)----获取状态数据

    STHS34PF80传感器项目种修改 Arduino 脚本,重新移植到STM32的MCU中。 该项目基于STHS34PF80 IR温度传感器,能够检测环境和物体温度,并且在最大4米范围内检测存在
    的头像 发表于 12-01 15:39 328次阅读
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驱动</b><b class='flag-5'>TMOS</b><b class='flag-5'>模块</b><b class='flag-5'>STHS34PF80</b>(6)----<b class='flag-5'>获取</b>状态数据

    通过STEVAL-MKI109V3在unico上识别不到STHS34PF80是为什么?怎么处理?

    TMOS测试:通过STEVAL-MKI109V3在unico上识别不到STHS34PF80
    发表于 03-26 08:31

    stm32cubemx教程

    stm32cubemx教程,需要学习的看看,免积分
    发表于 11-02 10:16 0次下载

    STM32CubeMX和HAL驱动库的嵌入式系统设计浅谈

    课程 | 基于STM32CubeMX和HAL驱动库的嵌入式系统设计
    的头像 发表于 01-09 13:59 3728次阅读

    STM32CubeMX学习笔记(一)---LED与蜂鸣器

    STM32CubeMX学习笔记(一)—点亮LED这里写目录标题STM32CubeMX学习笔记(一)---点亮LED一、开发板二、STM32CubeMX工程创建1、打开 STM32CubeMX
    发表于 12-05 13:21 19次下载
    <b class='flag-5'>STM32CubeMX</b>学习笔记(一)---LED与蜂鸣器

    STM32CubeMX——搭建环境、编译烧写

    文章内容:本文主要介绍STM32CubeMX的安装方法,以及怎么用这个软件来生成一个流水灯工程文件。目录一、STM32CubeMX的环境搭建(一)安装STM32CubeMX(二)固件库的安装
    发表于 12-07 10:21 19次下载
    <b class='flag-5'>STM32CubeMX</b>——搭建环境、编译烧写

    意法半导发布了新型人体存在和移动检测芯片:STHS34PF80

    近期,意法半导发布了新型人体存在和移动检测芯片:STHS34PF80,它是一款带有微加工热敏晶体管(TMOS)的高集成度、超低功耗的红外(IR)传感器,可取代传统的被动红外(PIR)传感技术,提升安保监视系统、家庭自动化设备和物联网设备等场景的的监测性能。
    的头像 发表于 07-30 09:47 1215次阅读

    ST TMOS热敏红外传感器: 精准检测人员存在和移动

    意法半导发布新型人体存在和移动检测芯片。STHS34PF80是一款带有微加工热敏晶体管(TMOS)的高集成度、超低功耗的红外(IR)传感器,可取代传统的被动红外(PIR)传感技术,提升安保监视系统、家庭自动化设备和物联网设备等场景的的监测性能。
    发表于 08-08 14:48 329次阅读

    STM8CubeMXSTM32CubeMX功能一样吗?

    STM8CubeMXSTM32CubeMX功能一样吗?
    的头像 发表于 10-31 16:59 1195次阅读
    STM8<b class='flag-5'>CubeMX</b>和<b class='flag-5'>STM32CubeMX</b>功能一样吗?

    STHS34PF80人体存在传感器(1)----获取人体存在状态

    STHS34PF80是一款高性能的红外(IR)传感器,特别适用于检测存在感和运动。其主要特点是高灵敏度,能在没有透镜的情况下探测到4米远的物体(尺寸为70 x 25厘米),并配有集成的硅红外滤波器
    的头像 发表于 01-09 15:51 212次阅读
    <b class='flag-5'>STHS34PF80</b>人体存在传感器(1)----<b class='flag-5'>获取</b>人体存在状态

    e2studio开发STHS34PF80人体存在传感器(1)----获取人体存在状态

    STHS34PF80是一款高性能的红外(IR)传感器,特别适用于检测存在感和运动。其主要特点是高灵敏度,能在没有透镜的情况下探测到4米远的物体(尺寸为70 x 25厘米),并配有集成的硅红外滤波器
    的头像 发表于 01-09 16:00 239次阅读
    e2studio开发<b class='flag-5'>STHS34PF80</b>人体存在传感器(1)----<b class='flag-5'>获取</b>人体存在状态