基于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配備了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 */

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35659.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35659.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35659.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

端口輸入的數據為什么要打拍?

一次作者在開發圖像時候&#xff0c;對輸入的圖像沒有打拍&#xff0c;直接輸出給顯示終端&#xff0c;時好時壞&#xff0c;或者圖像顏色不正確&#xff0c;最終經過打拍解決了此問題。 //配置為16-Bit SDR ITU-R BT.656模式時pixel_data[23:16]為高阻。always (posedge pixe…

AtCoder Beginner Contest 314-A/B/C

A - 3.14 題目要求輸出圓周率保留小數幾位后的結果 用字符串來存儲長串的圓周率&#xff0c;截取字符串就可以了。 #include<iostream> using namespace std; int main() {string s"3.1415926535897932384626433832795028841971693993751058209749445923078164062…

C#多線程開發詳解

C#多線程開發詳解 持續更新中。。。。。一、為什么要使用多線程開發1.提高性能2.響應性3.資源利用4.任務分解5.并行計算6.實時處理 二、多線程開發缺點1.競態條件2.死鎖和饑餓3.調試復雜性4.上下文切換開銷5.線程安全性 三、多線程開發涉及的相關概念常用概念(1)lock(2)查看當前…

NanoPi NEO移植LVGL8.3.5到1.69寸ST7789V屏幕

移植前準備 移植好fbtft屏幕驅動 參考鏈接&#xff1a;友善之臂NanoPi NEO利用fbtft驅動點亮1.69寸ST7789V2屏幕 獲取源碼 名稱地址描述lvglhttps://github.com/lvgl/lvgl.gitlvgl-8.3.5lv_drivershttps://github.com/lvgl/lv_drivers.gitlv_drivers-6.1.1 創建工程目錄 創…

RF PCB的9條改進型建議

1.小功率的RF的PCB設計中,主要使用標準的FR4材料(絕緣特性好、材質均勻、介電常數ε=4,10%)。主要使用4層~6層板,在成本非常敏感的情況下可以使用厚度在1mm以下的雙面板,要保證反面是一個完整的地層,同時由于雙面板的厚度在1mm以上,使得地層和信號層之間的FR4介質較厚,…

Linux | curl命令調用接口時查看調用時長和詳情

關注wx&#xff1a; CodingTechWork 引言 在服務器中通過curl命令調用接口時&#xff0c;我們經常需要分析一些時長。本文主要總結兩種方式進行處理。 curl命令 使用time命令 time curl -k -u <username>:<password> https://127.0.0.1/xxxx -vvv 使用文本 編…

HTML <span> 標簽

定義和用法 <span> 標簽被用來組合文檔中的行內元素。 瀏覽器支持 元素ChromeIEFirefoxSafariOpera<span>YesYesYesYesYes所有瀏覽器都支持 <span> 標簽。 HTML 與 XHTML 之間的差異 NONE 提示和注釋: 提示:請使用 <span> 來組合行內元素,以便…

旋轉圖像(旋轉矩陣)

原題鏈接 旋轉圖像備戰技術面試&#xff1f;力扣提供海量技術面試資源&#xff0c;幫助你高效提升編程技能&#xff0c;輕松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/rotate-image/ 算法分析 若矩陣的行列數為N&#xff0c;設i表示行索引&#xff0c;i屬…

win10中Docker安裝、構建鏡像、創建容器、Vscode連接實例

Docker方便一鍵構建項目所需的運行環境&#xff1a;首先構建鏡像(Image)。然后鏡像實例化成為容器(Container)&#xff0c;構成項目的運行環境。最后Vscode連接容器&#xff0c;方便我們在本地進行開發。下面以一個簡單的例子介紹在win10中實現&#xff1a;Docker安裝、構建鏡像…

Flutter BottomSheet 三段式拖拽

BottomSheetBehavior 追蹤 BottomSheet系統默認實現效果準備要實現的功能點&#xff1a;定義三段式狀態&#xff1a;BottomSheetBehavoir閥值定義1. 未達到滾動閥值&#xff0c;恢復狀態2. 達到滾動閥值&#xff0c;更新狀態 前面倒是有講過Android原生的BottomSheetBehavior&a…

Flask 框架集成Bootstrap

前面學習了 Flask 框架的基本用法&#xff0c;以及模板引擎 Jinja2&#xff0c;按理說可以開始自己的 Web 之旅了&#xff0c;不過在啟程之前&#xff0c;還有個重要的武器需要了解一下&#xff0c;就是著名的 Bootstrap 框架和 Flask 的結合&#xff0c;這將大大提高開發 Web …

國產數據庫-內核特性-低基數全局字典

國產數據庫-內核特性-StarRocks低基數全局字典 StarRocks2.0引入了低基數全局字典&#xff0c;可以通過全局字典將字符串的相關操作轉換成整型相關操作&#xff0c;大大提升查詢性能。 1、低基數字典 對于利用整型替代字符串進行處理&#xff0c;通常使用字典編碼進行優化。Sta…

人大金倉助力某大型金融機構業務系統異地容災優化升級

日前&#xff0c;人大金倉助力某大型金融機構應收賬款融資服務平臺異地容災項目順利上線&#xff0c;保證了平臺系統運行的連續性和數據安全&#xff0c;為充分發揮平臺的融資功能&#xff0c;緩解中小微企業融資難提供了強有力的保障。 “ 緩解中小微企業融資難 某大型金融機構…

【MySQL--->數據庫操作】

文章目錄 [TOC](文章目錄) 一、操作語句1.增2.刪3.改4.查5.備份 二、字符集與校驗規則 一、操作語句 1.增 語句格式:create database [if no exists]數據庫名[create_specification [,create_specification] …]; 中括號內是可選項,if no exists是指如果數據庫不存在就創建,存…

STM32 F103C8T6學習筆記7:雙機無線串口通信

今日嘗試配通倆個C8T6單片機之間的無線串口通信&#xff0c;文章提供原理&#xff0c;源碼&#xff0c;測試效果圖&#xff0c;測試工程下載&#xff1a; 目錄 傳輸不規范問題&#xff1a; 串口通信資源&#xff1a; 單個串口資源理解&#xff1a; 單片機串口資源&#xf…

Redis的單線程與多線程

Redis的核心處理邏輯一直都是單線程 有一些分支模塊是多線程(某些異步流程從4.0開始用的多線程&#xff0c;例如UNLINK、FLUSHALL ASYNC、FLUSHDB ASYNC等非阻塞的刪除操作。網絡I/O解包從6.0開始用的是多線程;) 為什么是單線程 多線程多好啊可以利用多核優勢 官方給的解釋 …

UI自動化環境的搭建(python+pycharm+selenium+chrome)

最近在做一些UI自動化的項目&#xff0c;為此從環境搭建來從0到1&#xff0c;希望能夠幫助到你&#xff0c;同時也是自我的梳理。將按照如下進行開展&#xff1a; 1、python的下載、安裝&#xff0c;python環境變量的配置。 2、pycharm開發工具的下載安裝。 3、selenium的安裝。…

Leetcode34 在排序數組中查找元素的第一個和最后一個位置

給你一個按照非遞減順序排列的整數數組 nums&#xff0c;和一個目標值 target。請你找出給定目標值在數組中的開始位置和結束位置。 如果數組中不存在目標值 target&#xff0c;返回 [-1, -1]。 你必須設計并實現時間復雜度為 O(log n) 的算法解決此問題。 代碼&#xff1a; c…

如何使用 Go 獲取 URL 的參數,以及使用時的問題

Go 獲取 URL 參數也很容易&#xff0c;但是由于 Go 有嚴格的數據類型和錯誤管理&#xff0c;所以在使用時會些微有些復雜。所以本文不僅會講如何獲取 URL 的參數&#xff0c;也會講在使用時的一些問題。 首先假設 URL 是https://www.example.com/?keywordabc&id12。 其他…

java中函數式接口、Stream流、方法引用、junit單元測試、反射、注解

函數式接口&#xff1a; 在java中有且僅有一個抽象方法的接口稱為函數式接口&#xff0c;但是可以包含其它的默認的或靜態的方法。 格式&#xff1a; 修飾符 interface 接口名稱 {public abstract 返回值類型 方法名稱(可選參數);// 其他非抽象方法 }函數式接口&#xff1a;…