色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32CUBEMX驅(qū)動(dòng)TMOS模塊STHS34PF80(5)----配置嵌入式函數(shù)

嵌入式單片機(jī)MCU開發(fā) ? 來源:嵌入式單片機(jī)MCU開發(fā) ? 作者:嵌入式單片機(jī)MCU開 ? 2023-12-01 15:33 ? 次閱讀

概述

STHS34PF80傳感器項(xiàng)目種修改 Arduino 腳本,重新移植到STM32MCU中。
該項(xiàng)目基于STHS34PF80 IR溫度傳感器,能夠檢測(cè)環(huán)境和物體溫度,并且在最大4米范圍內(nèi)檢測(cè)存在和運(yùn)動(dòng)。有一個(gè)Arduino腳本,顯示如何為基本環(huán)境和物體溫度測(cè)量配置傳感器,并如何配置嵌入式功能算法,并使用它們檢測(cè)存在和運(yùn)動(dòng)。腳本允許連續(xù)或一次性模式,允許更改低通濾波器和檢測(cè)閾值以實(shí)現(xiàn)各種檢測(cè)行為。腳本利用內(nèi)嵌的中斷引擎來檢測(cè)溫度數(shù)據(jù)的就緒狀態(tài),以及通知存在和運(yùn)動(dòng)事件。
總的來說,這是一個(gè)有趣的項(xiàng)目,使用STHS34PF80 IR溫度傳感器進(jìn)行存在和運(yùn)動(dòng)檢測(cè),適用于各種應(yīng)用,從環(huán)境和物體溫度監(jiān)測(cè)到人員和動(dòng)物計(jì)數(shù)。該項(xiàng)目已經(jīng)有一個(gè)功能強(qiáng)大的Arduino腳本作為起點(diǎn),適合任何有興趣使用這個(gè)傳感器的人進(jìn)一步開發(fā)和測(cè)試。
傳感器的內(nèi)置智能數(shù)字算法。該傳感器具有三種不同的檢測(cè)模式:存在檢測(cè)、運(yùn)動(dòng)檢測(cè)和環(huán)境溫度沖擊檢測(cè),通過配置嵌入式函數(shù)寄存器,來實(shí)現(xiàn)嵌入式函數(shù)的參數(shù)調(diào)整。
最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請(qǐng):6_15061293 。
在這里插入圖片描述

視頻教學(xué)

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

樣品申請(qǐng)

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

視頻教程

參考Demo

https://github.com/STMicroelectronics/STMems_Standard_C_drivers/blob/master/sths34pf80_STdC/examples/sths34pf80_tmos_data_polling.c

參考Demo

hthttps://github.com/kriswiner/STHS34PF80/tree/main

完整代碼下載

https://download.csdn.net/download/qq_24312945/88257572

內(nèi)嵌函數(shù)地址

STHS34PF80傳感器中的內(nèi)嵌功能寄存器。這些寄存器可用于配置內(nèi)嵌算法,用于補(bǔ)償物體溫度中的環(huán)境溫度變化,以及內(nèi)嵌的智能數(shù)字算法。

在這里插入圖片描述

串口配置

查看原理圖,PA9和PA10設(shè)置為開發(fā)板的串口。
在這里插入圖片描述

配置串口。

在這里插入圖片描述

IIC配置

在這個(gè)應(yīng)用中,STS34PF80模塊通過I2C(IIC)接口與主控器通信。具體來說,STS34PF80模塊的I2C引腳連接到主控器的PB6(引腳B6)和PB7(引腳B7)兩個(gè)IO口。
在這里插入圖片描述

配置IIC為普通模式,速度為100k。

在這里插入圖片描述

IO口設(shè)置

STS34PF80IO設(shè)置如下所示。
在IIC模式下CS需要給個(gè)高電平。
在這里插入圖片描述
官方提供IIC接線如下所示。
在這里插入圖片描述
在這里插入圖片描述
需要把PA8配置為輸出模式,默認(rèn)高電平,配置PA7為輸入模式。
在這里插入圖片描述

串口重定向

打開魔術(shù)棒,勾選MicroLIB
在這里插入圖片描述

在main.c中,添加頭文件,若不添加會(huì)出現(xiàn) identifier "FILE" is undefined報(bào)錯(cuò)。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函數(shù)聲明和串口重定向:

/* 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 */

參考程序初始化

在這里插入圖片描述

IIC寫函數(shù)

STHS34PF80地址為101 1010(0x5A),如果是寫操作,那么具體的地址為1011 0100(0xB4)。

/**
  * @brief  讀取數(shù)據(jù)
  *
  * @param  add   模塊地址
  * @param  reg   寄存器地址
  * @param  data  buffer 緩沖區(qū)
  * @param  len   讀取長(zhǎng)度
  * @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讀函數(shù)

STHS34PF80地址為101 1010(0x5A),如果是讀操作,那么具體的地址為1011 0101(0xB5)。

/**
  * @brief  寫入數(shù)據(jù)
  *
  * @param  add   模塊地址
  * @param  reg   寄存器地址
  * @param  data  buffer 緩沖區(qū)
  * @param  len   寫入長(zhǎng)度
  * @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

參考例程序中對(duì)應(yīng)的獲取ID驅(qū)動(dòng)程序,如下所示。
在這里插入圖片描述

獲取ID可以查看0x0F,讀出來的值應(yīng)該為0xD3。
在這里插入圖片描述

讀取函數(shù)如下所示。

/**
  * @brief  獲取設(shè)備ID
  *
  * @param  add      設(shè)備地址
  * @param  val      設(shè)備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];
}

驅(qū)動(dòng)如下所示。

uint8_t STHS34PF80_ID = STHS34PF80_getChipID(STHS34PF80_ADDRESS);  // Read CHIP_ID register for STHS34PF80
	printf("STHS34PF80_ID=0x%xn",STHS34PF80_ID);

設(shè)備的自動(dòng)引導(dǎo)過程和關(guān)機(jī)模式配置

在設(shè)備上電后,它會(huì)執(zhí)行一個(gè)2.5毫秒的引導(dǎo)過程,將校準(zhǔn)系數(shù)從嵌入式閃存下載到內(nèi)部寄存器,并加載AVG_TRIM(10h)、CTRL0(17h)和SENS_DATA(1Dh)寄存器的默認(rèn)內(nèi)容。在引導(dǎo)過程中,設(shè)備的寄存器是不可訪問的。
在這里插入圖片描述

引導(dǎo)完成后,設(shè)備會(huì)自動(dòng)配置為關(guān)機(jī)模式。在上電后,通過將CTRL2(21h)寄存器的BOOT位設(shè)置為1,可以重新啟動(dòng)引導(dǎo)過程,以重新加載上述寄存器的默認(rèn)值。無需對(duì)設(shè)備的電源線進(jìn)行切換操作。
在重新引導(dǎo)過程中,設(shè)備的寄存器是不可訪問的。重新引導(dǎo)完成后,設(shè)備會(huì)自動(dòng)配置為先前的工作模式,并且BOOT位會(huì)自動(dòng)清零為0。

在這里插入圖片描述
在這里插入圖片描述
修改后如下所示。

/**
  * @brief  傳感器重置
  *
  * @param  add      設(shè)備地址
  * @param  val      設(shè)備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */

uint8_t STHS34PF80_reset(uint8_t add)
{
  uint8_t temp = 0;
	int32_t  ret;
	//STHS34PF80_CTRL2- >0x21
	ret=sths34pf80_read_reg(add,STHS34PF80_CTRL2,  (uint8_t *)&temp, 1);
	if (ret == HAL_OK)
  {
		temp=temp | 0x80;
		ret = sths34pf80_write_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);// set bit 7 to force device reset, wait 2.5 ms for reboot
	
	}
	HAL_Delay(3);
  return ret;	
}

省電模式

下面文本描述了關(guān)機(jī)模式的使用和功能。關(guān)機(jī)模式是一種休眠模式,用于將傳感器設(shè)備置于休眠狀態(tài),從而節(jié)省功耗。在關(guān)機(jī)模式下,設(shè)備停止數(shù)據(jù)采集,并且大部分內(nèi)部模塊都被關(guān)閉,以最小化電流消耗。這使得傳感器在供電的情況下能夠?qū)崿F(xiàn)最低的功耗水平。

盡管設(shè)備處于關(guān)機(jī)模式,但它仍保持 I2C / SPI 通信串口處于活動(dòng)狀態(tài),以便能夠與設(shè)備進(jìn)行通信和配置設(shè)置。關(guān)機(jī)模式下,配置寄存器的內(nèi)容被保留,而輸出數(shù)據(jù)寄存器不會(huì)更新,這意味著在進(jìn)入關(guān)機(jī)模式前,最后一次采樣的數(shù)據(jù)將保留在內(nèi)存中。
為了進(jìn)入關(guān)機(jī)模式并避免在重新進(jìn)入連續(xù)模式時(shí)讀取錯(cuò)誤的輸出數(shù)據(jù),文本提供了正確的步驟。然而,這些步驟在你的問題中并未提供,因此無法給出完整的步驟。

在這里插入圖片描述
上面文檔主要對(duì)0x25,0x23,0x20寄存器進(jìn)行操作,其中讀取0x25多次,主要功能是對(duì)STATUS (23h)的DRDY進(jìn)行清0。
查看下面表格也可以得知,有多種操作可以對(duì)STATUS (23h)的DRDY 清零,其中讀取FUNC_STATUS (25h)可以清零DRDY。
在這里插入圖片描述

其中0x20是配置速率寄存器。
在這里插入圖片描述
參考文檔提供的關(guān)閉電源代碼如下所示。
在這里插入圖片描述

修改后如下。

void STHS34PF80_powerDown(uint8_t add)
{

	uint8_t stat = 0;
	//STHS34PF80_FUNC_STATUS- >0x25
	STHS34PF80_ReadByte(add,STHS34PF80_FUNC_STATUS);	// This is done to reset the DRDY bit of the STATUS (23h) register to 0

		
	//STHS34PF80_STATUS- >0x23	
	stat=STHS34PF80_ReadByte(add,STHS34PF80_STATUS);	
  while( (stat & 0x04) )
  {
		stat=STHS34PF80_ReadByte(add,STHS34PF80_STATUS);	
    HAL_Delay(1);
  } // wait for STATUS DR bit -- > 0	
	uint8_t temp=0;
	//STHS34PF80_CTRL1- >0x20
	temp=STHS34PF80_ReadByte(add,STHS34PF80_CTRL1);	
	STHS34PF80_WriteByte(add,STHS34PF80_CTRL1, temp & ~(0x07));//  set bits 0 - 3 to 0 to power downt
 	//STHS34PF80_FUNC_STATUS- >0x25
	STHS34PF80_ReadByte(add,STHS34PF80_FUNC_STATUS);	// reset DR bit of STATUS to 

}

溫度數(shù)據(jù)的靈敏度值

τ 表示光學(xué)系統(tǒng)在操作波長(zhǎng)范圍內(nèi)的透射率(取值范圍從0到1),SENSITIVITY DEFAULT 是對(duì)象溫度數(shù)據(jù)的默認(rèn)靈敏度值(通常約為2000 LSB/°C)。默認(rèn)的靈敏度值是通過使用黑體覆蓋傳感器的全視場(chǎng)而無需光學(xué)元件(即,τ = 1)進(jìn)行每個(gè)單元的校準(zhǔn)獲得的。
透射率的變化可能會(huì)影響傳感器的讀數(shù),因此在有光學(xué)元件的情況下使用傳感器時(shí),可能需要根據(jù)透射率調(diào)整或考慮靈敏度。
在這里插入圖片描述

可以讀取SENS_DATA (1Dh)寄存器進(jìn)行獲取。
在這里插入圖片描述
參考代碼如下所示。
在這里插入圖片描述

修改后如下。

/**
  * @brief  獲取設(shè)備靈敏度
  *
  * @param  add      設(shè)備地址
  * @param  val      設(shè)備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */


int16_t  STHS34PF80_readSenseData(uint8_t add)
{
   uint8_t temp = 0;
	int32_t  ret;	
	//STHS34PF80_SENS_DATA- >0x1D
	ret = sths34pf80_read_reg(add, STHS34PF80_SENS_DATA, (uint8_t *)&temp, 1);

	return (int16_t)((int16_t)temp < < 8 | 0x00);
}

主程序打印保存的數(shù)值。

// 獲取設(shè)備靈敏度
		ObjSense = (STHS34PF80_readSenseData(STHS34PF80_ADDRESS) / 16) + 2048;
		printf("Object Sense Data (LSB/oC) =%d n",ObjSense)

設(shè)置低通濾波器

配置低通濾波器可以通過LPF1 (0Ch)和LPF2 (0Dh)進(jìn)行配置。
在這里插入圖片描述

STHS34PF80內(nèi)置嵌入式算法,設(shè)備具有三種嵌入式的檢測(cè)模式,包括存在檢測(cè)、運(yùn)動(dòng)檢測(cè)和環(huán)境溫度沖擊檢測(cè)。
每種算法使用不同的低通濾波器 (LPF_P, LPF_M 和 LPF_A_T)。存在和運(yùn)動(dòng)檢測(cè)算法還共同使用另一個(gè)低通濾波器 (LPF_P_M)。這些濾波器用于生成中間信號(hào) (TPRESENCE, TMOTION 和 TAMB_SHOCK),可以用來微調(diào)算法本身。
在這里插入圖片描述
下面分別是存在檢測(cè)和運(yùn)動(dòng)檢測(cè)的框圖。
在這里插入圖片描述
在這里插入圖片描述

參考文檔設(shè)置如下所示。

在這里插入圖片描述

修改如下。

/**
  * @brief  設(shè)置低通濾波器
  *
  * @param  add      設(shè)備地址
  * @param  val      設(shè)備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */
uint8_t STHS34PF80_setLowpassFilters(uint8_t add,uint8_t lpf_P, uint8_t lpf_M, uint8_t lpf_PM, uint8_t lpf_Tshock)
{
	int32_t  ret;	
	uint8_t LPF1,LPF2;
	LPF1=lpf_PM < < 3 | lpf_M;
	LPF2=lpf_P  < < 3 | lpf_Tshock;
	//STHS34PF80_LPF1- >0x0C
	ret = sths34pf80_write_reg(add, STHS34PF80_LPF1, (uint8_t *)&LPF1, 1);
	if(ret==HAL_OK)
	{	//STHS34PF80_LPF2- >0x0D
		ret=sths34pf80_write_reg(add, STHS34PF80_LPF2, (uint8_t *)&LPF2, 1);
	
	}		
	return ret;	 

 }

溫度測(cè)量濾波方式

首先需要設(shè)置AVG_TRIM (10h) 寄存器用于配置溫度平均值濾波的參數(shù),以控制環(huán)境溫度和目標(biāo)溫度測(cè)量的平滑度和穩(wěn)定性。在溫度測(cè)量中,可能會(huì)受到噪聲和干擾的影響,這可能導(dǎo)致短期內(nèi)測(cè)量值的波動(dòng)。通過應(yīng)用平均值濾波,可以平滑這些波動(dòng),從而得到更加穩(wěn)定的溫度數(shù)據(jù)。AVG_TRIM 寄存器中的設(shè)置會(huì)決定平均值濾波的級(jí)別,從而影響濾波的時(shí)間常數(shù)以及平滑度。
這里默認(rèn)參數(shù)如下

  1. 在AVG_TRIM(10h)寄存器中寫入02h // AVG_T = 8,AVG_TMOS = 32
  2. 在CTRL1(20h)寄存器中寫入07h // ODR = 15 Hz
    在這里插入圖片描述

AVG_T[1:0]: 這個(gè)設(shè)置位用于選擇環(huán)境溫度的平均值濾波樣本數(shù)。
AVG_TMOS[2:0]: 這個(gè)設(shè)置位用于選擇目標(biāo)溫度的平均值濾波樣本數(shù)以及與之相關(guān)的噪聲水平。

在這里插入圖片描述

之后需要去設(shè)置溫度范圍,CTRL0 (17h)主要用于配置設(shè)備的增益,以適應(yīng)不同的操作溫度范圍。具體的增益設(shè)置將決定設(shè)備可以工作的溫度范圍。
值000表示寬模式(wide mode)。
值111表示默認(rèn)增益模式(default gain mode)。

在這里插入圖片描述

查看下表得知,當(dāng)房間和傳感器溫度差別不大時(shí)候,可以設(shè)置默認(rèn)增益模式。
在這里插入圖片描述
設(shè)置中斷可以通過CTRL3 (22h)寄存器來配置。
這個(gè)寄存器為系統(tǒng)提供了有關(guān)設(shè)備當(dāng)前狀態(tài)的關(guān)鍵信息,可以用于驅(qū)動(dòng)其他邏輯或觸發(fā)相應(yīng)的操作,如中斷服務(wù)例程。例如,PRES_FLAG可用于確定是否有人進(jìn)入了一個(gè)區(qū)域,MOT_FLAG可以用于檢測(cè)人體是否運(yùn)動(dòng),TAMB_SHOCK_FLAG可能用于環(huán)境監(jiān)控系統(tǒng)以捕捉突然的溫度變化。

在這里插入圖片描述
通過查看FUNC_STATUS (25h)可以得知,PRES_FLAG為存在檢測(cè),MOT_FLAG為運(yùn)動(dòng)檢測(cè),TAMB_SHOCK_FLAG為環(huán)境溫度沖擊檢測(cè)標(biāo)志。

在這里插入圖片描述

通過配置CTRL3 (22h)寄存器的IEN[1:0] 可以設(shè)置輸出模式。
IEN[1:0]位在CTRL3寄存器中,它定義了應(yīng)該將哪種信號(hào)路由到INT管腳(即中斷輸出):
00:INT管腳處于高阻態(tài)。
01:將DRDY(數(shù)據(jù)已準(zhǔn)備好的信號(hào))路由到INT管腳。
10:將INT_OR信號(hào)路由到INT管腳。
參考程序配置如下。

在這里插入圖片描述

修改后如下所示。

/**
  * @brief  設(shè)置溫度測(cè)量濾波方式
  *
  * @param  add      設(shè)備地址
  * @param  val      設(shè)備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */


uint8_t STHS34PF80_config(uint8_t add,uint8_t avgt, uint8_t avgtmos,  uint8_t gain, bool functions)
{
	int32_t	ret;
	uint8_t temp;
	uint8_t	AVG_TRIM;
	AVG_TRIM	= avgt < < 4 |  avgtmos;
	//STHS34PF80_AVG_TRIM- >0x10//設(shè)置濾波樣本數(shù)
	ret = sths34pf80_write_reg(add, STHS34PF80_AVG_TRIM, (uint8_t *)&AVG_TRIM, 1);	
		
	if(ret==HAL_OK)
	{//STHS34PF80_CTRL0- >0x17//設(shè)置溫度增益
		sths34pf80_read_reg(add, STHS34PF80_CTRL0, (uint8_t *)&temp, 1);	
		temp=temp | gain < < 4;
		ret = sths34pf80_write_reg(add, STHS34PF80_CTRL0, (uint8_t *)&temp, 1);	
		// Configure interrupt behavior
		// select active HIGH (bit 7 == 0), push-pull (bit 6 == 0), pulsed mode (bit 2 == 0)	
		temp=0x01;//STHS34PF80_CTRL3- >0x22
		ret = sths34pf80_write_reg(add, STHS34PF80_CTRL3, (uint8_t *)&temp, 1);	
		temp=0x3A;//0011 1010
//  if(functions) _i2c_bus- >writeByte(STHS34PF80_ADDRESS, STHS34PF80_CTRL3, 0x32 ); // configure INT_OR for either Presence or Motion detection
		if(functions)
			ret = sths34pf80_write_reg(add, STHS34PF80_CTRL3, (uint8_t *)&temp, 1);		
		
	}
	return ret;	 	
}

寫入嵌入式函數(shù)

嵌入式函數(shù)寫操作如下所示。
在這里插入圖片描述

案例實(shí)現(xiàn)如下。

在這里插入圖片描述

CTRL2 (21h)如下所示,對(duì)FUNC_CFG_ACCESS設(shè)置為1主要是開啟訪問內(nèi)嵌函數(shù)寄存器。

在這里插入圖片描述
寄存器PAGE_RW (11h)的FUNC_CFG_WRITE標(biāo)志位置為為1,啟用嵌入式函數(shù)的寫過程。
在這里插入圖片描述

/************開啟嵌入式函數(shù)讀寫************/	
	uint8_t temp ;	//STHS34PF80_CTRL2- >0x21
	sths34pf80_read_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);		 
	temp = 	temp | 0x10;//STHS34PF80_CTRL2- >0x21 //開啟嵌入式函數(shù)訪問
	sths34pf80_write_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);//允許訪問嵌入式函數(shù)寄存器
	temp = 	0x40;	//STHS34PF80_FUNC_PAGE_RW- >0x11 //開啟嵌入式函數(shù)寫操作
	sths34pf80_write_reg(add, STHS34PF80_FUNC_PAGE_RW, (uint8_t *)&temp, 1);	//允許寫入嵌入函數(shù)寄存器

寄存器FUNC_CFG_ADDR (08h)為配置嵌入式函數(shù)的地址,F(xiàn)UNC_CFG_DATA (09h)為傳入數(shù)據(jù)到嵌入式函數(shù)中。

在這里插入圖片描述

這里傳入的地址addr為STHS34PF80_PRESENCE_THS,這是個(gè)15位的寄存器,PRESENCE_THS 寄存器(地址范圍為 0x20 到 0x21)主要用于存在檢測(cè)算法的存在閾值設(shè)置。存在檢測(cè)算法用于判斷是否存在某種狀態(tài)或條件,通常與傳感器測(cè)量數(shù)據(jù)相關(guān)。
具體解釋如下:
存在閾值(Presence Threshold): 這是一個(gè)用于存在檢測(cè)算法的閾值。閾值定義了在測(cè)量數(shù)據(jù)中何時(shí)認(rèn)為存在某種條件。在這里,閾值是一個(gè) 15 位的無符號(hào)整數(shù)(范圍在 0 到 32767 之間)。
默認(rèn)值: 預(yù)設(shè)的存在閾值默認(rèn)值是 200(0x00C8)。
在這里插入圖片描述

/************設(shè)置存在閾值************/
	temp = 	STHS34PF80_PRESENCE_THS_L;//STHS34PF80_FUNC_CFG_ADDR- >0x08	嵌入式地址PRESENCE_THS (20h - 21h) 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為PRESENCE_THS_L
	temp =presence_ths ;//STHS34PF80_FUNC_CFG_DATA- >0x09
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入低字節(jié)	 
	temp = 	STHS34PF80_PRESENCE_THS_H;//STHS34PF80_FUNC_CFG_ADDR- >0x08  嵌入式地址PRESENCE_THS (20h - 21h)			 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為PRESENCE_THS_H
	temp = presence_ths > >8;		
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入高字節(jié)

MOTION_THS (22h - 23h) 這個(gè)寄存器用于設(shè)置運(yùn)動(dòng)檢測(cè)算法的閾值。在實(shí)際應(yīng)用中,你可能需要讀取或設(shè)置這個(gè)寄存器,以調(diào)整或查看運(yùn)動(dòng)檢測(cè)算法的閾值。如果值過高,可能會(huì)導(dǎo)致運(yùn)動(dòng)檢測(cè)不靈敏;而值過低則可能會(huì)導(dǎo)致誤報(bào)。這個(gè)值的范圍從0到32767。默認(rèn)值是200。
在這里插入圖片描述

/************設(shè)置運(yùn)動(dòng)閾值************/	 
	temp = 	STHS34PF80_MOTION_THS_L;//嵌入式地址MOTION_THS (22h - 23h)	 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為MOTION_THS_L
	temp = 	motion_ths ;		
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入低字節(jié)	 
	temp = 	STHS34PF80_MOTION_THS_H;//嵌入式地址MOTION_THS (22h - 23h)		 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為MOTION_THS_H
	temp = 	motion_ths > >8;		
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入高字節(jié)

TAMB_SHOCK_THS (24h - 25h)這個(gè)寄存器是用來設(shè)置環(huán)境溫度震蕩檢測(cè)算法的閾值。簡(jiǎn)而言之,當(dāng)環(huán)境溫度突然變化到某一程度時(shí)(超過這個(gè)設(shè)定的閾值),系統(tǒng)可能會(huì)認(rèn)為發(fā)生了一個(gè)"溫度震蕩"事件。這是一個(gè)15位的無符號(hào)整數(shù)。這意味著它的范圍是0到32767。
在這里插入圖片描述

/************設(shè)置環(huán)境溫度沖擊閾值************/	 
	temp = 	STHS34PF80_TAMB_SHOCK_THS_L;//嵌入式地址TAMB_SHOCK_THS (24h - 25h) 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為TAMB_SHOCK_THS_L
	temp = 	tamb_shock_ths ;		
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入低字節(jié)	 
	temp = 	STHS34PF80_TAMB_SHOCK_THS_H;//嵌入式地址TAMB_SHOCK_THS (24h - 25h)		 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為TAMB_SHOCK_THS_H
	temp = 	tamb_shock_ths > >8;		
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入高字節(jié)

HYST_PRESENCE (27h)這個(gè)寄存器是用來設(shè)置存在檢測(cè)算法的滯后配置值。滯后(hysteresis)在很多傳感器應(yīng)用中是一個(gè)重要的概念,它可以幫助減少由于小的或暫時(shí)的輸入變化而導(dǎo)致的輸出頻繁切換。簡(jiǎn)而言之,滯后會(huì)為傳感器的讀數(shù)提供一定的"容差",只有當(dāng)輸入值超過了這個(gè)容差范圍時(shí),輸出才會(huì)發(fā)生變化。這是一個(gè)8位的無符號(hào)整數(shù),所以它的范圍是0到255,默認(rèn)值是32。

在這里插入圖片描述

/************設(shè)置存在滯后值************/	 
	temp = 	STHS34PF80_HYST_PRESENCE;//嵌入式地址HYST_PRESENCE (27h)
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為HYST_PRESNCE
	temp = 	presence_hyst;		
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入1字節(jié)

HYST_MOTION (26h)這個(gè)寄存器用于設(shè)置運(yùn)動(dòng)檢測(cè)算法的滯后配置值。這是一個(gè)8位的無符號(hào)整數(shù),所以它的范圍是0到255,默認(rèn)值是32。

在這里插入圖片描述

/************設(shè)置運(yùn)動(dòng)滯后值************/	 
	temp = 	STHS34PF80_HYST_MOTION;//嵌入式地址HYST_MOTION (26h)
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為HYST_MOTION
	temp = 	motion_hyst;		
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入1字節(jié)

ALGO_CONFIG (28h)寄存器用于配置和調(diào)整算法的行為,包括中斷脈沖模式、溫度補(bǔ)償和存在檢測(cè)算法的絕對(duì)值選擇。適當(dāng)?shù)呐渲每梢允顾惴ǜm合特定應(yīng)用的需求。
INT_PULSED: 當(dāng)設(shè)置為1時(shí),算法產(chǎn)生的標(biāo)志會(huì)在INT引腳上脈沖輸出(高電平持續(xù)ODR定義的時(shí)間)。默認(rèn)值為0。
0: 鎖存模式
1: 脈沖模式
COMP_TYPE: 啟用內(nèi)置線性算法,用于在物體溫度中補(bǔ)償環(huán)境溫度變化。默認(rèn)值為0。
0: 禁用
1: 啟用
SEL_ABS: 在存在檢測(cè)算法中選擇絕對(duì)值。默認(rèn)值為0。
0: 不應(yīng)用絕對(duì)值
1: 應(yīng)用絕對(duì)值

在這里插入圖片描述
這里設(shè)置為脈沖輸出模式,將算法中斷設(shè)置為脈沖模式(位3 = 1)。

// set algorithm interrupt to pulsed mode (bit 3 = 1) or latch mode (bit 3 = 0)	
	/************設(shè)置脈沖模式************/	
	temp = 	STHS34PF80_ALGO_CONFIG;//嵌入式地址ALGO_CONFIG (28h)
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為ALGO_CONFIG
	temp = 	0x08;		
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//寫入0x08(位3)使能脈沖模式

最后關(guān)閉嵌入式寫操作。

/************關(guān)閉嵌入式函數(shù)讀寫************/	
	temp = 	0x00;//STHS34PF80_FUNC_PAGE_RW- >0x11 //關(guān)閉嵌入式函數(shù)寫
	sths34pf80_write_reg(add, STHS34PF80_FUNC_PAGE_RW, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為STHS34PF80_FUNC_PAGE_RW
	//STHS34PF80_CTRL2- >0x21 //讀取CTRL2 (21h)
	sths34pf80_read_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);		
	temp = temp & ~(0x10);		//STHS34PF80_CTRL2- >0x21 //清除FUNC_CFG_ACCESS
	sths34pf80_write_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);

讀取嵌入式函數(shù)

嵌入式函數(shù)讀操作如下所示。
在這里插入圖片描述
案例實(shí)現(xiàn)如下。
在這里插入圖片描述

CTRL2 (21h)如下所示,對(duì)FUNC_CFG_ACCESS設(shè)置為1主要是開啟訪問內(nèi)嵌函數(shù)寄存器。

在這里插入圖片描述
寄存器PAGE_RW (11h)的FUNC_CFG_READ標(biāo)志位置為為1,啟用嵌入式函數(shù)的讀過程。

在這里插入圖片描述

uint8_t rawData[2] = {0, 0};  // register data stored here	
	uint8_t temp ;	//STHS34PF80_CTRL2- >0x21
	sths34pf80_read_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);	
	temp = 	temp | 0x10;//STHS34PF80_CTRL2- >0x21 //開啟嵌入式函數(shù)訪問
	sths34pf80_write_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);//允許訪問嵌入式函數(shù)寄存器	
	temp = 	0x20;	//STHS34PF80_FUNC_PAGE_RW- >0x11 //開啟嵌入式函數(shù)讀操作
	sths34pf80_write_reg(add, STHS34PF80_FUNC_PAGE_RW, (uint8_t *)&temp, 1);	//允許寫入嵌入函數(shù)寄存器

寄存器FUNC_CFG_ADDR (08h)為配置嵌入式函數(shù)的地址,F(xiàn)UNC_CFG_DATA (09h)為傳入數(shù)據(jù)到嵌入式函數(shù)中。
在這里插入圖片描述

這里傳入的地址addr為STHS34PF80_PRESENCE_THS,這是個(gè)15位的寄存器,PRESENCE_THS 寄存器(地址范圍為 0x20 到 0x21)主要用于存在檢測(cè)算法的存在閾值設(shè)置。存在檢測(cè)算法用于判斷是否存在某種狀態(tài)或條件,通常與傳感器測(cè)量數(shù)據(jù)相關(guān)。
在這里插入圖片描述

/************讀取存在閾值************/
	temp = 	STHS34PF80_PRESENCE_THS_L;//嵌入式地址PRESENCE_THS (20h - 21h)		 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為PRESENCE_THS_L
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[0], 1);	
	temp = 	STHS34PF80_PRESENCE_THS_H;//嵌入式地址PRESENCE_THS (20h - 21h)	
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為PRESENCE_THS_H	
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[1], 1);		
	dest[0]  =  (uint16_t)(((uint16_t)rawData[1]) < < 8 | rawData[0]);

MOTION_THS (22h - 23h) 這個(gè)寄存器用于設(shè)置運(yùn)動(dòng)檢測(cè)算法的閾值。在實(shí)際應(yīng)用中,你可能需要讀取或設(shè)置這個(gè)寄存器,以調(diào)整或查看運(yùn)動(dòng)檢測(cè)算法的閾值。如果值過高,可能會(huì)導(dǎo)致運(yùn)動(dòng)檢測(cè)不靈敏;而值過低則可能會(huì)導(dǎo)致誤報(bào)。這個(gè)值的范圍從0到32767。默認(rèn)值是200。
在這里插入圖片描述

/************讀取運(yùn)動(dòng)閾值************/	 
	temp = 	STHS34PF80_MOTION_THS_L;//嵌入式地址MOTION_THS (22h - 23h)	 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為MOTION_THS_L
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[0], 1);	
	temp = 	STHS34PF80_MOTION_THS_H;//嵌入式地址MOTION_THS (22h - 23h)		 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為MOTION_THS_H
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[1], 1);		
  dest[1]  =  (uint16_t)(((uint16_t)rawData[1]) < < 8 | rawData[0]);

TAMB_SHOCK_THS (24h - 25h)這個(gè)寄存器是用來設(shè)置環(huán)境溫度震蕩檢測(cè)算法的閾值。簡(jiǎn)而言之,當(dāng)環(huán)境溫度突然變化到某一程度時(shí)(超過這個(gè)設(shè)定的閾值),系統(tǒng)可能會(huì)認(rèn)為發(fā)生了一個(gè)"溫度震蕩"事件。這是一個(gè)15位的無符號(hào)整數(shù)。這意味著它的范圍是0到32767。

在這里插入圖片描述

/************讀取環(huán)境溫度沖擊閾值************/	 
	temp = 	STHS34PF80_TAMB_SHOCK_THS_L;//嵌入式地址TAMB_SHOCK_THS (24h - 25h) 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為TAMB_SHOCK_THS_L
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[0], 1);	
	temp = 	STHS34PF80_TAMB_SHOCK_THS_H;	//嵌入式地址TAMB_SHOCK_THS (24h - 25h) 		 
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為TAMB_SHOCK_THS_H
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[1], 1);	
	dest[2]  =  (uint16_t)(((uint16_t)rawData[1]) < < 8 | rawData[0]);

HYST_MOTION (26h)這個(gè)寄存器用于設(shè)置運(yùn)動(dòng)檢測(cè)算法的滯后配置值。這是一個(gè)8位的無符號(hào)整數(shù),所以它的范圍是0到255,默認(rèn)值是32。

在這里插入圖片描述

/************讀取運(yùn)動(dòng)滯后值************/	 
	temp = 	STHS34PF80_HYST_MOTION;//嵌入式地址HYST_MOTION (26h)
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為HYST_MOTION
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[0], 1);

HYST_PRESENCE (27h)這個(gè)寄存器是用來設(shè)置存在檢測(cè)算法的滯后配置值。滯后(hysteresis)在很多傳感器應(yīng)用中是一個(gè)重要的概念,它可以幫助減少由于小的或暫時(shí)的輸入變化而導(dǎo)致的輸出頻繁切換。簡(jiǎn)而言之,滯后會(huì)為傳感器的讀數(shù)提供一定的"容差",只有當(dāng)輸入值超過了這個(gè)容差范圍時(shí),輸出才會(huì)發(fā)生變化。這是一個(gè)8位的無符號(hào)整數(shù),所以它的范圍是0到255,默認(rèn)值是32。

在這里插入圖片描述

/************讀取存在滯后值************/	 
	temp = 	STHS34PF80_HYST_PRESENCE;//嵌入式地址HYST_PRESENCE (27h)
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為HYST_PRESNCE
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[1], 1);	 
  dest[3]  =  (uint16_t)(((uint16_t)rawData[1]) < < 8 | rawData[0]);

ALGO_CONFIG (28h)寄存器用于配置和調(diào)整算法的行為,包括中斷脈沖模式、溫度補(bǔ)償和存在檢測(cè)算法的絕對(duì)值選擇。適當(dāng)?shù)呐渲每梢允顾惴ǜm合特定應(yīng)用的需求。
INT_PULSED: 當(dāng)設(shè)置為1時(shí),算法產(chǎn)生的標(biāo)志會(huì)在INT引腳上脈沖輸出(高電平持續(xù)ODR定義的時(shí)間)。默認(rèn)值為0。
0: 鎖存模式
1: 脈沖模式
COMP_TYPE: 啟用內(nèi)置線性算法,用于在物體溫度中補(bǔ)償環(huán)境溫度變化。默認(rèn)值為0。
0: 禁用
1: 啟用
SEL_ABS: 在存在檢測(cè)算法中選擇絕對(duì)值。默認(rèn)值為0。
0: 不應(yīng)用絕對(duì)值
1: 應(yīng)用絕對(duì)值

在這里插入圖片描述

這里設(shè)置為脈沖輸出模式,將算法中斷設(shè)置為脈沖模式(位3 = 1)。

// set algorithm interrupt to pulsed mode (bit 3 = 1) or latch mode (bit 3 = 0)	
	/************讀取脈沖模式************/	
	temp = 	STHS34PF80_ALGO_CONFIG;//嵌入式地址ALGO_CONFIG (28h)
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為ALGO_CONFIG
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[0], 1);

HYST_TAMB_SHOCK (29h)寄存器用于設(shè)置環(huán)境溫度突變檢測(cè)算法的滯后配置值。滯后(hysteresis)在傳感器應(yīng)用中很常見,用于防止小范圍、暫時(shí)的信號(hào)變化而導(dǎo)致的輸出頻繁切換。通過為傳感器的讀數(shù)提供一個(gè)“容差”,滯后確保只有當(dāng)輸入值超出這個(gè)容差范圍時(shí),輸出才會(huì)發(fā)生變化。這是一個(gè)8位的無符號(hào)整數(shù),意味著它的范圍是0到255。

在這里插入圖片描述

/************讀取環(huán)境溫度滯后值************/	 
	temp = 	STHS34PF80_HYST_TAMB_SHOCK;//嵌入式地址HYST_TAMB_SHOCK (29h)
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為HYST_TAMB_SHOCK
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&rawData[1], 1);	
  dest[4]  =  (uint16_t)(((uint16_t)rawData[1]) < < 8 | rawData[0]);

最后關(guān)閉嵌入式寫操作。

/************設(shè)置中斷模式************/	
	temp = 	0x00;//STHS34PF80_FUNC_PAGE_RW- >0x11 //關(guān)閉嵌入式函數(shù)寫
	sths34pf80_write_reg(add, STHS34PF80_FUNC_PAGE_RW, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為STHS34PF80_FUNC_PAGE_RW
	//STHS34PF80_CTRL2- >0x21 //讀取CTRL2 (21h)
	sths34pf80_read_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);		
	temp = temp & ~(0x10);		//STHS34PF80_CTRL2- >0x21 //清除BOOT和ONE_SHOT
	sths34pf80_write_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);

重置模塊

當(dāng)更改與算法相關(guān)的參數(shù)或?yàn)V波器的截止頻率,或當(dāng)啟用/禁用嵌入式補(bǔ)償算法時(shí),需要按照上述步驟重置算法。這個(gè)過程涉及進(jìn)入掉電模式、更改算法配置、啟用和禁用嵌入式功能寄存器的訪問和寫操作,并在最后的步驟中設(shè)置所需的輸出數(shù)據(jù)速率或觸發(fā)單次采集。
在這里插入圖片描述
在這里插入圖片描述

/**
  * @brief  重置STHS34PF80傳感器內(nèi)置的算法
  *
  * @param  add      設(shè)備地址
  * @param  val      設(shè)備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */ 
void STHS34PF80_resetAlgo(uint8_t add)
{
	uint8_t temp ;	 //STHS34PF80_CTRL2- >0x21 //讀取CTRL2 (21h)
	sths34pf80_read_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);		 
	temp= temp | 0x10;//STHS34PF80_CTRL2- >0x21 //開啟嵌入式函數(shù)訪問
	sths34pf80_write_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);//允許訪問嵌入式函數(shù)寄存器	 
	temp = 	0x40;	//STHS34PF80_FUNC_PAGE_RW- >0x11 //開啟嵌入式函數(shù)寫操作
	sths34pf80_write_reg(add, STHS34PF80_FUNC_PAGE_RW, (uint8_t *)&temp, 1);	//允許寫入嵌入函數(shù)寄存器	 	 

	temp = 	STHS34PF80_RESET_ALGO;//嵌入式地址STHS34PF80_RESET_ALGO (2Ah)	
	sths34pf80_write_reg(add, STHS34PF80_FUNC_CFG_ADDR, (uint8_t *)&temp, 1);	//設(shè)置嵌入式寄存器地址為STHS34PF80_RESET_ALGO
	temp = 0x01;
	sths34pf80_read_reg(add, STHS34PF80_FUNC_CFG_DATA, (uint8_t *)&temp, 1);//設(shè)置ALGO_ENABLE_RESET位	

	temp = 	0x00;//STHS34PF80_FUNC_PAGE_RW- >0x11 //關(guān)閉嵌入式函數(shù)寫
	sths34pf80_write_reg(add, STHS34PF80_FUNC_PAGE_RW, (uint8_t *)&temp, 1);//設(shè)置嵌入式寄存器地址為STHS34PF80_FUNC_PAGE_RW
	//STHS34PF80_CTRL2- >0x21 //讀取CTRL2 (21h)
	sths34pf80_read_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);		
	temp = temp & ~(0x10);		//STHS34PF80_CTRL2- >0x21 //清除FUNC_CFG_ACCESS
	sths34pf80_write_reg(add, STHS34PF80_CTRL2, (uint8_t *)&temp, 1);	

 }

最后第九步需要設(shè)置BDU速率。

在這里插入圖片描述

/**
  * @brief  關(guān)閉低功耗,進(jìn)入正常模式,設(shè)置ODR
  *
  * @param  add      設(shè)備地址
  * @param  val      設(shè)備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */
uint8_t STHS34PF80_powerUp(uint8_t add,uint8_t odr) 
{
	uint8_t temp = 0;	
	int32_t  ret;		//STHS34PF80_CTRL1- >0x20
	ret = sths34pf80_read_reg(add, STHS34PF80_CTRL1, (uint8_t *)&temp, 1);
	temp=temp | 0x10 | odr;//  set bdu = 1 (bit 4 == 1) and odr
	if(ret==HAL_OK)
		ret = sths34pf80_write_reg(add, STHS34PF80_CTRL1, (uint8_t *)&temp, 1);
	return ret; 

}

清零DRDY

可以通過讀取0x25,主要功能是對(duì)STATUS (23h)的DRDY進(jìn)行清0。
查看下面表格也可以得知,有多種操作可以對(duì)STATUS (23h)的DRDY 清零。

在這里插入圖片描述

/**
  * @brief  清零DRDY
  *
  * @param  add      設(shè)備地址
  * @param  val      設(shè)備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */
uint8_t STHS34PF80_getFuncStatus(uint8_t add)
{
	uint8_t temp = 0;//STHS34PF80_FUNC_STATUS- >0x25
	sths34pf80_read_reg(add, STHS34PF80_FUNC_STATUS, (uint8_t *)&temp, 1);

   return temp;
  }

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2696

    瀏覽量

    47439
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19111

    瀏覽量

    304883
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4329

    瀏覽量

    62578
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    283

    瀏覽量

    14792
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于STM32CUBEMX驅(qū)動(dòng)TMOS模塊STHS34PF80(1)----獲取ID

    STHS34PF80 是一款非冷卻、工廠校準(zhǔn)的紅外運(yùn)動(dòng)和存在檢測(cè)傳感器,工作波長(zhǎng)在 5 μm 至 20 μm 之間。
    的頭像 發(fā)表于 12-01 15:28 ?8107次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(1)----獲取ID

    基于STM32CUBEMX驅(qū)動(dòng)TMOS模塊STHS34PF80(2)----驅(qū)動(dòng)STHS34PF80進(jìn)行人體檢測(cè)

    STHS34PF80 是一款非冷卻、工廠校準(zhǔn)的紅外運(yùn)動(dòng)和存在檢測(cè)傳感器,工作波長(zhǎng)在 5 μm 至 20 μm 之間。STHS34PF80 傳感器設(shè)計(jì)用于測(cè)量視野內(nèi)物體發(fā)出的紅外輻射量。該信息由
    的頭像 發(fā)表于 12-01 15:29 ?756次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(2)----<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>STHS34PF80</b>進(jìn)行人體檢測(cè)

    基于STM32CUBEMX驅(qū)動(dòng)TMOS模塊STHS34PF80(3)----修改檢測(cè)閾值

    用于配置和設(shè)置 STHS34PF80 傳感器的一些參數(shù),以便進(jìn)行存在檢測(cè)和運(yùn)動(dòng)檢測(cè)。
    的頭像 發(fā)表于 12-01 15:30 ?695次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(3)----修改檢測(cè)閾值

    基于STM32CUBEMX驅(qū)動(dòng)TMOS模塊STHS34PF80(4)----中斷獲取信號(hào)

    SHS34PF80的數(shù)據(jù)準(zhǔn)備信號(hào)提供了一種機(jī)制,允許設(shè)備在新的測(cè)量數(shù)據(jù)可讀取時(shí)通知系統(tǒng),并觸發(fā)同步操作,通過正確配置相關(guān)寄存器,可以確保系統(tǒng)及時(shí)捕獲和處理來自設(shè)備的新數(shù)據(jù),從而提高整體性能和響應(yīng)能力。
    的頭像 發(fā)表于 12-01 15:31 ?6303次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(4)----中斷獲取信號(hào)

    基于STM32CUBEMX驅(qū)動(dòng)TMOS模塊STHS34PF80(6)----獲取狀態(tài)數(shù)據(jù)

    STHS34PF80傳感器項(xiàng)目種修改 Arduino 腳本,重新移植到STM32的MCU中。 該項(xiàng)目基于STHS34PF80 IR溫度傳感器,能夠檢測(cè)環(huán)境和物體溫度,并且在最大4米范圍內(nèi)檢測(cè)存在
    的頭像 發(fā)表于 12-01 15:39 ?630次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(6)----獲取狀態(tài)數(shù)據(jù)

    STHS34PF80高靈敏度紅外感應(yīng)器(2)----InfraredPD存在感應(yīng)檢測(cè)

    InfraredPD 主要作用是通過與 STHS34PF80 紅外傳感器配合,提供對(duì)存在感應(yīng)和運(yùn)動(dòng)檢測(cè)的支持,同時(shí)對(duì)傳感器獲取的物體溫度數(shù)據(jù)進(jìn)行環(huán)境溫度變化補(bǔ)償。InfraredPD庫通過
    的頭像 發(fā)表于 10-14 11:10 ?966次閱讀
    <b class='flag-5'>STHS34PF80</b>高靈敏度紅外感應(yīng)器(2)----InfraredPD存在感應(yīng)檢測(cè)

    通過STEVAL-MKI109V3在unico上識(shí)別不到STHS34PF80是為什么?怎么處理?

    TMOS測(cè)試:通過STEVAL-MKI109V3在unico上識(shí)別不到STHS34PF80。
    發(fā)表于 03-26 08:31

    STM32CubeMX和HAL驅(qū)動(dòng)庫的嵌入式系統(tǒng)設(shè)計(jì)淺談

    課程 | 基于STM32CubeMX和HAL驅(qū)動(dòng)庫的嵌入式系統(tǒng)設(shè)計(jì)
    的頭像 發(fā)表于 01-09 13:59 ?4058次閱讀

    課程 | 基于STM32CubeMX和HAL驅(qū)動(dòng)庫的嵌入式系統(tǒng)設(shè)計(jì)

    幫成都這邊一位老師友情分享一篇免費(fèi)課程:基于STM32CubeMX和HAL驅(qū)動(dòng)庫的嵌入式系統(tǒng)設(shè)計(jì)。如果想學(xué)習(xí)本課程,可以從文末給出的鏈接,或底部“閱讀原文”進(jìn)入報(bào)名,免費(fèi)學(xué)習(xí)。1.課程詳...
    發(fā)表于 11-03 19:51 ?32次下載
    課程 | 基于<b class='flag-5'>STM32CubeMX</b>和HAL<b class='flag-5'>驅(qū)動(dòng)</b>庫的<b class='flag-5'>嵌入式</b>系統(tǒng)設(shè)計(jì)

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX
    發(fā)表于 11-29 16:06 ?55次下載
    <b class='flag-5'>STM32</b>F407的串口UART 基礎(chǔ)<b class='flag-5'>配置</b><b class='flag-5'>STM32CubeMX</b>

    STM32CUBEMX配置教程(一)基礎(chǔ)配置

    STM32CUBEMX配置教程合集(一)
    發(fā)表于 12-14 18:41 ?17次下載
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>配置</b>教程(一)基礎(chǔ)<b class='flag-5'>配置</b>

    (轉(zhuǎn))STM32CubeMX教程之簡(jiǎn)介及基本使用

    |本文轉(zhuǎn)自:STM32CubeMX教程之簡(jiǎn)介及基本使用 - 嵌入式開發(fā)愛好者 - CSDN博客 https://blog.csdn.net/angelobaby/article/details
    發(fā)表于 12-27 18:47 ?29次下載
    (轉(zhuǎn))<b class='flag-5'>STM32CubeMX</b>教程之簡(jiǎn)介及基本使用

    使用stm32cubemx的usb-host-cdc庫驅(qū)動(dòng)EC20模塊

    使用stm32cubemx的usb-host-cdc庫驅(qū)動(dòng)EC20模塊開發(fā)環(huán)境:實(shí)現(xiàn)功能:開始1、使用STM32CubeMX配置工程,生成基
    發(fā)表于 12-28 19:48 ?41次下載
    使用<b class='flag-5'>stm32cubemx</b>的usb-host-cdc庫<b class='flag-5'>驅(qū)動(dòng)</b>EC20<b class='flag-5'>模塊</b>

    意法半導(dǎo)發(fā)布了新型人體存在和移動(dòng)檢測(cè)芯片:STHS34PF80

    近期,意法半導(dǎo)發(fā)布了新型人體存在和移動(dòng)檢測(cè)芯片:STHS34PF80,它是一款帶有微加工熱敏晶體管(TMOS)的高集成度、超低功耗的紅外(IR)傳感器,可取代傳統(tǒng)的被動(dòng)紅外(PIR)傳感技術(shù),提升安保監(jiān)視系統(tǒng)、家庭自動(dòng)化設(shè)備和物聯(lián)網(wǎng)設(shè)備等場(chǎng)景的的監(jiān)測(cè)性能。
    的頭像 發(fā)表于 07-30 09:47 ?1722次閱讀

    基于ST 紅外傳感器STHS34PF80 搭配菲涅爾透鏡針對(duì)投影機(jī)應(yīng)用方案

    STHS34PF80 是一款紅外線感測(cè)器,可用于偵測(cè)靜止和移動(dòng)物體的存及超溫條件。它采用獨(dú)特的 TMOS 技術(shù)測(cè)量物體的紅外線輻射,當(dāng)物體位于視野內(nèi)時(shí)檢測(cè)其存在或移動(dòng)。
    的頭像 發(fā)表于 01-30 14:16 ?955次閱讀
    基于ST 紅外傳感器<b class='flag-5'>STHS34PF80</b> 搭配菲涅爾透鏡針對(duì)投影機(jī)應(yīng)用方案
    主站蜘蛛池模板: 99re精品视频在线播放视频| 极品少妇粉嫩小泬啪啪AV| 欧美性情video sexo视频| 尤物yw193can入口| 娇妻中日久久持久久| 亚洲成人日韩| 国产伦子沙发午休系列资源曝光 | 少女free大陆| 东京热一本无码av| 青柠在线观看视频在线| bl被教练啪到哭H玉势| 暖暖在线观看播放视频| 97精品国产亚洲AV超碰| 久久视热频国只有精品| 一区二区三区毛AAAA片特级| 精品视频免费在线| 小p孩玩成年女性啪啪资源| 纯肉小黄文高H| 久久精品一区| 99久久婷婷国产麻豆精品电影| 极品少妇高潮啪啪无码吴梦| 日韩欧美一区二区中文字幕| 91av电影在线观看| 久久国产乱子伦免费精品 | 久久久久久久久性潮| 欧美xx69| 91天仙tv嫩模福利| 久久影院中文字幕| 亚洲国产日韩制服在线观看| 1000视频在线播放 | 男人扒开添女人下部口述| 91久久综合精品国产丝袜长腿| 绿巨人www| 99久久国产露脸精品麻豆| 嫩草亚洲国产精品| NANANA在线观看高清影院| 日本女人bbb| 国产扒开美女双腿屁股流白浆| 偷拍国产精品在线播放| 国产香蕉视频| 一个人在线观看的视频|