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

STWINKT1B评测】4.测试板载ISM330DHCX(6轴)

[复制链接]
jundao721 发布时间:2024-8-10 22:42
      过节吃完饭,回来继续测试板载传感器。本次测试ISM330DHCX,3轴加速度+3轴陀螺仪传感器,读Datasheet发现,是带嵌入式机器学习内核的,这部分还没有测试,趁这会先把基本功能测试一下。读完datasheet,了解个大概,看原理图,如图1所示:/ t7 k: C. |1 z
4-2.JPG
/ a5 g3 W: N2 |) Q. [

1 ^: c7 B! {; Y# E$ X图1
: O& H' N& g7 |+ Q依然使用的SPI接口,根据前面的IC测试,思路搬过来使用。依然使用CubeMx现把框架搭一下,引脚定义如图2所示:
! Y: U8 B5 I. _2 {" [ 4-3.JPG
+ T8 |# L0 o# J+ Y1 `7 q1 F0 d) _
, ?* T  U1 T2 {, n; M
图2  d8 A* F. X' J) l- L9 d
下面就是添加所需要的初始化代码,IC初始化如下:
5 }1 L& Z/ l0 g# V
  1. /* Start device configuration. */
    & Z% j- P" ]# b; i/ O
  2.   ism330dhcx_device_conf_set(&dev_ctx, PROPERTY_ENABLE);, f' Q( @, ]0 t( O
  3.   /* Enable Block Data Update */! ~6 d- {) ^6 u; u9 J
  4.   ism330dhcx_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
    3 n7 u/ [8 v/ L  F6 e
  5.   /* Set Output Data Rate */
    0 p5 X# i6 C5 i
  6.   ism330dhcx_xl_data_rate_set(&dev_ctx, ISM330DHCX_XL_ODR_12Hz5);
    2 L& H7 p3 J: f- {1 y
  7.   ism330dhcx_gy_data_rate_set(&dev_ctx, ISM330DHCX_GY_ODR_12Hz5);
    2 O1 W  n1 f* L- p
  8.   /* Set full scale */
    / n  S0 J+ ~* X9 F% o
  9.   ism330dhcx_xl_full_scale_set(&dev_ctx, ISM330DHCX_2g);
    3 H8 k! [/ `, E4 U
  10.   ism330dhcx_gy_full_scale_set(&dev_ctx, ISM330DHCX_2000dps);
    $ |' v9 ~' Q/ q# k" n4 Q+ P
  11.   /* Configure filtering chain(No aux interface)& r9 B- O: \6 \2 G. M0 I
  12.    *
    # S) W6 [, w( C0 e2 x
  13.    * Accelerometer - LPF1 + LPF2 path; s8 O' l5 }6 n. ~4 O% P+ k3 e- c
  14.    */
    / E, O* B. ]' n- h4 F7 Z, ~
  15.   ism330dhcx_xl_hp_path_on_out_set(&dev_ctx, ISM330DHCX_LP_ODR_DIV_100);5 _1 ?( l/ L2 Q
  16.   ism330dhcx_xl_filter_lp2_set(&dev_ctx, PROPERTY_ENABLE);
复制代码

/ ^+ f4 g2 d2 Y# U, u% ^% n在while中添加读取数据的code,如下所示:& {  J, ]# Z; N
  1. ism330dhcx_xl_flag_data_ready_get(&dev_ctx, &dreg);# o. k- U' y% O$ J+ c; ?
  2.                 if(dreg)
    1 P8 s0 ]3 e+ \
  3.                 {* {/ F2 j. a" d& Q; ^7 `$ t9 {+ h( Q: c
  4.                          /* Read acceleration field data */
    ( O2 ]  |) h. t( ]2 s
  5.       memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));' q; ^# {" u- p
  6.       ism330dhcx_acceleration_raw_get(&dev_ctx, data_raw_acceleration);$ R/ ?/ J3 i* X8 f  v# u) S
  7.       acceleration_mg[0] =
    6 |3 w* I2 o$ I, R& m
  8.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[0]);0 F: C+ [- ~# P* U" ^9 i8 w
  9.       acceleration_mg[1] =
    8 Q, S1 P8 |7 {8 m/ s3 e" S* q* T
  10.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[1]);
    ; i% V; U; U+ o3 k% R. q  G
  11.       acceleration_mg[2] =
    * L, V/ P8 P; h4 `
  12.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[2]);
    ' m6 v- `  u& s5 R5 p! F* T5 ]
  13.                 }
    0 r% l! h+ |. h9 d" Y! W/ Q
  14.                  ism330dhcx_gy_flag_data_ready_get(&dev_ctx, &dreg);
    4 p6 o4 B5 d8 Y0 j

  15. ! k1 q- G) S8 R6 h
  16.     if (dreg) {
    # ?; W- u  X, K$ ~" A  P: s
  17.       /* Read angular rate field data */
    , _  m1 R( `) q# V2 ^7 i
  18.       memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));) a' {( k) S8 g  m
  19.       ism330dhcx_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);
    * a9 I0 m) X; X$ v7 B
  20.       angular_rate_mdps[0] =( H9 E; i- j; o9 i; I
  21.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[0]);5 |  A. ~" K. H4 q3 F. V2 ^1 e
  22.       angular_rate_mdps[1] =
    ! B3 C& _% O2 u( g
  23.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[1]);" V0 n4 k: Q4 t% H2 k
  24.       angular_rate_mdps[2] =6 f$ t9 \* O: g
  25.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[2]);2 e6 T9 y! N7 ]2 n0 V
  26.   
    0 y1 M6 u$ R7 T3 A
  27.     }- m: {; R5 W/ j
  28. 2 s# K/ Z- R0 v; U
  29.     ism330dhcx_temp_flag_data_ready_get(&dev_ctx, &dreg);4 T. X. B/ O- @. |. q
  30. 6 ^2 ^$ a4 e$ C3 J
  31.     if (dreg) {& d  h. m2 l' W5 Q- H
  32.       /* Read temperature data */
    5 P7 e$ c; p3 \+ S* g
  33.       memset(&data_raw_temperature, 0x00, sizeof(int16_t));
    3 y3 C9 l0 v- k
  34.       ism330dhcx_temperature_raw_get(&dev_ctx, &data_raw_temperature);
    $ t2 X8 F+ U8 z$ U2 u
  35.       temperature_degC = ism330dhcx_from_lsb_to_celsius(
    $ _5 K) Q, M8 @3 b$ t
  36.                            data_raw_temperature);9 O* ^. S2 ^3 [: x' y7 J
  37. & L0 C) N. l, q9 O+ H7 v- G3 w( I
  38.     }
复制代码

7 T  f7 J& d8 k7 y% L# Y4 \, C" j4 A
3 g" P: d0 ]/ Z3 V
测试失败,显示hardware_fault,硬件错误。想了想,是晚上有点恍惚,把时钟配置错了,板载的外部时钟是16M,而cubemx中的默认时钟是8M,修改过来,重新生成项目,debug,测试结果如下;
( P5 a5 X  j) t3 i 4-1.JPG ! B/ K1 ~# Y) z) g7 J& n) h9 o
1 w. O3 g( \" I  h% s9 Y$ ]7 ~
图3: }9 A! f0 ]( ~. R9 x" o! s2 l

9 c% O) g+ r, J, K- _
+ y5 [4 s6 y) D7 J! E" w9 D' z" ]
这段时间总是感觉知识浮于基础,得往深处继续挖掘学习。下次试一试Nano edge AI。
; L$ N1 }8 g- Q! N0 q$ \8 q+ v) v( i0 x' R4 D
收藏 评论0 发布时间:2024-8-10 22:42

举报

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