找回密码
 注册
关于网站域名变更的通知
查看: 177|回复: 0
打印 上一主题 下一主题

【开发教程8】疯壳·开源蓝牙心率防水运动手环-三轴计步伐

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-3 14:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
三轴计步伐
* y+ r9 |3 ]" c" t7 E7 T. U* t
2 D8 G- f( Z) Z8 R% g% ?8 J$ B$ u

/ |4 M% z! a* X: I1 p6 l. M! ?3 Y% ?: K- u- d0 ]5 L

! O9 `4 b: T* u. b+ V    三轴记步- h0 z& N  s. ?$ z6 ^' P+ n+ U
    1相关简介; {5 v' i( }* o1 K9 [2 {3 ?/ p
4 X! C( R# t, D* n0 B
    本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数。
" ~; y, V% ~$ n9 O( K5 X$ d. K' k* E8 s5 e8 J
    I2C 总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议。
- m( n* r$ c9 m    两线 I2C 串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL); 6 [0 O4 ?- x% u! L7 m$ D
    支持两种通行速率,标准模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);
$ U! x  h! ]) O1 s: O    时钟同步;  _2 c4 C& ]' j0 v
    32 字节的发送接收 FIFO;  V4 V) q- V+ C$ A) f
     主机发送与接收操作;5 I9 H$ C" X8 D1 h
    7 或 10 位地址,7 或 10 位混合格式发送; 0 t0 C) z  V, k) x4 H4 [
    块发送模式;& ^; w5 d/ B  @0 s" {9 [
    默认从地址为 0x055;
* }% e( r+ I9 l8 E3 n1 x$ |    中断或者轮询操作模式;
6 K' v6 j5 _9 p2 N$ C' v    可编程的数据线保持时间;9 ]; w7 }- R$ t$ \3 U6 C7 R- I/ G& {; D

) R# M6 k% L) m    本次使用的三轴传感器是 LIS2DS12。LIS2DS12 是一种超低功率高性能三轴线性加速度计,具有用户可选择的尺寸 2G/4G/8G/16G,能够测量输出数据速率从1Hz 到 6400Hz 的加速度。并且具有集成的 256 级先入先出(FIFO)缓冲器,让用户在存储数据时,限制主机处理器的干预。LIS2DS12 支持 SPI 和 I2C 两种接口, 我们这里采用的 I2C 接口。" t* |" P* c* M; Z! y
: Y5 n6 p" [1 \( i

+ \- a/ S+ O. \. \$ c5 x  V, `    2硬件设计5 [, `3 Q5 I) @& G1 [1 J: }9 r1 h( B7 O
; a8 ^) ?8 }# o1 s
    LIS2DS12 一共有 12 引脚。1 脚 SCL 是时钟信号。2 脚 CS 是 SPI/I2C 使能引脚。第 3 引脚是 SPI 的数据输出,由于这里用的 I2C,这个引脚空余。引脚 SDA 是 I2C 用来传送数据的。还有两个中断脚 INT1、INT2,打开之后,当 LIS2DS12 检测到步数,能产生中断电平。/ S) b: R/ H9 x" b

% Q& v6 b+ h: k: w. ]- I/ Q    
, R; Z2 d5 e4 x' u' x6 e    图 1
/ q' f/ G& T; D  s  P9 {# z7 A2 V! Y4 O4 I* ]( N. Q

4 ?0 d  U1 ?% r" ^: S% L! s    3软件设计
" S& X8 |6 F3 \5 H, Z9 U' @, l/ p' T0 W" H7 ~* g) Y! }$ t2 n' k, y
    首先,完成系统初始化,调用 system_init(),可以参考前面的电量检测。接 下 来 就 是 I2C 的 使 用 了 。 第 一 步 我 们 配 置 I2C 的 相 关 引 脚 。6 o0 a) k2 n1 g" ?5 g6 [2 H5 W
8 ?  C* e) J! ?# }2 |
    GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);
- }; _7 p+ p- R3 j. G% Q' X2 [$ Y     GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);  E$ F& y  F6 L1 _
2 z$ ]+ g1 O6 g' B
    第二步,就是通过下面函数初始化 I2C。
; o* [# }3 K# K) `$ `% E+ {8 ]( C) s
   
- s5 S9 {5 ^2 r2 |2 d5 E0 N    代码12 \( d; p  t$ P8 R+ j; r; s

+ ^6 f- l1 r+ y4 U6 d$ R    完成 I2C 的初始化之后, 我们就可以通过 i2c_eeprom_read_byte(uint32_taddress,        uint8_t        *byte)        对        LIS2DS12        进        行        读        操        作        ,        通        过, E5 j$ Y7 M2 P+ E8 j7 G
' p' V+ ~) `) H1 J; G* q) d5 p
    i2c_eeprom_write_byte(uint32_t address, uint8_t byte)对 LIS2DS12 进行写操作。
! `  C! l5 s" v9 G* h    通过 I2C 的读写函数,对 LIS2DS12 寄存器进行读写,就能使用 LIS2DS12。详细资料可以查询 LIS2DS12 的 datasheet。- F0 P( l' F, R( ?
    首先,我们是调用函数 status_t LIS2DS12_ACC_R_WHO_AM_I_BIT(u8_t *value) 读 取 设 备 ID , 判 定 是 否 为 正 确 的 设 备 。 然 后 , 我 们 调 用LIS2DS12_ACC_W_SOFT_RESET(LIS2DS12_ACC_SOFT_RESET_t newValue),软件初始化 LIS2DS12 设备。如果读取设备错误或者软件初始化不成功,DA14580 会进入一个空的死循环。最后,我们会进入 Loop_Test_Pedometer(),记步测试。( l& s2 T2 _( ?9 ?' x: Z5 }" y
6 w0 z, `% n. v
   
" k5 H% p& t- _3 s4 O  f    代码25 F/ {# t; Q1 h6 v

5 m1 ~+ A6 t6 v3 _3 G" l0 m
1 g# e' X  a4 W    4  实验现象
4 V! e% L; {' [; a( j( [1 H
0 r. a) \) Z! t" R6 u    首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。
: ]6 k3 I- e) o9 N2 ~
& I6 P9 @! I' _' S( a- z4 f    (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。7 v3 v" f) L: w' l

9 \6 y$ E# i' K# c1 ?    (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。5 u: [  r+ g) V; y  L9 f

4 t/ V9 T& S+ Q# s
) p, z" C0 a# k0 T5 e    (3)点击打开串口。/ g7 y! p6 B0 ]' g8 e  T# m
. Z) ?' ~8 X! C% v
   
% d5 p. w4 E1 j9 v8 Z    图 2
; H. j& k( Y0 V- |1 r5 |    配置完串口之后,打开我们提供的代码。
& a/ k, [7 l# ]8 I6 R, l( w
% h& d5 F$ S1 G9 _. R% N* I1 t5 j    (1)点击仿真按键。( V7 `% \% l% X1 w$ i
. i8 ]! L  Q3 ~5 O2 L5 J
   
" N& o) _9 F& o' ?4 U    图 32 B3 K0 B  n" _4 B" R
    (2)点击运行代码。
- X1 N" V" [% p$ |( _
% Z8 N, F& x8 N+ m" L" e             4 c1 [) ~5 [- j- b( }4 N' H) Q
    图 41 B. g6 B+ O: G4 G

" c! g( V+ u& b    完成上述操作,就会看到串口调试助手区域 4 中会显示出步数,我们摇晃单片机,会发现串口调试助手打印出新的步数,并且步数在增加。1 E6 N. o( `, |. W: m. ?  I
) i( z1 n. [6 z( M
   
+ P. [: t1 B# ]2 Y8 |" S7 L    图 5. n/ m( F. b3 D7 b
$ W5 ^6 q6 Y- I$ F2 r# N% z8 w

4 H2 ~2 Z! U1 ~, a5 c1 [/ c6 `* a6 }
文件下载请点击: 6_(100%开源)蓝牙心率防水运动手环_三轴计步伐.pdf (612.82 KB, 下载次数: 0)
' k2 z4 r* P5 w5 x8 D7 S
, c2 w; C9 x$ o
  [7 T% @* B! m, x9 g! @  m, S8 X
5 ^2 f5 O; n  P! H, N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 01:58 , Processed in 0.140625 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表