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

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

[复制链接]
jundao721 发布时间:2024-8-10 22:42
      过节吃完饭,回来继续测试板载传感器。本次测试ISM330DHCX,3轴加速度+3轴陀螺仪传感器,读Datasheet发现,是带嵌入式机器学习内核的,这部分还没有测试,趁这会先把基本功能测试一下。读完datasheet,了解个大概,看原理图,如图1所示:
! y% @  B$ R5 q, [# N6 p 4-2.JPG
0 t; z6 b  w6 p; A6 n) |3 g0 F2 O

, x: e7 M4 r' w% I) }( Z# H4 l图1- d  _) I5 [* w( ?$ g" z
依然使用的SPI接口,根据前面的IC测试,思路搬过来使用。依然使用CubeMx现把框架搭一下,引脚定义如图2所示:
3 n" B) V! x, ?1 Z 4-3.JPG
% t; U$ B6 \- o0 f# E3 p4 Q& d
2 f# X/ r. H4 J6 z
图2
. C% Y5 Q1 h" T! L* T0 c下面就是添加所需要的初始化代码,IC初始化如下:. l- f& |0 j, I" {9 I* P) }
  1. /* Start device configuration. */
    8 S6 e! ]# V) z; J4 p
  2.   ism330dhcx_device_conf_set(&dev_ctx, PROPERTY_ENABLE);
    6 g) g/ x6 m3 B
  3.   /* Enable Block Data Update */
    $ S4 y8 z$ y  i
  4.   ism330dhcx_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
    ) F' B8 M/ i; {! ~5 B
  5.   /* Set Output Data Rate */( \5 N! `% u8 W6 N% |
  6.   ism330dhcx_xl_data_rate_set(&dev_ctx, ISM330DHCX_XL_ODR_12Hz5);
    6 f' o5 p7 S9 `
  7.   ism330dhcx_gy_data_rate_set(&dev_ctx, ISM330DHCX_GY_ODR_12Hz5);
    5 R2 o% ]2 G4 j7 W: g' `
  8.   /* Set full scale */
    ' m: d: a8 S# V: t! G& j
  9.   ism330dhcx_xl_full_scale_set(&dev_ctx, ISM330DHCX_2g);
    7 L" r" ?% L' z* C  `; i. [: O
  10.   ism330dhcx_gy_full_scale_set(&dev_ctx, ISM330DHCX_2000dps);6 ~) I' }% I$ J$ @6 q$ w
  11.   /* Configure filtering chain(No aux interface)0 ?' Z" Y- I. M- m7 A
  12.    *7 b( D3 ^. F1 o
  13.    * Accelerometer - LPF1 + LPF2 path& W" Q# S7 \# y* }$ Y4 s3 Y
  14.    */
    7 B  r& ?( f, ?8 n5 F! u' c* Z; e
  15.   ism330dhcx_xl_hp_path_on_out_set(&dev_ctx, ISM330DHCX_LP_ODR_DIV_100);) P" j5 f+ o1 {9 A
  16.   ism330dhcx_xl_filter_lp2_set(&dev_ctx, PROPERTY_ENABLE);
复制代码
# ^) I# ^+ Y' C7 @4 W1 R
在while中添加读取数据的code,如下所示:
! b7 F4 o9 Q- c6 g7 x3 W
  1. ism330dhcx_xl_flag_data_ready_get(&dev_ctx, &dreg);; z0 W1 h: H  W
  2.                 if(dreg)
    8 c- E( \( r6 o; t( N
  3.                 {6 R- G, n/ L6 g8 N  d( h8 I: C) \6 ?
  4.                          /* Read acceleration field data */1 Y' O4 t5 u1 L$ m/ I9 j
  5.       memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));9 q8 H& E& _, {8 T
  6.       ism330dhcx_acceleration_raw_get(&dev_ctx, data_raw_acceleration);6 z4 P' i- \. F$ }- [
  7.       acceleration_mg[0] =2 K, q" j' v; X0 W0 O( O) R
  8.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[0]);
    : E: T$ A2 a( V. W  m6 n7 y
  9.       acceleration_mg[1] =
    4 T" G- M( w; n) o* ^
  10.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[1]);
    8 I" l1 l( y+ m1 ?( Z2 T
  11.       acceleration_mg[2] =
    , m) @$ j' I* {, y8 G* V
  12.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[2]);
      f2 w- L! o" b: E) Z% U6 v- H
  13.                 }9 X, _! [/ {! z" A3 R# E
  14.                  ism330dhcx_gy_flag_data_ready_get(&dev_ctx, &dreg);
    % K+ P$ H; _& S  Y5 i, t- Y
  15. 2 c( h- [% }3 E" k7 }
  16.     if (dreg) {5 Z7 p' r6 \5 a5 P; _! g! r" W- G  |
  17.       /* Read angular rate field data */
    / c. {+ e. Y' N5 _/ s! X/ d
  18.       memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));
    ! m/ A' g4 H5 v9 K: _* F8 ?* Z/ M
  19.       ism330dhcx_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);* K/ E! L) `3 [  L" R& M
  20.       angular_rate_mdps[0] =
    / B- U* H1 l. ]. D# D* V
  21.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[0]);0 u+ {6 ]3 l0 r0 f2 T
  22.       angular_rate_mdps[1] =7 `1 O7 S7 z4 c+ U/ n- d) W
  23.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[1]);- k2 |. z0 u8 H8 a
  24.       angular_rate_mdps[2] =9 U! h9 c* Y% Z
  25.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[2]);8 @2 X3 \8 C9 W2 f1 M
  26.   0 ?) Y  O2 P- c- j& `
  27.     }
      \3 }9 X& R2 C
  28. 7 u# ?: K6 M6 h3 x  ]3 |
  29.     ism330dhcx_temp_flag_data_ready_get(&dev_ctx, &dreg);1 X; X: P/ ?" \3 l) e
  30. + ]* h# k2 l0 s
  31.     if (dreg) {
    3 K; z! k* n/ O
  32.       /* Read temperature data */
    & J% q  K  E9 [# b1 y+ T
  33.       memset(&data_raw_temperature, 0x00, sizeof(int16_t));) k7 H( |4 }: G- a0 C7 ?0 F
  34.       ism330dhcx_temperature_raw_get(&dev_ctx, &data_raw_temperature);9 x& t+ F* I0 B/ `- v# ?( A4 q( z& o
  35.       temperature_degC = ism330dhcx_from_lsb_to_celsius(( k# Y6 T2 `* x1 w' g$ w! z. W6 J
  36.                            data_raw_temperature);
    ! W) s% n. D5 X5 d  D

  37. & j; m. i, a; x7 l8 ?* u
  38.     }
复制代码
  Z& ?7 e' t4 a( T6 e0 j
. b1 M5 b* j: y: {

9 `9 @3 M  Y) |' d! {: X4 ?" Q% T$ t测试失败,显示hardware_fault,硬件错误。想了想,是晚上有点恍惚,把时钟配置错了,板载的外部时钟是16M,而cubemx中的默认时钟是8M,修改过来,重新生成项目,debug,测试结果如下;, `8 |2 x1 y8 o1 h; Y$ J
4-1.JPG
0 [3 V9 k4 C. M- L$ c- i1 m% I

9 w" n, y/ i2 g( @! F图3! D8 D' K- s. D) x$ l4 u# H+ S$ ^$ }, R
) k# p; v9 H% c+ i# j/ J
2 m% q  O+ l$ K3 Q- w4 [
这段时间总是感觉知识浮于基础,得往深处继续挖掘学习。下次试一试Nano edge AI。
. N% B) D! o0 I; C0 j7 O7 C3 @) F; ]9 T1 m! a; m
赞 收藏 评论7 发布时间:2024-8-10 22:42

举报

7个回答
y369369 回答时间:2024-10-18 10:01:12
Nano edge AI有得一搞啊楼主
8 D% B  L5 y- o
你也是双下巴 回答时间:2024-10-18 10:04:42
y369369 发表于 2024-10-18 10:01
( o# o* A: ~4 Z; Z" l( N: X6 Z+ ^Nano edge AI有得一搞啊楼主
7 z0 |% `' z% V$ @
属实可以,等楼主2 i0 E: D0 w" M
STMCU-管管 回答时间:2024-10-18 10:07:28
你也是双下巴 发表于 2024-10-18 10:04
  U! X2 I3 I3 N属实可以,等楼主

- v4 v) k2 {4 _/ v论坛有分享Nano edge AI 使用教程的可参考,https://shequ.stmicroelectronics.cn/thread-636670-1-1.html
) h' _1 A! ]7 E2 ~
embiied 回答时间:2024-10-18 10:32:11

<br /> <br />

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

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

加油

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

<br /> <br />

哈哈,稍等片刻。

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

<br /> <br />

必须更新!

所属标签

相似技术帖

官网相关资源

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