过节吃完饭,回来继续测试板载传感器。本次测试ISM330DHCX,3轴加速度+3轴陀螺仪传感器,读Datasheet发现,是带嵌入式机器学习内核的,这部分还没有测试,趁这会先把基本功能测试一下。读完datasheet,了解个大概,看原理图,如图1所示:
$ ]+ M* o" }/ ?; \5 N+ h) g! k3 \8 g# f
. O1 S$ F# ?2 x9 B6 E* i3 s8 E
! f _/ }: r0 I1 Q5 z图1( z% R" x, X8 I8 ?# ]9 [
依然使用的SPI接口,根据前面的IC测试,思路搬过来使用。依然使用CubeMx现把框架搭一下,引脚定义如图2所示:; B4 x& L$ a. d6 {8 f
, _& _# R; v& `' X6 t7 _9 E) y6 `0 A; Y: P
图2- f/ |6 i& J( L+ s C
下面就是添加所需要的初始化代码,IC初始化如下:
7 k$ o+ Q$ a1 l( Z- /* Start device configuration. */) H0 ^# A7 a/ v" x& X4 B0 C
- ism330dhcx_device_conf_set(&dev_ctx, PROPERTY_ENABLE);
# N- l/ z4 Z$ ], S' J - /* Enable Block Data Update */$ u4 n; O! q5 t+ w. c/ R- H3 ^
- ism330dhcx_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
8 l" S i3 i9 D - /* Set Output Data Rate */
& {% g9 v- r- A% y - ism330dhcx_xl_data_rate_set(&dev_ctx, ISM330DHCX_XL_ODR_12Hz5);
* v2 x! U& T. a9 \+ N - ism330dhcx_gy_data_rate_set(&dev_ctx, ISM330DHCX_GY_ODR_12Hz5);$ r; b+ [0 e* h# f
- /* Set full scale */3 {- k' i0 `0 ^. M% J
- ism330dhcx_xl_full_scale_set(&dev_ctx, ISM330DHCX_2g);
2 H: t) R) u7 ^$ Q - ism330dhcx_gy_full_scale_set(&dev_ctx, ISM330DHCX_2000dps);
Q6 i, b7 j, t3 ~% ` - /* Configure filtering chain(No aux interface)6 R: i" z) W7 `/ j" ]
- *7 i7 M% H$ H/ |4 O- u
- * Accelerometer - LPF1 + LPF2 path1 V2 F% U) s7 k
- */
5 Z4 C- ?$ E+ h - ism330dhcx_xl_hp_path_on_out_set(&dev_ctx, ISM330DHCX_LP_ODR_DIV_100);6 N0 t- a0 H/ Y. j; O! i) ~
- ism330dhcx_xl_filter_lp2_set(&dev_ctx, PROPERTY_ENABLE);
复制代码 3 }( Z: F: \. F ]5 M; @0 S
在while中添加读取数据的code,如下所示:. {) G1 Y" [+ s
- ism330dhcx_xl_flag_data_ready_get(&dev_ctx, &dreg);
9 ~) \- M; Z F" @+ D - if(dreg)
' e" O3 O2 |! l% }$ N - {
/ _: w" q) J/ U+ Q% o4 @ - /* Read acceleration field data */, B, O+ X& |% {6 h
- memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));1 K5 h7 U4 r+ \( t5 A5 z
- ism330dhcx_acceleration_raw_get(&dev_ctx, data_raw_acceleration);- l; n. K* S% J4 v* F# G3 M1 g+ Z
- acceleration_mg[0] =; x! A$ \% x% g( U6 t( J
- ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[0]);& r! p. P* ]" G3 l4 L# j) s8 o# l
- acceleration_mg[1] =
$ U: p) H1 r5 n& d - ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[1]);
- _% }4 ^! y8 b4 q n y: F8 N - acceleration_mg[2] =) b3 Q' e7 X0 D- h0 A
- ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[2]);
: C4 g' C. c$ M, e# @% u - }1 g! D/ w3 B/ X2 Q
- ism330dhcx_gy_flag_data_ready_get(&dev_ctx, &dreg);1 q% Z3 M9 E; p
; { i9 ]* L: D4 m+ o- if (dreg) {2 t$ A/ O- u% T
- /* Read angular rate field data */
+ h$ m( X' t# O. y- o% `% i - memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));5 n. f+ o& F# Q
- ism330dhcx_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);0 A l7 c9 ~7 X9 Y, ^
- angular_rate_mdps[0] =8 Q5 O, x* t( L" m
- ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[0]);
! l- m2 R. u$ B- Q - angular_rate_mdps[1] =8 [. M2 C$ n, Q1 j7 s" I+ x( \% I
- ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[1]);5 X; L3 q2 {, J6 b
- angular_rate_mdps[2] =3 \* E; f: s0 u8 @$ K+ n
- ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[2]);7 k2 a$ Q8 y& z' M& t* ?1 U4 g& L
- 7 H. o& g% Y2 f& s
- }
! H+ d* X5 f* V1 y9 M. t: ~% l/ e: a& v4 g
# s7 T- @) P7 A( X- ism330dhcx_temp_flag_data_ready_get(&dev_ctx, &dreg);
- n; o) h; L2 r, R* k, s - % W5 w4 G) N8 L* O/ u
- if (dreg) {3 j# R6 \ f! L! |: Z( y$ L8 m
- /* Read temperature data */3 V2 m" a- O; H! L; Y
- memset(&data_raw_temperature, 0x00, sizeof(int16_t));
1 ]% ]/ |0 S, h& ` - ism330dhcx_temperature_raw_get(&dev_ctx, &data_raw_temperature);
1 X$ Q; E% T' o - temperature_degC = ism330dhcx_from_lsb_to_celsius(' l& T; }0 h! g, o
- data_raw_temperature);
6 q( w6 N1 q4 D; y% c; R3 Y4 L
|6 R ^& a* I# V. T s+ I1 J- }
复制代码 6 R2 D* V' `; w7 c
/ _0 |0 \( L5 v
- G4 i4 v& T k/ r测试失败,显示hardware_fault,硬件错误。想了想,是晚上有点恍惚,把时钟配置错了,板载的外部时钟是16M,而cubemx中的默认时钟是8M,修改过来,重新生成项目,debug,测试结果如下;' d% M: y3 o5 J. b Z& a
1 J: F! D$ K6 _4 a d A4 C; y, }% h. r+ G5 h+ w4 G
图36 Y$ @1 }; ?5 M
% X( n& D6 k! f3 q; c
- P# b4 a' z1 B& `* v1 Q, @
这段时间总是感觉知识浮于基础,得往深处继续挖掘学习。下次试一试Nano edge AI。
4 l, O9 s! @% M7 l U8 |! b# z+ n6 y3 ^0 W2 J! E5 [* q# `
|
属实可以,等楼主5 q7 b# o! j* q6 |5 @
论坛有分享Nano edge AI 使用教程的可参考,https://shequ.stmicroelectronics.cn/thread-636670-1-1.html5 `, ~4 o: ^' U2 C4 a
这个帖子之前看过,写的不错
加油
哈哈,稍等片刻。
必须更新!