基于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配備了I2C / 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 cm2 的物體,在不使用鏡頭的情況下可達 4 米
○ 集成硅紅外濾光片
○ SMD 友好
○ 能夠檢測靜止物體
○ 能夠區分靜止和移動的物體
○ 80° 視野
○ 工廠校準
○ 低電量
○ 用于存在/運動檢測的嵌入式智能算法
● 電氣規格
○ 電源電壓:1.7V 至 3.6V
○ 電源電流:10μA
○ 2 線 I2C / 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 */