过节吃完饭,回来继续测试板载传感器。本次测试ISM330DHCX,3轴加速度+3轴陀螺仪传感器,读Datasheet发现,是带嵌入式机器学习内核的,这部分还没有测试,趁这会先把基本功能测试一下。读完datasheet,了解个大概,看原理图,如图1所示:
! y% @ B$ R5 q, [# N6 p
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
% t; U$ B6 \- o0 f# E3 p4 Q& d2 f# X/ r. H4 J6 z
图2
. C% Y5 Q1 h" T! L* T0 c下面就是添加所需要的初始化代码,IC初始化如下:. l- f& |0 j, I" {9 I* P) }
- /* Start device configuration. */
8 S6 e! ]# V) z; J4 p - ism330dhcx_device_conf_set(&dev_ctx, PROPERTY_ENABLE);
6 g) g/ x6 m3 B - /* Enable Block Data Update */
$ S4 y8 z$ y i - ism330dhcx_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
) F' B8 M/ i; {! ~5 B - /* Set Output Data Rate */( \5 N! `% u8 W6 N% |
- ism330dhcx_xl_data_rate_set(&dev_ctx, ISM330DHCX_XL_ODR_12Hz5);
6 f' o5 p7 S9 ` - ism330dhcx_gy_data_rate_set(&dev_ctx, ISM330DHCX_GY_ODR_12Hz5);
5 R2 o% ]2 G4 j7 W: g' ` - /* Set full scale */
' m: d: a8 S# V: t! G& j - ism330dhcx_xl_full_scale_set(&dev_ctx, ISM330DHCX_2g);
7 L" r" ?% L' z* C `; i. [: O - ism330dhcx_gy_full_scale_set(&dev_ctx, ISM330DHCX_2000dps);6 ~) I' }% I$ J$ @6 q$ w
- /* Configure filtering chain(No aux interface)0 ?' Z" Y- I. M- m7 A
- *7 b( D3 ^. F1 o
- * Accelerometer - LPF1 + LPF2 path& W" Q# S7 \# y* }$ Y4 s3 Y
- */
7 B r& ?( f, ?8 n5 F! u' c* Z; e - ism330dhcx_xl_hp_path_on_out_set(&dev_ctx, ISM330DHCX_LP_ODR_DIV_100);) P" j5 f+ o1 {9 A
- 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- ism330dhcx_xl_flag_data_ready_get(&dev_ctx, &dreg);; z0 W1 h: H W
- if(dreg)
8 c- E( \( r6 o; t( N - {6 R- G, n/ L6 g8 N d( h8 I: C) \6 ?
- /* Read acceleration field data */1 Y' O4 t5 u1 L$ m/ I9 j
- memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));9 q8 H& E& _, {8 T
- ism330dhcx_acceleration_raw_get(&dev_ctx, data_raw_acceleration);6 z4 P' i- \. F$ }- [
- acceleration_mg[0] =2 K, q" j' v; X0 W0 O( O) R
- ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[0]);
: E: T$ A2 a( V. W m6 n7 y - acceleration_mg[1] =
4 T" G- M( w; n) o* ^ - ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[1]);
8 I" l1 l( y+ m1 ?( Z2 T - acceleration_mg[2] =
, m) @$ j' I* {, y8 G* V - ism330dhcx_from_fs2g_to_mg(data_raw_acceleration[2]);
f2 w- L! o" b: E) Z% U6 v- H - }9 X, _! [/ {! z" A3 R# E
- ism330dhcx_gy_flag_data_ready_get(&dev_ctx, &dreg);
% K+ P$ H; _& S Y5 i, t- Y - 2 c( h- [% }3 E" k7 }
- if (dreg) {5 Z7 p' r6 \5 a5 P; _! g! r" W- G |
- /* Read angular rate field data */
/ c. {+ e. Y' N5 _/ s! X/ d - memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));
! m/ A' g4 H5 v9 K: _* F8 ?* Z/ M - ism330dhcx_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);* K/ E! L) `3 [ L" R& M
- angular_rate_mdps[0] =
/ B- U* H1 l. ]. D# D* V - ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[0]);0 u+ {6 ]3 l0 r0 f2 T
- angular_rate_mdps[1] =7 `1 O7 S7 z4 c+ U/ n- d) W
- ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[1]);- k2 |. z0 u8 H8 a
- angular_rate_mdps[2] =9 U! h9 c* Y% Z
- ism330dhcx_from_fs2000dps_to_mdps(data_raw_angular_rate[2]);8 @2 X3 \8 C9 W2 f1 M
- 0 ?) Y O2 P- c- j& `
- }
\3 }9 X& R2 C - 7 u# ?: K6 M6 h3 x ]3 |
- ism330dhcx_temp_flag_data_ready_get(&dev_ctx, &dreg);1 X; X: P/ ?" \3 l) e
- + ]* h# k2 l0 s
- if (dreg) {
3 K; z! k* n/ O - /* Read temperature data */
& J% q K E9 [# b1 y+ T - memset(&data_raw_temperature, 0x00, sizeof(int16_t));) k7 H( |4 }: G- a0 C7 ?0 F
- ism330dhcx_temperature_raw_get(&dev_ctx, &data_raw_temperature);9 x& t+ F* I0 B/ `- v# ?( A4 q( z& o
- temperature_degC = ism330dhcx_from_lsb_to_celsius(( k# Y6 T2 `* x1 w' g$ w! z. W6 J
- data_raw_temperature);
! W) s% n. D5 X5 d D
& j; m. i, a; x7 l8 ?* u- }
复制代码 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
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
|
属实可以,等楼主2 i0 E: D0 w" M
论坛有分享Nano edge AI 使用教程的可参考,https://shequ.stmicroelectronics.cn/thread-636670-1-1.html
<br /> <br />
这个帖子之前看过,写的不错
加油
<br /> <br />
哈哈,稍等片刻。
<br /> <br />
必须更新!