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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
三轴计步伐

! T0 R- {* V1 U& L; w. J0 H
; Q. [/ C6 n4 N% X6 p
8 c3 A& Q8 t/ L* [, H" V, }( g& ~( `; A8 Z  z* @

  j1 O+ y# t0 b. a. c/ i5 ?" R    三轴记步
8 J" h+ W! G3 F8 N& X    1相关简介  `2 _; q2 D+ `$ ]* O
# z" d- y  K$ I' w. ~7 \+ H
    本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数。
$ r& s: c" Y- u$ |
/ H; n0 C+ W3 Z$ d    I2C 总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议。, a9 e9 {  H4 e0 B  b# r. |4 j8 p+ J  O
    两线 I2C 串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL); ) P9 X9 ?3 W# S. }- {  x- k9 ^
    支持两种通行速率,标准模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);$ t. k7 K$ k8 }. z
    时钟同步;
0 p+ H0 S4 ^' F  [5 X: h    32 字节的发送接收 FIFO;+ O- N, M: }3 @/ N& x2 m
     主机发送与接收操作;5 r  D" @3 [5 q( Z4 w
    7 或 10 位地址,7 或 10 位混合格式发送;
) L# }8 P6 p; w    块发送模式;) m9 _+ T9 f; H5 n5 r: W
    默认从地址为 0x055;9 v, K. |# X- i: u0 a
    中断或者轮询操作模式;% O5 K' z. ^2 U, A6 q
    可编程的数据线保持时间;
0 T4 ~8 `3 i, x9 s8 e/ _5 j/ ]0 Y/ R
    本次使用的三轴传感器是 LIS2DS12。LIS2DS12 是一种超低功率高性能三轴线性加速度计,具有用户可选择的尺寸 2G/4G/8G/16G,能够测量输出数据速率从1Hz 到 6400Hz 的加速度。并且具有集成的 256 级先入先出(FIFO)缓冲器,让用户在存储数据时,限制主机处理器的干预。LIS2DS12 支持 SPI 和 I2C 两种接口, 我们这里采用的 I2C 接口。3 T* Y7 f1 c# }  }7 Z: h

/ a. G3 M9 A$ B1 ]9 W
% m$ B" D; s4 i* r, [7 j    2硬件设计4 Z5 [9 O1 ~+ ~: W  L( `/ i; J( H

; R% H6 C! A* W4 F! h) G0 ^    LIS2DS12 一共有 12 引脚。1 脚 SCL 是时钟信号。2 脚 CS 是 SPI/I2C 使能引脚。第 3 引脚是 SPI 的数据输出,由于这里用的 I2C,这个引脚空余。引脚 SDA 是 I2C 用来传送数据的。还有两个中断脚 INT1、INT2,打开之后,当 LIS2DS12 检测到步数,能产生中断电平。7 X, ^7 i1 N  a6 w: A8 r* _% _1 O. ?) V

) W. L5 D# p2 u" Z1 ^    : T5 L! j! f% c' ]4 i
    图 1
0 n' o0 E* `" Z% b" o& Q/ \6 [* |  @, J

7 G/ W+ C% y& w, W5 S8 A    3软件设计
$ V" c; w1 ?+ a* d5 \; i
8 Z* S' R& \) ^  K  x. g, x$ e    首先,完成系统初始化,调用 system_init(),可以参考前面的电量检测。接 下 来 就 是 I2C 的 使 用 了 。 第 一 步 我 们 配 置 I2C 的 相 关 引 脚 。
: V; o( f( I+ `% `8 B7 \' _/ s" B5 j2 J/ h, |% w5 ^
    GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);" u( l: B9 H- v& S; Q
     GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);
$ T& g& R" K; `% o' ]7 \9 t
6 I7 \' C8 O8 e- y! y/ [% V    第二步,就是通过下面函数初始化 I2C。$ W2 J4 s/ |; S6 I
5 s5 N  u0 A: x. ]) h7 |
     N5 `% k0 h3 M" B: v' e6 ?/ \+ E
    代码1' a( O3 M2 s8 M) F

5 c1 S8 \8 Q7 w( h7 r8 |    完成 I2C 的初始化之后, 我们就可以通过 i2c_eeprom_read_byte(uint32_taddress,        uint8_t        *byte)        对        LIS2DS12        进        行        读        操        作        ,        通        过, g  S1 o3 y9 i; C6 O' K
& ^1 e6 h% r/ Y0 E+ a( q
    i2c_eeprom_write_byte(uint32_t address, uint8_t byte)对 LIS2DS12 进行写操作。% p! ~9 t6 x. A# p
    通过 I2C 的读写函数,对 LIS2DS12 寄存器进行读写,就能使用 LIS2DS12。详细资料可以查询 LIS2DS12 的 datasheet。
& A% R2 H! {( h6 e! s9 g/ O3 @    首先,我们是调用函数 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(),记步测试。
  P7 a) W. a; J# g  ]
9 t3 D4 F" J. R/ B' _/ h    
7 y- G1 V4 Z7 L' x  x& W: k    代码2
& R) s" C6 J" Z4 V" v. W- U  Q; q
; }' X! i  P$ S$ H9 Y% r1 H& T: D' I+ N
    4  实验现象
3 D3 ?; n- W3 ?+ V$ u  p9 K
" }$ j# B0 Q7 x8 S3 t6 H    首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。. U- t. d7 r0 o  K

3 c6 l/ z/ q1 c4 _    (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
1 G2 ]4 a- L0 ]( E8 l
5 g' ~* e3 i3 w, q) n    (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
# `; i* a% x3 v
0 E. `8 u. t1 F6 f+ K' ]9 K9 T+ C6 |: u  u1 G' |
    (3)点击打开串口。
6 ^9 }$ s& h3 B  I* F2 C+ v; ]8 C/ v" }
   4 l4 V5 P% H% u2 c( K- A, d8 H
    图 2; Q, r* g  i! W# P7 a: u  w9 J1 ~- z
    配置完串口之后,打开我们提供的代码。
8 k3 e6 ]2 A+ w7 k
# z$ ^8 w+ @3 T- D* s4 _: D0 i    (1)点击仿真按键。
+ T' Q; H8 H+ E* K
/ w3 ^9 S1 x7 e9 q    3 z  c8 [* i8 w% }6 O) V! S
    图 3
5 b, i. R: l; _    (2)点击运行代码。+ ]! p. I+ X# t/ O

# z3 ?2 f$ ?8 V" L            
9 T( p5 b$ K: l+ H+ H1 A' \    图 4
2 i1 @4 m# d; p8 e" T8 c
) @; z+ L5 E( A" F    完成上述操作,就会看到串口调试助手区域 4 中会显示出步数,我们摇晃单片机,会发现串口调试助手打印出新的步数,并且步数在增加。: H6 `+ R: U6 Q% `/ S1 A
' B2 W* w8 z% o
   
* V& \( w3 E, A6 @    图 58 l) N1 n8 h# \' O* K
) n# B) X. _2 m0 P( u5 O/ ]) b
, E+ S- q2 Z  {) F# n- S$ M- c

0 ~6 R( \; _0 [, e+ y' ~文件下载请点击: 6_(100%开源)蓝牙心率防水运动手环_三轴计步伐.pdf (612.82 KB, 下载次数: 0) , S- V) V, e+ r5 m" D
6 e' R6 Z: a5 i+ B2 R4 l% z
4 u5 g& S0 V9 k& n- L4 I" o( r8 [
/ H; G3 M, c: _
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-28 19:50 , Processed in 0.171875 second(s), 28 queries , Gzip On.

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

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

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