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

【STWINKT1B评测】3.读写IIS2DH加速度传感器

[复制链接]
jundao721 发布时间:2024-8-5 20:44
      这两天测试了一下板载的IIS2DH加速度传感器,这是一款低功耗的3轴加速度计,低功耗时能达到2uA,在工业领域广泛应用。从原理图上看,也是连接了SPI3接口,如图1所示:8 `+ ~6 f1 z7 O

2 g5 X' A5 W6 D( o) |' b2 f 3-1.JPG
8 U' l4 J$ Y( x
! D; ^2 t: c. Q6 I4 O图1
! Y$ H* ~# R$ x) X& M/ c: p( `/ L      除了INT2和CS引脚需要重新配置,其他的配置和上一篇是相同的,在CubeMx中很方便重新建立工程文件。想着测试应该是很顺利的,但是能读Device ID,不能读取数据,一度不知道什么原因。隔了一天发现,是CS引脚在程序中搞错了,很多问题往往都是粗心大意导致的。来看软件,初始定义还是参考官方的例程,库也是使用官方的,这样测试比较节省时间。* v( {! P2 E' D6 g; D8 c& w# j
初始化如下:/ r1 Y' ^1 o" h
  1. dev_ctx .write_reg = platform_write ;6 Z" H# X) ?- m% ?; h
  2.         dev_ctx  .read_reg = platform_read ;
    # J! c3 H) c& n
  3.         dev_ctx  .handle = &hspi3 ;
    8 z  V+ T: {. Z6 l$ w9 A& G
  4.         HAL_Delay(10);+ }% ?& q9 f0 S: T# X
  5.        
    ( l4 L% B- i2 ^$ I+ f* o. w+ L) [9 @
  6. //        IIS2DH_ReadID(&Obj ,&whoamI);
    & s' N$ G8 g$ }* p
  7. iis2dh_device_id_get(&dev_ctx, &whoamI);
    " a- s( h  x+ ]# i8 Q3 D6 ~' F
  8. //       
    2 I2 [/ D, M  g8 x
  9. //        IIS2DH_Init(&Obj);/ _# K+ `7 B4 f9 C4 R

  10. 4 |' K7 o5 V+ G5 E- t
  11.         iis2dh_block_data_update_set(&dev_ctx , PROPERTY_ENABLE);
    7 ^) J7 i7 T: f% u* x$ S( u9 |
  12.         /* Set Output Data Rate to 1Hz */+ ?! ^* p$ v2 ~: ]
  13.   iis2dh_data_rate_set(&dev_ctx , IIS2DH_ODR_1Hz);
      _: M$ }$ D0 j, C) o/ N
  14.   /* Set full scale to 2g */3 `3 O7 {: D  E$ k; U" O9 X
  15.   iis2dh_full_scale_set(&dev_ctx , IIS2DH_2g);
    2 L! Y4 w9 y' U; W
  16. //  /* Enable temperature sensor */$ ]3 L" J+ n( O7 M
  17.   iis2dh_temperature_meas_set(&dev_ctx, IIS2DH_TEMP_ENABLE);$ T% A, v0 E7 h  X- v
  18. //  /* Set device in continuous mode with 12 bit resol. */
    " U# M3 u4 q7 O* a7 T! w( B  L, [
  19.   iis2dh_operating_mode_set(&dev_ctx , IIS2DH_HR_12bit);
复制代码

! j8 V1 j; F; o0 L0 {6 F' W+ N
* m- X/ S) y) _1 F7 D读取加速度数据如下:
. l7 |- h! C/ k" D
  1. iis2dh_xl_data_ready_get(&dev_ctx , &ddbyte );
    ) h) a3 s$ U! L6 a( r7 ~' ~: P
  2.          if(ddbyte )! `1 Z2 A8 Z5 y+ W! z+ }
  3.          {
    . j# i2 v; `: n5 ]
  4.                  /* Read accelerometer data */) S+ c5 q" a* a9 A7 U+ y8 q" m( A! C
  5.       memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
    . K. q& Z0 t: C# {9 T$ n
  6.                  
    , @& x1 m) t; n! O  H' {4 m1 p( b# V
  7.       iis2dh_acceleration_raw_get(&dev_ctx , data_raw_acceleration);
    . B  c' }3 |" m7 a8 e
  8.                  
    ) x' w1 I( z' k2 b6 F
  9.       acceleration_mg[0] =iis2dh_from_fs2_hr_to_mg(data_raw_acceleration[0]);# x5 {. @, C1 q7 N( S$ ]; s
  10.                  5 J2 [% w+ g" U& C& q, M1 W
  11.       acceleration_mg[1] =iis2dh_from_fs2_hr_to_mg(data_raw_acceleration[1]);
    + M' `  u. J# X) ?. j  B, l' [
  12.                  
    & t0 F% s2 {) j& n
  13.       acceleration_mg[2] = iis2dh_from_fs2_hr_to_mg(data_raw_acceleration[2]);
    - g4 K3 ]* J0 E! c% x) k
  14.          }
复制代码
/ q$ [2 a7 e9 U7 d
2 d; v' h5 Y) ?- Q
读取温度数据如下:
" }5 O3 W" C9 }6 E6 u
3 f! G* Z6 H, x( s$ u0 W# M  Hiis2dh_temp_data_ready_get(&dev_ctx , &ddbyte );1 R" D9 \: d" N% i
6 k8 I+ I/ H  i1 e* x* f( S0 a
    if (ddbyte) 6 n  ^4 _$ \. }9 o
                        {( F3 [+ c6 t$ g' b6 g
      /* Read temperature data */+ E/ \' {, H; ^! F
      memset(&data_raw_temperature, 0x00, sizeof(int16_t));! z: }3 [4 A5 R" L
      iis2dh_temperature_raw_get(&dev_ctx, &data_raw_temperature);
* W2 Y" ]8 l! Y1 s+ c6 J      temperature_degC =iis2dh_from_lsb_hr_to_celsius(data_raw_temperature);, D5 Z+ Q6 Y+ ]# H$ I+ O& z/ @, E
                  }
7 W- @5 P- g9 k9 W  G" z8 v1 f$ {6 x6 x: o  R( W* S0 X
测量结果如图2所示:% S5 y9 ^0 t; `
3-2.JPG
: v6 s: z7 T% [$ b  x
9 m( L( p9 N5 e# z# W8 ]图2
9 W4 T( y; @7 R0 v. N7 L+ |, B8 E有一些功能还没测试,要深入学习才有所得。3 f6 x7 I3 \: Y
收藏 评论0 发布时间:2024-8-5 20:44

举报

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