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

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

[复制链接]
jundao721 发布时间:2024-8-10 22:42
      过节吃完饭,回来继续测试板载传感器。本次测试ISM330DHCX,3轴加速度+3轴陀螺仪传感器,读Datasheet发现,是带嵌入式机器学习内核的,这部分还没有测试,趁这会先把基本功能测试一下。读完datasheet,了解个大概,看原理图,如图1所示:! z2 ~4 C; u, \
4-2.JPG 5 X! [! @# C; O% w- E. i! R8 a
& j! f8 m% C  G' i
图1
/ J7 g7 I5 A1 ~依然使用的SPI接口,根据前面的IC测试,思路搬过来使用。依然使用CubeMx现把框架搭一下,引脚定义如图2所示:- W# v+ U  H9 C5 E0 F6 q
4-3.JPG - R; D+ V7 z: i# m2 F  w: [
' H# W5 }8 U4 t; F% ~" i
图2# B( d1 f5 l; p
下面就是添加所需要的初始化代码,IC初始化如下:
2 J2 d  R, I" ?$ C
  1. /* Start device configuration. */
    # N, H/ K" n& c1 S, k
  2.   ism330dhcx_device_conf_set(&dev_ctx, PROPERTY_ENABLE);
    6 d$ e  C9 {- l: s- B# k" g+ t
  3.   /* Enable Block Data Update */. J& e' y  K% A& V: o# R
  4.   ism330dhcx_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
    2 h: h1 B0 o6 }  d
  5.   /* Set Output Data Rate */& w4 W. |; v$ W
  6.   ism330dhcx_xl_data_rate_set(&dev_ctx, ISM330DHCX_XL_ODR_12Hz5);
    - U3 I( v. a8 j* f# F
  7.   ism330dhcx_gy_data_rate_set(&dev_ctx, ISM330DHCX_GY_ODR_12Hz5);
    ! ?' E# p* ^" D% e
  8.   /* Set full scale */0 X8 S% c3 r" T7 n/ D
  9.   ism330dhcx_xl_full_scale_set(&dev_ctx, ISM330DHCX_2g);
    * z0 q, _  A( ~2 g' E
  10.   ism330dhcx_gy_full_scale_set(&dev_ctx, ISM330DHCX_2000dps);( Y! W4 n/ A/ h: ]# l" S
  11.   /* Configure filtering chain(No aux interface)
    ! g8 p: l; k0 g
  12.    *$ _; S4 O9 R- `, {
  13.    * Accelerometer - LPF1 + LPF2 path  n! P/ p7 p2 F$ [) m. J" s) Q( T
  14.    */& d* q  m" ]" n4 G. L$ {
  15.   ism330dhcx_xl_hp_path_on_out_set(&dev_ctx, ISM330DHCX_LP_ODR_DIV_100);
    : \) o- |2 k. K5 ?5 E# j, Y
  16.   ism330dhcx_xl_filter_lp2_set(&dev_ctx, PROPERTY_ENABLE);
复制代码

7 k# y5 h" H7 s在while中添加读取数据的code,如下所示:" j# T. T$ h2 p/ A& V+ g
  1. ism330dhcx_xl_flag_data_ready_get(&dev_ctx, &dreg);
    3 s5 q! c( P" [6 W
  2.                 if(dreg)+ L- f+ Q, r6 x
  3.                 {
    , R2 q9 e6 f# T. C& M0 ^
  4.                          /* Read acceleration field data */
    2 H( h% f$ o5 a% G" D3 X
  5.       memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));" j: H6 h  |  J- N" |. p, _  b
  6.       ism330dhcx_acceleration_raw_get(&dev_ctx, data_raw_acceleration);% ]. Q+ ~& O5 H
  7.       acceleration_mg[0] =! B: \' N" r$ D0 D, S  C
  8.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[0]);
    # w* G- v/ W6 t0 u& C1 T
  9.       acceleration_mg[1] =
    8 p- O8 ?6 A4 W& Z0 A* P
  10.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[1]);
      \0 V1 c' [- i' G/ p4 Y0 V5 G" ^5 t- Z
  11.       acceleration_mg[2] =$ _: y( ?9 W& n
  12.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[2]);2 C5 h9 ?2 W+ m" d; k
  13.                 }3 u5 a& D; ~; F. I( n' f5 h5 X) a0 x
  14.                  ism330dhcx_gy_flag_data_ready_get(&dev_ctx, &dreg);
    0 F- f0 i0 F- U/ x5 D

  15. : ~% I2 S$ a  ?7 J" i, f' {  |- x
  16.     if (dreg) {
    - Q/ c; ^9 O9 _( e" Y$ p
  17.       /* Read angular rate field data */0 V, }# T% z: S# s5 ]
  18.       memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));9 V5 W+ f8 O9 W5 A" o
  19.       ism330dhcx_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);2 j* L: X' s+ S  `) L( _' `! }$ P) r
  20.       angular_rate_mdps[0] =& s0 w& U7 ~0 ~: G
  21.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[0]);4 Z* r) T* ~+ r) p
  22.       angular_rate_mdps[1] =1 s' P0 j' E, k! }! q0 _6 e& U+ N
  23.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[1]);' j4 \4 U& q) E* e0 K
  24.       angular_rate_mdps[2] =5 q4 N( n: Z, Z( {' {
  25.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[2]);
    0 w6 Q" p. F; D$ y) e7 k
  26.   
    " a0 k- G& S2 t8 F  j$ [
  27.     }5 v4 q7 [7 n. x7 f! w

  28. 7 W/ N* I6 R# N+ h0 j. H7 N
  29.     ism330dhcx_temp_flag_data_ready_get(&dev_ctx, &dreg);6 A# L- G2 {3 G5 f7 s+ j  `

  30. $ p& b/ f- Y, u: m2 W; P
  31.     if (dreg) {
    + F% p5 Q- ~, a
  32.       /* Read temperature data */
    # O2 B7 K  l! i$ a+ L) e; G$ H* a
  33.       memset(&data_raw_temperature, 0x00, sizeof(int16_t));" |5 ~  l. ]7 \6 c: K) ^
  34.       ism330dhcx_temperature_raw_get(&dev_ctx, &data_raw_temperature);% c' _5 D) Z) ~$ L$ B  S: A) Z; \
  35.       temperature_degC = ism330dhcx_from_lsb_to_celsius(0 x1 I! ]+ s, N% ]
  36.                            data_raw_temperature);& @1 \0 N4 m* M; C- f5 f, o: x
  37. . b3 ]9 G7 ~% K  o+ ]+ ~: n
  38.     }
复制代码

9 s  V" R+ X; o& H# e7 V
% O! N* k; u9 S
  X+ z; F4 ^% W- o
测试失败,显示hardware_fault,硬件错误。想了想,是晚上有点恍惚,把时钟配置错了,板载的外部时钟是16M,而cubemx中的默认时钟是8M,修改过来,重新生成项目,debug,测试结果如下;
0 g/ M; {% y- ]( D  q9 B9 ? 4-1.JPG
2 u2 i( u! v: Y) z

5 J1 J; s9 a+ @7 r7 M图3
/ x& n6 C" q/ K+ s' y. Y
# a3 _5 n" k6 w

% @. m& H! G5 A0 O- ]这段时间总是感觉知识浮于基础,得往深处继续挖掘学习。下次试一试Nano edge AI。
, u' z; B0 I) \! j( M; b* _- e' C* W5 O- g! I  g1 M' p
收藏 评论7 发布时间:2024-8-10 22:42

举报

7个回答
y369369 回答时间:2024-10-18 10:01:12
Nano edge AI有得一搞啊楼主) }5 U" L1 u4 R: V# N+ E
你也是双下巴 回答时间:2024-10-18 10:04:42
y369369 发表于 2024-10-18 10:01) @. w  a7 b2 ]1 z5 g# y
Nano edge AI有得一搞啊楼主
; Y, u! J) V) s2 I: ~+ R
属实可以,等楼主8 K9 }, A! D. `6 O- e! O
STMCU-管管 回答时间:2024-10-18 10:07:28
你也是双下巴 发表于 2024-10-18 10:04( R, y! P3 I% B
属实可以,等楼主
* d- w3 H* r/ ^8 ^8 N: O- T! O
论坛有分享Nano edge AI 使用教程的可参考,https://shequ.stmicroelectronics.cn/thread-636670-1-1.html4 }5 X  \  v2 Z$ z: @
embiied 回答时间:2024-10-18 10:32:11

STMCU-管管 发表于 2024-10-18 10:07
论坛有分享Nano edge AI 使用教程的可参考,<a href="https://shequ.stmicroelectronics.cn/thread-636670-1-1.htm">https://shequ.stmicroelectronics.cn/thread-636670-1-1.htm</a> ...

这个帖子之前看过,写的不错

ghost110 回答时间:2024-10-18 10:37:44

加油

jundao721 回答时间:2024-10-18 13:26:23

y369369 发表于 2024-10-18 10:01
Nano edge AI有得一搞啊楼主

哈哈,稍等片刻。

jundao721 回答时间:2024-10-18 13:26:51

你也是双下巴 发表于 2024-10-18 10:04
属实可以,等楼主

必须更新!

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版