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

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

[复制链接]
jundao721 发布时间:2024-8-10 22:42
      过节吃完饭,回来继续测试板载传感器。本次测试ISM330DHCX,3轴加速度+3轴陀螺仪传感器,读Datasheet发现,是带嵌入式机器学习内核的,这部分还没有测试,趁这会先把基本功能测试一下。读完datasheet,了解个大概,看原理图,如图1所示:( z8 _. t" `! [  K* g/ U
4-2.JPG
/ b+ K  L) }  ?" I, y3 r
2 W2 E: h3 G+ r
图1  E: k" I5 X6 p* L! h
依然使用的SPI接口,根据前面的IC测试,思路搬过来使用。依然使用CubeMx现把框架搭一下,引脚定义如图2所示:0 }4 a& d1 G/ {6 c' g2 O# W
4-3.JPG
* i. j) I! A' x; F/ L" K) V- g
0 T, W  w  f3 o% D. y
图2
+ m$ \+ e5 f. ]6 Z下面就是添加所需要的初始化代码,IC初始化如下:
9 P/ y; j1 y$ P. C8 J4 W2 G
  1. /* Start device configuration. */
    3 L1 r7 M6 R' L8 K' m0 {+ `8 k0 s
  2.   ism330dhcx_device_conf_set(&dev_ctx, PROPERTY_ENABLE);  V* f: x% u/ y' s
  3.   /* Enable Block Data Update */
    " s5 O! X; ~2 K* [& o
  4.   ism330dhcx_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
    * ~" x9 O7 j6 G. X
  5.   /* Set Output Data Rate */- O; P( O0 ~! b3 p1 J) V5 Y
  6.   ism330dhcx_xl_data_rate_set(&dev_ctx, ISM330DHCX_XL_ODR_12Hz5);
    . ^& Y( }$ v3 ~; l4 {4 _
  7.   ism330dhcx_gy_data_rate_set(&dev_ctx, ISM330DHCX_GY_ODR_12Hz5);
    ; m7 o4 A) ]6 c) n
  8.   /* Set full scale */& x% n8 S" v  `
  9.   ism330dhcx_xl_full_scale_set(&dev_ctx, ISM330DHCX_2g);2 W( F" H' O9 b3 P# J2 }! Q' Q
  10.   ism330dhcx_gy_full_scale_set(&dev_ctx, ISM330DHCX_2000dps);
    0 Q# N: `+ R1 L% x
  11.   /* Configure filtering chain(No aux interface)
    " M- v" Z& S3 |& l
  12.    *# u# |1 d$ X8 L
  13.    * Accelerometer - LPF1 + LPF2 path
    % V% q: V1 u5 J* Z
  14.    */
    7 F8 {7 V# @& n* F: [: u
  15.   ism330dhcx_xl_hp_path_on_out_set(&dev_ctx, ISM330DHCX_LP_ODR_DIV_100);
    8 T$ ?# j" ^" r6 \
  16.   ism330dhcx_xl_filter_lp2_set(&dev_ctx, PROPERTY_ENABLE);
复制代码

7 h, M3 V7 ~  ]0 Z5 ^7 b在while中添加读取数据的code,如下所示:5 R2 d$ C) e- S5 ~! b) X9 ]3 p5 a
  1. ism330dhcx_xl_flag_data_ready_get(&dev_ctx, &dreg);$ D; f- o: \) A; i
  2.                 if(dreg)
    + w  Y7 ^( _* u7 W
  3.                 {2 m* j6 f  n6 c, x: ]/ R
  4.                          /* Read acceleration field data */8 J5 Y  s% _8 W  l; M3 H
  5.       memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
    % J* o6 d  u8 h1 ~% ]1 ?
  6.       ism330dhcx_acceleration_raw_get(&dev_ctx, data_raw_acceleration);
    2 k7 p+ F% }6 B4 ^; X
  7.       acceleration_mg[0] =- _' r" |, V+ I& [- b5 B
  8.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[0]);0 o! }9 H9 M% L1 A1 z
  9.       acceleration_mg[1] =! J- Y, ~: l2 }7 `0 {
  10.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[1]);
    ! x+ z2 J3 v: a( h! h0 T
  11.       acceleration_mg[2] =' Y5 r0 Y4 z0 l- O$ ]5 O
  12.         ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[2]);/ V) ?2 c7 J* i0 J" M
  13.                 }( v5 g+ w, _0 U& |" f7 J! }# K
  14.                  ism330dhcx_gy_flag_data_ready_get(&dev_ctx, &dreg);# S  k2 Z8 T5 l/ I+ g2 o0 {* E

  15. ( q# N4 l$ n( H  }; E
  16.     if (dreg) {* e; w. o. Y8 Z' ?+ k
  17.       /* Read angular rate field data */: ^( ?' ~' }8 s: n( Q/ u
  18.       memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));9 {/ L( `- p, [7 F& ~$ Q) A7 h# x
  19.       ism330dhcx_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);* w  p  b4 `8 S( }: x/ P
  20.       angular_rate_mdps[0] =
    9 h# D$ [' @5 C& `" R* T
  21.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[0]);; @' Z0 A8 K" J) Q4 L0 X/ P
  22.       angular_rate_mdps[1] =0 O, J8 `; w% g$ h( P! U5 A( }
  23.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[1]);1 W1 |0 Z7 r3 t0 f6 i$ @
  24.       angular_rate_mdps[2] =
    - ]* B2 L4 n8 P  o0 Z' h1 p
  25.         ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[2]);8 ^  {4 J0 `: ]9 M9 I
  26.   
    * I9 }( j" b7 p- @  ]# l
  27.     }
    8 {, Y$ I8 o2 `! S) h
  28. " o( `9 K+ t. X" b) m) i& L8 F& u
  29.     ism330dhcx_temp_flag_data_ready_get(&dev_ctx, &dreg);
    , [' q+ V% f* G

  30. + g' q+ _5 x+ C; v
  31.     if (dreg) {/ l% c. x; Q7 r) P& d, [0 u+ r
  32.       /* Read temperature data */
    ' }3 S& K5 i4 g
  33.       memset(&data_raw_temperature, 0x00, sizeof(int16_t));' w% D, a* f  U: f1 u8 m
  34.       ism330dhcx_temperature_raw_get(&dev_ctx, &data_raw_temperature);
    3 ]  O. L7 J6 ?( S
  35.       temperature_degC = ism330dhcx_from_lsb_to_celsius(
    . r" E1 K" n1 S! j& R. `
  36.                            data_raw_temperature);
    7 {0 m- A4 L* p

  37. 1 J  _5 T8 `7 U% Z
  38.     }
复制代码

0 E, |4 k( P7 Y; P8 U! @* @3 |6 |! t2 q. V% K+ a

/ G1 S1 @' f6 h# m5 H5 F测试失败,显示hardware_fault,硬件错误。想了想,是晚上有点恍惚,把时钟配置错了,板载的外部时钟是16M,而cubemx中的默认时钟是8M,修改过来,重新生成项目,debug,测试结果如下;
/ G7 x- s* C1 h7 m$ i2 |* m 4-1.JPG + R$ q1 C. T( P& |- {6 {
  |  r2 c+ B( d: N1 X
图3
2 U, m7 ^2 Z: R$ {! U  G2 ^# J7 K+ E0 \+ W& _" n/ \$ q
" @- o5 S; `3 Q1 Q9 \
这段时间总是感觉知识浮于基础,得往深处继续挖掘学习。下次试一试Nano edge AI。
& a' i2 V3 |0 ?$ j8 M5 c" L; ]" z
收藏 评论7 发布时间:2024-8-10 22:42

举报

7个回答
y369369 回答时间:2024-10-18 10:01:12
Nano edge AI有得一搞啊楼主
  A+ f  }8 B' n2 `" S
你也是双下巴 回答时间:2024-10-18 10:04:42
y369369 发表于 2024-10-18 10:011 |3 w; \$ N- o' }6 N
Nano edge AI有得一搞啊楼主
4 c, |( u- J7 ~9 ~
属实可以,等楼主
! O9 G$ R9 l3 G2 O& d7 S9 x
STMCU-管管 回答时间:2024-10-18 10:07:28
你也是双下巴 发表于 2024-10-18 10:04- D& q! i, Z0 r9 L; s' s9 K4 O
属实可以,等楼主

; v& M9 ~$ P2 y; P  z* x论坛有分享Nano edge AI 使用教程的可参考,https://shequ.stmicroelectronics.cn/thread-636670-1-1.html& V( r4 T- e1 A$ N
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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版