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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32CUBEMX驅動TMOS模塊STHS34PF80(4)----中斷獲取信號

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2023-12-01 15:31 ? 次閱讀

概述

HS34PF80的數據準備信號提供了一種機制,允許設備在新的測量數據可讀取時通知系統,并觸發同步操作,通過正確配置相關寄存器,可以確保系統及時捕獲和處理來自設備的新數據,從而提高整體性能和響應能力。
檢測人體的存在和動作,并通過特定的通信接口發送檢測結果。
最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請:615061293 。
在這里插入圖片描述

樣品申請

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

視頻教程

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

參考Demo

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

完整代碼下載

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

參考程序中斷

在這里插入圖片描述

中斷生成

STHS34PF80具有一個可配置的內置中斷生成塊,允許基于溫度數據樣本和嵌入式智能數字算法的輸出標志生成中斷事件。
STHS34PF80提供了一個專門的INT引腳,用于通知數據是否準備好。您可以通過配置相關寄存器,將數據準備好的信號(DRDY信號)路由到這個INT引腳。當新的測量數據可讀取時,這個引腳會被觸發,從而允許系統知道數據已經準備好并可供進一步的處理和讀取。
在這里插入圖片描述

設置中斷

設置中斷可以通過CTRL3 (22h)寄存器來配置。
這個寄存器為系統提供了有關設備當前狀態的關鍵信息,可以用于驅動其他邏輯或觸發相應的操作,如中斷服務例程。例如,PRES_FLAG可用于確定是否有人進入了一個區域,MOT_FLAG可以用于檢測人體是否運動,TAMB_SHOCK_FLAG可能用于環境監控系統以捕捉突然的溫度變化。
在這里插入圖片描述

通過查看FUNC_STATUS (25h)可以得知,PRES_FLAG為存在檢測,MOT_FLAG為運動檢測,TAMB_SHOCK_FLAG為環境溫度沖擊檢測標志。
在這里插入圖片描述

開啟存在檢測中斷輸出

sths34pf80_tmos_int_or_set 的主要目的是配置STHS34PF80設備的中斷輸出。它是用于設置和管理中斷標志,其中STHS34PF80_TMOS_INT_PRESENCE為0x4,就是使能INT_MSK2為1,開啟PRES_FLAG存在檢測。

/* Set interrupt */
  sths34pf80_tmos_int_or_set(STHS34PF80_ADDRESS, STHS34PF80_TMOS_INT_PRESENCE);

具體操作函數如下所示。

/**
  * @brief  Selects interrupts output.[set]
  *
  * @param  ctx      read / write interface definitions
  * @param  val      TMOS_INT_NONE, TMOS_INT_TSHOCK, TMOS_INT_MOTION, TMOS_INT_TSHOCK_MOTION, TMOS_INT_PRESENCE, TMOS_INT_TSHOCK_PRESENCE, TMOS_INT_MOTION_PRESENCE, TMOS_INT_ALL,
  * @retval          interface status (MANDATORY: return 0 - > no Error)
  *
  */
uint8_t sths34pf80_tmos_int_or_set(uint8_t add, sths34pf80_tmos_int_or_t val)
{
  sths34pf80_ctrl3_t ctrl3;
  int32_t ret;

  ret = sths34pf80_read_reg(add, STHS34PF80_CTRL3, (uint8_t *)&ctrl3, 1);

  if (ret == HAL_OK)
  {
    ctrl3.int_msk = ((uint8_t)val & 0x7U);
    ret = sths34pf80_write_reg(add, STHS34PF80_CTRL3, (uint8_t *)&ctrl3, 1);
  }

  return ret;
}

配置中斷管腳

通過配置CTRL3 (22h)寄存器的IEN[1:0] 可以設置輸出模式。
IEN[1:0]位在CTRL3寄存器中,它定義了應該將哪種信號路由到INT管腳(即中斷輸出):
00:INT管腳處于高阻態。
01:將DRDY(數據已準備好的信號)路由到INT管腳。
10:將INT_OR信號路由到INT管腳。
這里通過將CTRL3(22h)寄存器的IEN[1:0]位范圍設置為10,可以將STATUS(23h)寄存器的DRDY位的值驅動到INT引腳,操作如下所示。

sths34pf80_tmos_route_int_set(STHS34PF80_ADDRESS, STHS34PF80_TMOS_INT_OR);

具體的操作函數如下所示。這個函數基本上對應之前提到的IEN[1:0]位的功能,它允許用戶選擇要路由到中斷輸出管腳的特定中斷信號。

/**
  * @defgroup Interrupt PINs
  * @brief    Interrupt PINs
  * @{/
  *
  */
/**
  * @brief  Selects interrupts to be routed.[set]
  *
  * @param  ctx      read / write interface definitions
  * @param  val      TMOS_INT_HIZ, TMOS_INT_DRDY, TMOS_INT_OR,
  * @retval          interface status (MANDATORY: return 0 - > no Error)
  *
  */
uint8_t sths34pf80_tmos_route_int_set(uint8_t add,  sths34pf80_tmos_route_int_t val)
{
  sths34pf80_ctrl3_t ctrl3;
  int32_t ret;

  ret = sths34pf80_read_reg(add, STHS34PF80_CTRL3, (uint8_t *)&ctrl3, 1);

  if (ret == HAL_OK)
  {
    ctrl3.ien = ((uint8_t)val & 0x3U);
    if (val == STHS34PF80_TMOS_INT_OR) {
      ctrl3.int_latched = 0; /* guarantee that latched is zero in INT_OR case */
    }
    ret = sths34pf80_write_reg(add, STHS34PF80_CTRL3, (uint8_t *)&ctrl3, 1);
  }

  return ret;
}

主程序

初始化如下。

/* USER CODE BEGIN 2 */
 sths34pf80_lpf_bandwidth_t lpf_m, lpf_p, lpf_p_m, lpf_a_t;	
  sths34pf80_tmos_drdy_status_t status;	
  sths34pf80_tmos_func_status_t func_status;	
	
	
	
	
	HAL_Delay(200);	
	printf("123");
	uint8_t STHS34PF80_ID =STHS34PF80_getChipID(STHS34PF80_ADDRESS);
	printf("STHS34PF80_ID=0x%xn",STHS34PF80_ID);	
	if (STHS34PF80_ID != 0xD3)
    while(1);
/* Set averages (AVG_TAMB = 8, AVG_TMOS = 32) */
  sths34pf80_avg_tobject_num_set(STHS34PF80_ADDRESS, STHS34PF80_AVG_TMOS_32);
  sths34pf80_avg_tambient_num_set(STHS34PF80_ADDRESS, STHS34PF80_AVG_T_8);

  /* read filters */
  sths34pf80_lpf_m_bandwidth_get(STHS34PF80_ADDRESS, &lpf_m);
  sths34pf80_lpf_p_bandwidth_get(STHS34PF80_ADDRESS, &lpf_p);
  sths34pf80_lpf_p_m_bandwidth_get(STHS34PF80_ADDRESS, &lpf_p_m);
  sths34pf80_lpf_a_t_bandwidth_get(STHS34PF80_ADDRESS, &lpf_a_t);

printf("lpf_m: %02d, lpf_p: %02d, lpf_p_m: %02d, lpf_a_t: %02drn", lpf_m, lpf_p, lpf_p_m, lpf_a_t);
	
	  /* Set BDU */
  sths34pf80_block_data_update_set(STHS34PF80_ADDRESS, 1);
	sths34pf80_tmos_route_int_set(STHS34PF80_ADDRESS, STHS34PF80_TMOS_INT_OR);

	
	sths34pf80_presence_threshold_set(STHS34PF80_ADDRESS, 20);	//設置存在閾值。
  sths34pf80_presence_hysteresis_set(STHS34PF80_ADDRESS, 2);//“存在滯后”(Presence Hysteresis)的函數
  sths34pf80_motion_threshold_set(STHS34PF80_ADDRESS, 30);//設置動作閾值
  sths34pf80_motion_hysteresis_set(STHS34PF80_ADDRESS, 3);	////動作滯后”(Motion Hysteresis)的函數
	
  /* Set interrupt */
  sths34pf80_tmos_int_or_set(STHS34PF80_ADDRESS, STHS34PF80_TMOS_INT_PRESENCE);
	sths34pf80_tmos_route_int_set(STHS34PF80_ADDRESS, STHS34PF80_TMOS_INT_OR);
	
	
  /* Set ODR */
  sths34pf80_tmos_odr_set(STHS34PF80_ADDRESS, STHS34PF80_TMOS_ODR_AT_30Hz);

    int32_t cnt = 0;
  /* USER CODE END 2 */

main函數如下所示。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
//    sths34pf80_tmos_drdy_status_get(STHS34PF80_ADDRESS, &status);
//    if (status.drdy)
//    {
//      sths34pf80_tmos_func_status_get(STHS34PF80_ADDRESS, &func_status);
//			printf("-- >環境溫度沖擊檢測標志位 %d - 存在檢測標志位 %d - 運動檢測標志位 %drn",func_status.tamb_shock_flag, func_status.pres_flag, func_status.mot_flag);
//   }
		
		
		printf("PA7=%d",HAL_GPIO_ReadPin  ( GPIOA, GPIO_PIN_7));
		
		
    sths34pf80_tmos_func_status_t func_status;
    uint8_t motion;
    uint8_t presence;		
    /* handle event in a "thread" alike code */
		if(HAL_GPIO_ReadPin  ( GPIOA, GPIO_PIN_7))
		{
      motion = 0;
      presence = 0;

      do {
        sths34pf80_tmos_func_status_get(STHS34PF80_ADDRESS, &func_status);

        if (func_status.pres_flag != presence)
        {
          presence = func_status.pres_flag;

          if (presence) {
						printf("Start of Presencern");

          } else {
						printf("End of Presencern");						

          }
        }

        if (func_status.mot_flag != motion)
        {
          motion = func_status.mot_flag;

          if (motion) {
						printf("Motion Detected!rn");						
						
          }
        }
      } while (func_status.pres_flag);
    		
		
		
		}
		
		
			HAL_Delay(1000);		
		
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

測試結果

在未有人的情況下。

在這里插入圖片描述

在人體純在情況下。
在這里插入圖片描述
審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2550

    文章

    51047

    瀏覽量

    753165
  • 模塊
    +關注

    關注

    7

    文章

    2696

    瀏覽量

    47439
  • 中斷
    +關注

    關注

    5

    文章

    898

    瀏覽量

    41475
  • stm32cubemx
    +關注

    關注

    5

    文章

    283

    瀏覽量

    14792
收藏 人收藏

    評論

    相關推薦

    STM32CubeMx外部中斷基本使用方法

    第一步:現在STM32CubeMx 中配置所需要IO口外部中斷模式。
    發表于 05-31 15:32 ?4180次閱讀
    <b class='flag-5'>STM32CubeMx</b>外部<b class='flag-5'>中斷</b>基本使用方法

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(1)----獲取ID

    STHS34PF80 是一款非冷卻、工廠校準的紅外運動和存在檢測傳感器,工作波長在 5 μm 至 20 μm 之間。
    的頭像 發表于 12-01 15:28 ?8107次閱讀
    基于<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>(1)----<b class='flag-5'>獲取</b>ID

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(2)----驅動STHS34PF80進行人體檢測

    ASIC 進行數字處理,可以對其進行編程以監控運動、存在或過熱狀況。 本章主要驅動STHS34PF80,進行人體檢測。
    的頭像 發表于 12-01 15:29 ?756次閱讀
    基于<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 ?695次閱讀
    基于<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(5)----配置嵌入式函數

    STHS34PF80傳感器項目種修改 Arduino 腳本,重新移植到STM32的MCU中。
    的頭像 發表于 12-01 15:33 ?773次閱讀
    基于<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 ?630次閱讀
    基于<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>狀態數據

    STHS34PF80高靈敏度紅外感應器(2)----InfraredPD存在感應檢測

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

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

    TMOS測試:通過STEVAL-MKI109V3在unico上識別不到STHS34PF80
    發表于 03-26 08:31

    使用STM32CubeMX實現中斷模式下的串口收發

    cube是ARM發布的針對于STM32的一個底層初始化的軟件,使用STM32CubeMX實現中斷模式下的串口收發
    發表于 02-25 14:12 ?2次下載

    使用stm32cubemx的usb-host-cdc庫驅動EC20模塊

    使用stm32cubemx的usb-host-cdc庫驅動EC20模塊開發環境:實現功能:開始1、使用STM32CubeMX配置工程,生成基礎代碼2、修改
    發表于 12-28 19:48 ?41次下載
    使用<b class='flag-5'>stm32cubemx</b>的usb-host-cdc庫<b class='flag-5'>驅動</b>EC20<b class='flag-5'>模塊</b>

    意法半導發布了新型人體存在和移動檢測芯片:STHS34PF80

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

    ST TMOS熱敏紅外傳感器: 精準檢測人員存在和移動

    意法半導發布新型人體存在和移動檢測芯片。STHS34PF80是一款帶有微加工熱敏晶體管(TMOS)的高集成度、超低功耗的紅外(IR)傳感器,可取代傳統的被動紅外(PIR)傳感技術,提升安保監視系統、家庭自動化設備和物聯網設備等場景的的監測性能。
    發表于 08-08 14:48 ?667次閱讀

    STHS34PF80人體存在傳感器(1)----獲取人體存在狀態

    STHS34PF80是一款高性能的紅外(IR)傳感器,特別適用于檢測存在感和運動。其主要特點是高靈敏度,能在沒有透鏡的情況下探測到4米遠的物體(尺寸為70 x 25厘米),并配有集成的硅紅外濾波器
    的頭像 發表于 01-09 15:51 ?607次閱讀
    <b class='flag-5'>STHS34PF80</b>人體存在傳感器(1)----<b class='flag-5'>獲取</b>人體存在狀態

    基于ST 紅外傳感器STHS34PF80 搭配菲涅爾透鏡針對投影機應用方案

    STHS34PF80 是一款紅外線感測器,可用于偵測靜止和移動物體的存及超溫條件。它采用獨特的 TMOS 技術測量物體的紅外線輻射,當物體位于視野內時檢測其存在或移動。
    的頭像 發表于 01-30 14:16 ?955次閱讀
    基于ST 紅外傳感器<b class='flag-5'>STHS34PF80</b> 搭配菲涅爾透鏡針對投影機應用方案

    STHS34PF80高靈敏度紅外感應器(1)----獲取人體存在狀態

    STHS34PF80是一款高性能的紅外(IR)傳感器,特別適用于檢測存在感和運動。其主要特點是高靈敏度,能在沒有透鏡的情況下探測到4米遠的物體(尺寸為70 x 25厘米),并配有集成的硅紅外濾波器
    的頭像 發表于 10-14 10:36 ?375次閱讀
    <b class='flag-5'>STHS34PF80</b>高靈敏度紅外感應器(1)----<b class='flag-5'>獲取</b>人體存在狀態
    主站蜘蛛池模板: 久久成人免费大片| 国产亚洲综合视频| 动漫护士被乳羞羞漫| 草莓视频在线观看免费观看高清| WWW国产亚洲精品久久麻豆| 成人欧美尽粗二区三区AV| 国产精品成人无码久免费| 含羞草完整视频在线播放免费| 精品午夜国产福利观看| 麻豆成人久久精品二区三区网站| 欧美阿v在线天堂| 色橹橹欧美在线观看视频高清| 新版孕妇bbwbbwbbw| 一一本之道高清视频在线观看中文字幕| 中文字幕乱码在线人视频| WWW国产精品内射熟女| 国产乱人视频在线观看| 久久学生精品国产自在拍| 青年医生插曲| 亚洲成A人片在线观看中文L| 中文无码乱人伦中文视频播放| xhameter中国| 国外色幼网| 欧美精品色视频| 无码精品AV久久久奶水| 在线国产a不卡| 范冰冰hdxxxx| 久久久久久免费高清电影| 日韩 国产 中文 无码| 亚洲嫩草影院久久精品| A片毛片免费视频在线看| 国产偷抇久久精品A片蜜臀A| 老湿影院色情a| 忘忧草在线影院WWW日本动漫| 一个人免费视频在线观看高清频道 | 成人免费一区二区无码视频 | np高h肉辣一女多男| 国产亚洲va在线电影| 摸董事长的裤裆恋老小说| 无人区国产片| 99re6热这里在线精品视频|