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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
三轴计步伐
0 r  o  B) S3 F: d7 V
6 z* n- l0 n% q6 U% u8 u. `# L2 ~# E

3 T! p  d( J2 a1 h# e7 ^0 Y8 H& d$ @: T. d* P$ L+ R) D# H6 \$ C
: P  l5 H4 m% j, G) J
    三轴记步
. r* L4 j0 N3 L  H    1相关简介
& d( G$ C8 j& `. r, {4 o% \6 j) h! T) i7 x7 q# a
    本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数。% o) q' t1 c, A" Y7 v

: }- F6 s3 W- e2 p# C6 f' t* T    I2C 总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议。2 o3 ^5 v2 {2 z4 T
    两线 I2C 串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL); % W- e$ o, n8 w, c" r+ e; S" q
    支持两种通行速率,标准模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);
5 }* A# Z- b  o* ^: A' D0 z    时钟同步;
* I- p0 H+ _' V7 _2 p  C    32 字节的发送接收 FIFO;7 t; m6 Z& W6 i5 ?5 l4 v2 d* h/ a: m
     主机发送与接收操作;/ ]3 P  Q$ p1 ^. Q1 O5 d
    7 或 10 位地址,7 或 10 位混合格式发送; ! H6 o. @$ t! u) @, ?; T
    块发送模式;8 F: p* z' B5 a; L9 L; t
    默认从地址为 0x055;
3 S2 l+ Z0 D2 j    中断或者轮询操作模式;
. W9 ~" V& x" ^% u* u    可编程的数据线保持时间;
8 ~' g( i$ I. h& u
4 w. ?* s3 `& {# O/ j    本次使用的三轴传感器是 LIS2DS12。LIS2DS12 是一种超低功率高性能三轴线性加速度计,具有用户可选择的尺寸 2G/4G/8G/16G,能够测量输出数据速率从1Hz 到 6400Hz 的加速度。并且具有集成的 256 级先入先出(FIFO)缓冲器,让用户在存储数据时,限制主机处理器的干预。LIS2DS12 支持 SPI 和 I2C 两种接口, 我们这里采用的 I2C 接口。$ I( i6 d/ ]! K/ C6 I* _

' N) O- U4 I; P5 c7 D  `- c
5 z9 m5 U- B0 j# {    2硬件设计" S3 o/ t6 r3 P% i! w& a/ w* b
! g0 e% X" ]$ y7 n: k, o* N
    LIS2DS12 一共有 12 引脚。1 脚 SCL 是时钟信号。2 脚 CS 是 SPI/I2C 使能引脚。第 3 引脚是 SPI 的数据输出,由于这里用的 I2C,这个引脚空余。引脚 SDA 是 I2C 用来传送数据的。还有两个中断脚 INT1、INT2,打开之后,当 LIS2DS12 检测到步数,能产生中断电平。
& J9 c6 v7 c/ ?3 ~' {/ k* x- ?& y1 A+ s3 P( H7 ~" S/ t
   
  x0 `: }  T8 J, ^$ M) W% Y    图 1
) _2 [+ F/ Y3 K/ u6 ^2 I
* D) L8 m9 Q) J7 w2 j4 ]; Z" O6 q$ i' Q
    3软件设计
  c$ W$ Z- M1 h7 H
" l! g" V' ^! }2 a  k    首先,完成系统初始化,调用 system_init(),可以参考前面的电量检测。接 下 来 就 是 I2C 的 使 用 了 。 第 一 步 我 们 配 置 I2C 的 相 关 引 脚 。0 T* z5 l$ y6 x

+ A- A* n- n0 e    GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);
/ Z& c. r; H" _     GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);
3 e, V- @4 G0 ?3 t" a, Z) E8 ~. A& F
    第二步,就是通过下面函数初始化 I2C。3 t1 ~7 K) j* b# l
. M2 w7 r% G$ z$ k; C0 T9 N  k2 y
   $ _8 a! ]# x  o9 _: N3 m8 T  D
    代码1
1 E$ v' [* o) J# |$ C) `( n+ h& ^
% U8 D+ {6 ?4 j' A0 a    完成 I2C 的初始化之后, 我们就可以通过 i2c_eeprom_read_byte(uint32_taddress,        uint8_t        *byte)        对        LIS2DS12        进        行        读        操        作        ,        通        过* B4 F3 Z- H6 r1 m
1 i5 |; ~% }. ]6 J' c& I; A5 h
    i2c_eeprom_write_byte(uint32_t address, uint8_t byte)对 LIS2DS12 进行写操作。8 U5 J" z3 `5 L( U
    通过 I2C 的读写函数,对 LIS2DS12 寄存器进行读写,就能使用 LIS2DS12。详细资料可以查询 LIS2DS12 的 datasheet。
$ V: _* y# p* T; n    首先,我们是调用函数 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(),记步测试。& \! k; O6 Q7 L8 q1 d. H

. }5 H, s5 p  L    $ v( z) }& I9 r0 Z" |' {* t& Y
    代码2
3 P3 T/ c9 {$ k
: A3 y3 z+ Z3 b9 C# \4 E0 ]0 u% D1 p8 P
    4  实验现象
% C3 `1 {8 ]6 |7 D
1 w" X# B8 P8 R4 w2 W( U. F; o! x    首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。" `3 a+ }: k: `- o% M$ l' F
& N7 b6 D. O5 u: I# W4 t
    (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
4 k( O( o4 S6 W8 X0 L1 {& s+ L' z6 {7 j6 o
    (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
9 \, V: Z6 j9 ~8 E! T. N/ E! T+ p; Z9 a9 }: p3 p
4 l' s+ @) D5 m  \4 E
    (3)点击打开串口。
& z% _: R6 R5 i: S' j$ @
8 v6 U! r. A1 \$ |7 z   
0 m7 Z$ n$ X% Q/ N- o    图 2
6 B  C7 Y8 c) I0 s    配置完串口之后,打开我们提供的代码。; m1 ^+ C# a- |  J
5 F0 t! U% l' [$ ?* e& j
    (1)点击仿真按键。
$ J# T& t  K6 L; k% F" E
- m! U3 t2 V9 m6 h( |9 f    
$ W! Y% r1 U  i    图 31 [0 {. T* Q5 B% [5 J
    (2)点击运行代码。) t. r) K6 I8 z. x0 L+ f

* c1 _" O' I( O8 [            
# M9 N. l- t- \) X5 x' R2 V    图 4+ f$ }& [8 r0 e3 |" |) W

& E/ r8 s) d; V9 X! u$ Y) y0 q6 e    完成上述操作,就会看到串口调试助手区域 4 中会显示出步数,我们摇晃单片机,会发现串口调试助手打印出新的步数,并且步数在增加。
( H( S/ o) r* m7 Q$ l9 [9 K+ v. s, I% Y# S  p/ n5 o) u8 j
    ; ^1 r( p- l* o: O) i
    图 5, N! Y! T) o: w

# R. n- e% e4 Q& ~  Q0 }! {, O
" S/ d% T0 _$ h9 Y
' t+ c4 A% B3 |文件下载请点击: 6_(100%开源)蓝牙心率防水运动手环_三轴计步伐.pdf (612.82 KB, 下载次数: 0)
# A7 n6 t; k3 X# d
& D+ W" U/ z7 {$ [/ p8 E
2 [9 K8 P# V0 I  L& f+ M0 ]/ w  Q5 ~( c8 c
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-26 14:32 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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