过节吃完饭,回来继续测试板载传感器。本次测试ISM330DHCX,3轴加速度+3轴陀螺仪传感器,读Datasheet发现,是带嵌入式机器学习内核的,这部分还没有测试,趁这会先把基本功能测试一下。读完datasheet,了解个大概,看原理图,如图1所示:& }3 t3 {& }# K% N& ]& f% c
7 E' H$ w3 ~7 L9 l7 b) s4 h
& q+ O+ w# D5 \9 G4 ~
图15 Q, F1 q8 p/ E3 l2 A6 D: E
依然使用的SPI接口,根据前面的IC测试,思路搬过来使用。依然使用CubeMx现把框架搭一下,引脚定义如图2所示:
1 [/ l _* z. ?+ H* H6 t0 U- k$ m
2 D* U& R! P1 I+ M+ r
& P3 z1 f0 I+ j' L) N图2 |9 M N6 K# f$ T4 ?
下面就是添加所需要的初始化代码,IC初始化如下:
: @8 T. q7 e8 q/ f- /* Start device configuration. */4 v+ ?/ k8 o2 e6 o }$ p W, ]( k
- ism330dhcx_device_conf_set(&dev_ctx, PROPERTY_ENABLE);
, ]- P; H) _# W& _# _/ H - /* Enable Block Data Update */5 F* {+ }+ \5 x2 f" H) L; \
- ism330dhcx_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);) m' \* H1 j3 k" U/ [; W( [
- /* Set Output Data Rate */
& O" M% @. ?" \2 _6 u& A - ism330dhcx_xl_data_rate_set(&dev_ctx, ISM330DHCX_XL_ODR_12Hz5);
X# u# x3 Q7 S5 G7 u9 i; X - ism330dhcx_gy_data_rate_set(&dev_ctx, ISM330DHCX_GY_ODR_12Hz5);
+ C' u9 ~* }. V/ Q. X' ~; P" o. d - /* Set full scale */
0 T _' X: \2 n3 n - ism330dhcx_xl_full_scale_set(&dev_ctx, ISM330DHCX_2g);: R# s% o+ w4 e8 Y2 T
- ism330dhcx_gy_full_scale_set(&dev_ctx, ISM330DHCX_2000dps);
$ I& k5 W& H& z, ^/ a i - /* Configure filtering chain(No aux interface): {- \2 j2 r% @
- *
2 ~5 {1 J$ q w7 r+ Z - * Accelerometer - LPF1 + LPF2 path2 f& O# L# b X% M
- */
; R( z6 p) l( X, }! n4 T8 R2 ^ - ism330dhcx_xl_hp_path_on_out_set(&dev_ctx, ISM330DHCX_LP_ODR_DIV_100);: n2 F5 h u% @, l: K* e, _
- ism330dhcx_xl_filter_lp2_set(&dev_ctx, PROPERTY_ENABLE);
复制代码
; t3 K e4 O: [9 p在while中添加读取数据的code,如下所示:1 |) m# a7 n9 v. G8 U0 v
- ism330dhcx_xl_flag_data_ready_get(&dev_ctx, &dreg);
* d! x' Z4 o$ K' v - if(dreg)& O, U0 f7 h+ _% \1 n1 s9 D
- {% H8 t p- w5 h$ B, M
- /* Read acceleration field data */2 P3 q: l, ~5 [: r
- memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
- F0 R0 @ S, J. q. C - ism330dhcx_acceleration_raw_get(&dev_ctx, data_raw_acceleration);' I# b7 G( m5 w9 r: r$ t! T( J) _
- acceleration_mg[0] =
! }3 N: C- f% e- P# U( _ - ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[0]);/ l) D/ G4 N3 L( m$ A" ?
- acceleration_mg[1] =) }) M' |" o! v- m
- ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[1]);
& G: f# H* b$ A1 z7 `- o - acceleration_mg[2] = Q3 y( T: i. ]: |
- ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[2]);
* ]/ h6 B2 k- X( a5 r - }
8 b+ E7 P# Z) B) I3 y `" [' b - ism330dhcx_gy_flag_data_ready_get(&dev_ctx, &dreg);: b Z( N/ N* i9 p5 W8 k) i& `; L: p
- X# | a; C2 s$ O- if (dreg) {$ m6 i0 l; E* w- |1 i; i4 U3 g
- /* Read angular rate field data */
/ }; t) ~6 U) l. @5 _( t - memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));* v j1 T% j) d9 e* y7 b
- ism330dhcx_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);1 ?/ W( Z" U- i) N+ _
- angular_rate_mdps[0] =
) p. J5 y1 e' K - ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[0]);
4 j* H0 F! |. J' ~$ n% Q! ?4 R - angular_rate_mdps[1] =
; i# z$ l# A2 k$ m: l6 ?% \. I - ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[1]);$ G' t! o6 \* g0 K
- angular_rate_mdps[2] =
7 y% H4 \2 a. Q( Z4 B( e - ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[2]);
# z% ^; `9 s+ m! F4 A) \ -
/ V; U5 x2 w# ~ t - }) E0 B. N( Z- ^. e5 _
0 b E/ h& j" J- ism330dhcx_temp_flag_data_ready_get(&dev_ctx, &dreg);
4 q0 o* T! p7 C8 D - 0 k( _& I$ U7 D# I) m7 g% e
- if (dreg) {% D- l/ n% K6 r* D# }
- /* Read temperature data */
! U7 w6 t6 V: M Y. q% f+ s - memset(&data_raw_temperature, 0x00, sizeof(int16_t));
$ l, C& i% f* m1 o* J) Q - ism330dhcx_temperature_raw_get(&dev_ctx, &data_raw_temperature);
5 `' d* `! p3 U! {' J - temperature_degC = ism330dhcx_from_lsb_to_celsius(- ~8 L$ e p% f' _7 J, A0 r8 }3 v
- data_raw_temperature);# h0 j, A; z" K4 G
- . A, r$ M- |: L" A5 a
- }
复制代码
. @7 Z% r. v% R
4 {. ~ I, j: q
! J) j, `( t* u8 S6 `( \测试失败,显示hardware_fault,硬件错误。想了想,是晚上有点恍惚,把时钟配置错了,板载的外部时钟是16M,而cubemx中的默认时钟是8M,修改过来,重新生成项目,debug,测试结果如下;
& v# B1 A+ a1 p2 q- u
+ B& z# h+ f! A- N* q( u; T, N* O" ?5 G! \7 s! b
图3
& v* ?0 J8 A1 d- `$ m( @
; ~' K" L) i6 L
4 T& z* P" {. H% I7 _! W7 ~这段时间总是感觉知识浮于基础,得往深处继续挖掘学习。下次试一试Nano edge AI。5 U1 I1 v$ _. h5 Z; }
. y, J/ ^( p, D
|
属实可以,等楼主$ X! P2 _4 `7 r. K8 B& D2 K
论坛有分享Nano edge AI 使用教程的可参考,https://shequ.stmicroelectronics.cn/thread-636670-1-1.html
这个帖子之前看过,写的不错
加油
哈哈,稍等片刻。
必须更新!