你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
攻城狮Melo 发布时间:2023-11-16 15:40
套件概述
3 G$ C. C4 N6 T; r! U7 e6 ZSTHS34PF80 是一款非冷却、工厂校准的红外运动和存在检测传感器,工作波长在 5 µm 至 20 µm 之间。* D1 {( P% c2 Y) x( S
' f. a( _. |+ X
STHS34PF80 传感器设计用于测量视野内物体发出的红外辐射量。该信息由 ASIC 进行数字处理,可以对其进行编程以监控运动、存在或过热状况。
+ X# D( d: ^; |1 F5 k% y0 E0 I+ P
9 |. h1 Y) y5 ?0 D6 q3 p9 w2 J' U; \凭借其卓越的灵敏度,STHS34PF80 可以在最远 4 米的距离内检测到人体的存在,而无需光学镜头。+ d. L1 D: v1 y8 M7 e6 x

/ i0 n) a0 D' `" r) ^STHS34PF80 采用小型 3.2 x 4.2 x 1.455(最大)mm 10 引脚 LGA 封装。
' I) U  u4 ^/ k% J
: y* N0 k$ c$ |/ U7 @4 M1 A  {9 L
微信图片_20231116153226.png   I& |' M& R. _% u3 p& [4 ~1 Z

* g# {3 R+ v0 \5 l( ~9 H3 Z  R) kSTHS34PF80是一种红外传感器,可用于检测静止和移动物体的存在,以及过温条件。它使用独特的TMOS技术测量物体的红外辐射,以便在物体位于视场内时检测其存在或运动。
( _& Y. U0 c! v% c% i& C  _" r5 s( M" h3 V/ E
在传感器上沉积了一个光学带通滤波器,将其工作范围限制在5微米到20微米的波长范围内,使其不对可见光和其他频段敏感。7 d; [5 }, N& R2 O( K
" l: [1 Y2 A6 y) D6 n
传感器基于一组连接在一起并作为单个感应元件运作的浮动真空热晶体管MOS(TMOS)矩阵。得益于ST独特的MEMS制造技术,实现了先进的热隔离,使传感器能够将最小的温度变化转化为电信号,然后将这些信号馈送给ASIC。& A* N9 A' l* d) k

1 j$ P4 A4 `2 u3 Q9 j传感器分为两个部分,一个暴露于红外辐射,另一个被屏蔽。通过在两个部分之间进行差分读数,可以消除传感器自加热的影响。% J" i  f1 e9 z" Y0 s

  T' L; [6 l- R" F, KSTHS34PF80集成了高精度温度传感器,用于测量环境温度并测量物体的精确红外辐射。
6 E/ F# ]* l0 e, ^! a! K' Q" ^2 c! U
ASIC还实现了专门的智能处理,以检测/区分静止和移动物体,并可以断言专用中断。
2 Z3 y& K" i& D: t% M
' x+ F4 z. C  x& l% A可用不同的输出数据速率(ODR),范围从0.25赫兹到30赫兹,以及单次测量模式。" u, B3 j3 {$ s, ?- Q

: _1 ]" F6 l' v! j/ A6 ~STHS34PF80配备了I²C / 3线SPI接口,并采用了与SMD安装兼容的OLGA 3.2 x 4.2 x 1.455 mm 10L封装。; F3 g( w& V! y& t5 r+ ^) q
$ h( w% M/ ~& P. ^+ k4 a
封装所保证的视场为80°。- g9 O( U' I3 p4 S. @
. W8 |# h% {3 n" }( b& d
微信图片_20231116153237.png
6 O* i+ V( {+ Q- D0 a% D6 c" V
& y% w, y' u2 N3 N  k# E7 C6 J
) J" ?3 S. n! j9 s所有功能
+ e5 l. J; P2 E8 H● 主要特性% _! B' C/ r# M1 s
    ○ 高灵敏度红外存在和运动检测传感器
, H7 H9 Q9 z8 k9 p/ Y8 `; a    ○ 对于尺寸为 70 x 25 cm² 的物体,在不使用镜头的情况下可达 4 米
4 P& x7 I! E# Z4 U* _# a" i    ○ 集成硅红外滤光片
* n/ Z+ J& O; G. Z$ z; y6 n    ○ SMD 友好
. w7 X" s' X3 ]/ a- X$ `  O/ G1 |    ○ 能够检测静止物体
2 j3 a0 y4 V3 p    ○ 能够区分静止和移动的物体- S# j+ n2 J. |4 p" \
    ○ 80° 视野6 g* f/ p6 k# Z& p* Q
    ○ 工厂校准7 g3 o% z! P8 m
    ○ 低电量
8 |7 Q# @3 R2 \- c2 K. |/ S    ○ 用于存在/运动检测的嵌入式智能算法
+ I& ~+ w: F( F6 X
& `- x1 K0 a- W" ?# L● 电气规格
) ?/ p: P6 W9 Y4 p    ○ 电源电压:1.7V 至 3.6V3 [- h: W& W( V* }6 X" S
    ○ 电源电流:10μA6 O; K. c9 e- [0 r* n9 ~* v( _. A
    ○ 2 线 I²C / 3 线 SPI 串行接口+ A0 c7 J$ A4 A6 b( x3 X+ H0 d
    ○ 可编程 ODR(0.25 Hz 至 30 Hz)9 K) \" s; |6 w; [6 k% ~
    ○ 一击模式
9 T6 F$ z9 F% r/ U0 x
7 Q7 R+ ~7 W7 G$ k0 s● 传感规格
# R; r. l6 ?5 e; M    ○ 红外灵敏度:2000 LSB/°C
2 q6 Q. G0 C: S( H$ O! ^* ?    ○ RMS 噪声:25 LSB rms7 P! H! k" V0 v' {. o
    ○ 工作波长:5 µm 至 20 µm
6 C( m9 d7 W, B: _; m    ○ 本地温度传感器精度:±0.3℃& J( ~+ f2 C* E/ n. T
  c. K% g9 U4 h3 O' ~+ n2 L
● 包装规格9 n5 T* f0 U0 o/ ]5 M
    ○ LGA 10 引线,3.2 x 4.2 x 1.455(最大)毫米
7 e4 ~+ V  {+ G" J; j3 `: R    ○ 符合 ECOPACK 和 RoHS 标准
/ S8 z$ ^+ x* W0 _9 J. @% `; o9 w& R/ `" u: N5 V. _: w% |
接口
6 P* Q+ T! N' a* I7 ~1 SSTHS34PF80模块接口的示意图如下所示,支持IIC或者SPI通讯。
0 h7 H% ^$ S0 j5 i
. e4 T6 d1 T* L* g4 E4 J7 F+ F
微信图片_20231116153551.png
5 W4 I  \( |; r/ B. a4 i
6 A8 a. W0 ^9 y$ G6 v/ `1 P5 H最小系统图 . ^* t1 Q/ o7 T
& g% t  I# @- i0 C
微信图片_20231116153610.png   v4 P% o$ F  X# U9 P

- T2 U- Y* E) `, L% ]# ]) j串口配置
9 _0 A& d  E$ D" U
查看原理图,PA9和PA10设置为开发板的串口。9 V8 t' e* c2 i% n4 N, ^5 H

; H. ?9 P+ s& R! s" j
微信图片_20231116153613.png
; I  k/ a3 z' g$ ?) W) }6 b' l' V
! x: Y0 i1 S* t3 t" i配置串口。) ?/ j. }1 ]/ S0 p6 G9 z0 Q4 O5 Y

- s- m# `! B& @8 t
微信图片_20231116153616.png ! ?4 v0 c0 u3 V( i, d6 i. g
, {  {+ R5 f; D6 ^
IIC配置 ( n; t% {6 ]# N% s: l# r4 J% k3 k( x
在这个应用中,STS34PF80模块通过I2C(IIC)接口与主控器通信。具体来说,STS34PF80模块的I2C引脚连接到主控器的PB6(引脚B6)和PB7(引脚B7)两个IO口。* [3 [. Z& q2 k: f: A  _6 g; t7 A

: C- v: c/ m. R& u, x
微信图片_20231116153619.png
/ O) {3 D0 C+ B* c, B! E: m, Z) H1 o- N  y! v2 Z$ i
配置IIC为普通模式,速度为100k。
; a" L: U4 e7 _) ?: n6 g) ^$ O: M6 h% k* x
微信图片_20231116153622.png % I3 _. ^3 x1 |7 @+ x/ {
& E" b# p0 p% D9 R
IO口设置 % K" Z) m  A" P+ u& \
STS34PF80IO设置如下所示。
1 H9 Z. k: w; }% j' v7 a9 @在IIC模式下CS需要给个高电平。
! I' g5 `9 S( m0 D
9 L$ @' v: V2 a4 p, c
微信图片_20231116153625.png 2 n; D& U* ?+ ]% z& g, c; e7 K

( M% @( z, q( Q4 H  ^# |官方提供IIC接线如下所示。
7 K7 Y, L* K! [) F0 T, I
% ^9 g' T1 b0 G; ~
微信图片_20231116153632.png 7 C+ v- h: {: ^  {4 k- m
微信图片_20231116153636.png ( G( L: n' b: W9 [# _

! v3 X& ]1 e& O  r需要把PA8配置为输出模式,默认高电平,配置PA7为输入模式。
9 e2 {, }) ]0 |* K# S, ?
6 N& N9 ]: {: S 微信图片_20231116153640.png
: r5 L' v5 }( V4 K
3 g8 O& k# j; Z* _7 _3 p/ X2 `串口重定向 . |: A* j- h3 h/ Y+ a: A( ]& C
打开魔术棒,勾选MicroLIB/ d2 {) |5 V+ E& C5 K

7 d2 h# z5 \6 o; h
微信图片_20231116153643.png
9 w, b4 q8 v7 N+ y2 t3 M
) ?! U8 n! B  G% h在main.c中,添加头文件,若不添加会出现 identifier “FILE” is undefined报错。
& M2 X+ A; e8 h9 S

  1. - I& K. v1 f1 q" O$ T; F; |
  2. /* USER CODE BEGIN Includes */
    $ W' g" i$ o% \+ u7 }6 c0 }  l
  3. #include "stdio.h"
    ) a/ D* _* K& B% R8 D
  4. /* USER CODE END Includes */
    ' S& W: _0 H* ^6 S8 g  ^, ~+ ?
复制代码

2 f3 y& @: w' M) A函数声明和串口重定向:1 ?7 Q  F( y, N' o, Z5 B2 ]

  1. * T7 z& R7 N$ l3 r8 [% I
  2. /* USER CODE BEGIN PFP */$ `6 n  }" @% |- G9 ?
  3. int fputc(int ch, FILE *f){% e9 f% T0 }1 ?! ]7 _! D1 G0 ]
  4.   HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);0 j( ?( P6 I9 f
  5.   return ch;+ w. ~% ^1 z2 A0 W( i6 G
  6. }6 p. Z3 ^! D' X
  7. /* USER CODE END PFP */
    % A0 k5 l1 U2 S: [5 Y3 l& b8 B
复制代码
. `( _; S9 F) Q/ ?
模块地址
4 q7 e& e" J! `/ n" N+ PSTHS34PF80模块的默认设备地址为1011010(0x5A)。设备地址是用来识别和通信特定设备的标识符。通过将VL6180模块的设备地址设置为1011010(0x5A),您可以确保与该模块进行正常的通信和控制。
/ F4 R. s* c$ J5 a, x% p* J1 j- s; o( K& ?3 s
微信图片_20231116153646.png & J* v. t9 `9 }, Z: f9 ^4 H

5 `/ Z. m% b( i5 Z* sIIC写函数
9 |$ j! e5 @! _8 W* X9 a7 |6 ^# i1 w
参考例程序中对应的驱动程序为sths34pf80_write_reg(),如下所示。1 U, s5 R$ M2 w5 E

6 E. {8 M6 B# t) ?- H
微信图片_20231116160207.png
" G& j- c/ F* _0 x9 p
3 k' g  {" J; j  K+ D9 b由上面表格可以得知,地址为101 1010(0x5A),如果是写操作,那么具体的地址为1011 0100(0xB4)。
  1. /**% i$ M6 A5 G7 o7 P* d
  2.   * @brief  读取数据
    & s8 I: T5 v1 E
  3.   *
    - t# y, l& ?8 i, H
  4.   * @param  add   模块地址. l, d- b" Z' Z8 U0 B6 B
  5.   * @param  reg   寄存器地址, C3 |; H  q' }7 W+ y" x9 k
  6.   * @param  data  buffer 缓冲区
    ' V+ i  G5 c* T: r0 S
  7.   * @param  len   读取长度
    ) [6 R" e9 B" b* x& I& I
  8.   * @retval ret   正常返回HAL_OK, o) Q5 U) E9 {
  9.   *
    5 t/ g$ e# X9 x8 E& b9 }
  10.   */
    7 A3 j. h1 E8 ]  j" w& o
  11. uint8_t sths34pf80_read_reg(uint8_t add,uint8_t reg,  uint8_t * data, uint8_t len)5 _7 U! S8 `: M$ O8 ?. V
  12. {
    4 p: `) L+ E! l5 h( M; ]
  13.   uint8_t ret;
    3 M; M6 O9 D1 U% K
  14.   ret=HAL_I2C_Mem_Read(&hi2c1 ,(add<<1)|1,reg,I2C_MEMADD_SIZE_8BIT,data,len,0xffff);6 b* H0 i4 O8 G0 G

  15. % b( o% C# X2 y) w& S7 F
  16.   return ret;9 ]6 E8 \$ N  ]7 o- P, k. G) _! h
  17. }
复制代码
) X- a' Q8 R9 ]! B) t
IIC读函数
: S$ g, E6 G& L& ~参考例程序中对应的驱动程序为sths34pf80_read_reg(),如下所示。5 j1 N# ?* h3 a6 W* P. T
, ^3 r/ H% w! n4 {
微信图片_20231116160234.png 9 v; s7 |5 H( j% @9 ^/ x

' s" G2 s( k  B: g9 \0 d, V( i由上面表格可以得知,地址为101 1010(0x5A),如果是读操作,那么具体的地址为1011 0101(0xB5)。
  1. /**7 \; v! n' {" d
  2.   * @brief  写入数据
    2 C  C) W( z+ D0 P7 g  O& k3 N* b1 w; t
  3.   *
    , Z& W9 d) Q. N$ O' G) l1 r( K
  4.   * @param  add   模块地址
    - K/ w1 e! F/ ^  _- B- X
  5.   * @param  reg   寄存器地址0 t6 S% g+ y' p8 e$ v
  6.   * @param  data  buffer 缓冲区
    ) R9 }' E# ^2 |9 [$ \, O5 C4 Z" _
  7.   * @param  len   写入长度
    5 L. j/ b) W$ u8 K. N2 r$ x! U- T7 P
  8.   * @retval ret   正常返回HAL_OK- L  y+ s2 Y, E, y7 K
  9.   *
    + x' C4 F9 w! @+ C# Q; M
  10.   */3 x- K' j" o0 n, h' i
  11. uint8_t sths34pf80_write_reg(uint8_t add,uint8_t reg, uint8_t * data, uint8_t len)& C0 l9 o; B5 r! |+ p
  12. {+ ]1 a5 H6 E* V1 U, N% k8 b
  13.     uint8_t ret;
    % v8 B+ E) L; U0 S
  14.     HAL_I2C_Mem_Write(&hi2c1 ,(add<<1)|0,reg,I2C_MEMADD_SIZE_8BIT,data,len,0xffff);
    / g4 I7 n% u5 o" x- B0 S
  15.   return ret;4 x0 B" [& y# h: ^

  16. & \* @( V+ U( D! Z6 q$ I. [; T7 k: P
  17. }
复制代码

8 `) ~* t" r" S% R5 f参考程序初始化 & T# |# D  H+ w+ I* j- Z9 L) Q
0 U1 j/ W8 Q- h4 n5 n- v
2.png 5 Z) D# h- I1 f
% i# J. z* K+ m" i5 T/ |
获取ID   {* Q$ q9 x4 F7 k4 v
参考例程序中对应的获取ID驱动程序,如下所示。; j+ ~0 w* {8 o+ ?4 u1 p

% d: P$ j7 g8 y' W6 _+ c
3.png
2 f( U5 c, q- p7 a0 K, J7 E- x" ]
) O, w9 g. k1 Q5 O" b获取ID可以查看0x0F,读出来的值应该为0xD3。" U1 c' z' f: E
" d6 {( r9 O& f* G9 J, z2 _
4.png ; L& Q  [5 b0 Y, H
( x/ W1 ~  @( v- C6 N( G# w
读取函数如下所示。
  1. /**" W6 B4 H" a$ d
  2.   * @brief  获取设备ID2 {; h/ l! Y& |, {( \
  3.   *- \9 G* @2 t  `2 N
  4.   * @param  add      设备地址
    % R7 l- s" K7 p3 z- T
  5.   * @param  val      设备ID.
    9 A+ J/ C2 H+ v3 B% M  @9 {
  6.   * @retval ret       正常返回HAL_OK
    ' V( U) b" O9 V* ~6 U+ \' X3 R
  7.   *- j# u" y$ n* L8 k* u
  8.   */
    * z, G  {3 f5 M: D! `
  9. * p* ^+ k8 U) G! Z( w# g
  10. uint8_t STHS34PF80_getChipID(uint8_t add)
    - Q& O! u! g& s
  11. {/ ]7 D$ g  i3 U, ~, b( {
  12.   uint8_t temp[1]={0};
    1 I4 A& e2 o0 N7 t- N
  13.   sths34pf80_read_reg(add,STHS34PF80_WHO_AM_I,temp,1);
    . g5 Z( j6 V% E6 Y  T* f
  14.   return temp[0];# G1 w( o% p8 k0 V6 J# k
  15. }
复制代码

; ?- a3 @0 [+ `. m+ {) X) I( c
$ B2 d% J$ b+ ?. |1 T主函数
; f+ p4 m* z" y1 H. U
  1.   /* USER CODE BEGIN 2 */
    : ?7 u9 Q4 M# g  c& h3 X! P4 ]' a

  2. : X, m& |5 s7 D% I& I# ~
  3.   uint8_t STHS34PF80_ID =STHS34PF80_getChipID(STHS34PF80_ADDRESS);
    ; v3 ^, j0 o+ f
  4.   printf("STHS34PF80_ID=0x%x\n",STHS34PF80_ID);  
    3 E6 Z$ f1 B/ Z9 v9 l
  5.   
    1 F* e" G/ R, @$ n9 {% k, o
  6.   /* USER CODE END 2 */
复制代码
: p& v3 }1 t% H7 s0 s* \; C
3 i9 F4 O$ |9 b3 [
转载自:记帖
/ n. [1 \3 o+ v" c4 D$ ~如有侵权请联系删除6 v, N$ e6 p% L4 K+ B
5 U$ X& z3 |- l- Q  A2 e8 t

  e6 r0 {% s2 m  m, ^) b9 t0 {7 U+ G1 ]- I! e8 H8 l; X
收藏 评论0 发布时间:2023-11-16 15:40

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版