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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

. @- @$ a0 K; b7 J8 d
' m7 B" h9 R3 h, L# m7 C! r6 w3 X5 R$ n2 s
$ Y4 r% G; X& D+ D3 b9 n
! O$ Y' N: G! w$ W0 w7 \
    三轴记步- C2 c9 G  [# `1 m
    1相关简介' Q2 a$ Y* O. O6 i

! X! [& `7 ~3 k+ g; y( r9 x    本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数。9 r  A: [% C% `) w$ H, y0 P0 e

1 p4 Z' r" j  J    I2C 总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议。
6 L9 l% I6 J: L' X0 d    两线 I2C 串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL);
5 G7 b3 X* F6 I0 D    支持两种通行速率,标准模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);
% p# g5 A% c5 [0 p9 l, ^9 e" j    时钟同步;0 ?5 D* Z$ Z* M/ `" b
    32 字节的发送接收 FIFO;
9 \, U- B& {! V; U; I2 e     主机发送与接收操作;
# b0 z8 |4 X# P6 B' h5 W" a, S    7 或 10 位地址,7 或 10 位混合格式发送;
1 j4 ]) R  }$ A& t% S% n; G" P    块发送模式;5 `3 U+ q# J8 Y$ R6 E9 e
    默认从地址为 0x055;7 c- R# G- S9 D- Y- i
    中断或者轮询操作模式;
  y7 j& A9 ^3 A: Q) h& n    可编程的数据线保持时间;
+ n+ r: j; v- s. w
4 l- d+ f+ @$ ]1 f" N' l2 @    本次使用的三轴传感器是 LIS2DS12。LIS2DS12 是一种超低功率高性能三轴线性加速度计,具有用户可选择的尺寸 2G/4G/8G/16G,能够测量输出数据速率从1Hz 到 6400Hz 的加速度。并且具有集成的 256 级先入先出(FIFO)缓冲器,让用户在存储数据时,限制主机处理器的干预。LIS2DS12 支持 SPI 和 I2C 两种接口, 我们这里采用的 I2C 接口。  w  F. s3 i- d% a2 S

! g9 h9 J" [/ A( W) q, G) ^; ?9 c/ y# S5 c
    2硬件设计
7 a0 ]" o, V  ~- ?4 o% \! b0 f* |& m, U6 B$ D$ o4 T9 D4 y4 a
    LIS2DS12 一共有 12 引脚。1 脚 SCL 是时钟信号。2 脚 CS 是 SPI/I2C 使能引脚。第 3 引脚是 SPI 的数据输出,由于这里用的 I2C,这个引脚空余。引脚 SDA 是 I2C 用来传送数据的。还有两个中断脚 INT1、INT2,打开之后,当 LIS2DS12 检测到步数,能产生中断电平。" S; v- a: x8 P) N" c2 B; z

3 V) _3 _' s8 G0 Q/ I     7 ^) z+ D+ _  L' ]. e# F2 m
    图 13 a: {! K% w% a4 M4 J* H- b5 e
6 k) f$ o5 O0 O4 e

$ L  L  E# h2 O' V* {+ c    3软件设计. r4 l8 u* N, d9 b
( t8 U# u+ O) X
    首先,完成系统初始化,调用 system_init(),可以参考前面的电量检测。接 下 来 就 是 I2C 的 使 用 了 。 第 一 步 我 们 配 置 I2C 的 相 关 引 脚 。
6 o( ]* j( w7 m+ f, A) y# `  j/ h  F5 ~% k! N+ K
    GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);* R* ]1 P- F0 u# l3 ?1 H- O
     GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);7 _! I/ N5 d* W3 F
& d- L$ F9 x$ N6 F8 d5 v! q
    第二步,就是通过下面函数初始化 I2C。
2 q1 L0 T, n  q) ~" q7 ]# o
! n* t+ W4 g- H9 l7 @    
4 t, ^' k/ C$ N, V  P    代码1
! y. e. X: K) W/ t* y3 `5 @4 T4 u5 m' t
    完成 I2C 的初始化之后, 我们就可以通过 i2c_eeprom_read_byte(uint32_taddress,        uint8_t        *byte)        对        LIS2DS12        进        行        读        操        作        ,        通        过
- t5 y& r9 F7 B5 P, K# A& U1 `) M4 ^0 _/ i
    i2c_eeprom_write_byte(uint32_t address, uint8_t byte)对 LIS2DS12 进行写操作。. G2 `7 g( k8 p
    通过 I2C 的读写函数,对 LIS2DS12 寄存器进行读写,就能使用 LIS2DS12。详细资料可以查询 LIS2DS12 的 datasheet。
2 ^4 \6 v/ W$ E! K: `    首先,我们是调用函数 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(),记步测试。3 {: D  D5 l( K0 f! C* J5 M( X
% W* r$ l+ r9 }6 P, y1 ]! N
   
3 e- J4 C% ?* ^1 \    代码2: y, G5 r) h6 R5 |5 Y. W

2 g, F( R# \: [( M7 o
5 C# `  M: z( z    4  实验现象
, n& k. ^1 [- A( V& ?
1 H$ z! M5 l* T. H8 j    首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。8 S2 e9 v- [- k/ ^' t  Y

- T4 g6 T4 Z) Q  [8 [. N) s    (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。" l, v2 \1 }7 r5 Z

) y8 f5 Z% J# \# O- J6 f' B    (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。; A: S9 W$ a8 f. i5 m' M+ j

7 v. Q' ]- @0 g/ ]- r, G9 e4 J, O  d% A- V4 S* C; f# c4 g
    (3)点击打开串口。
% M6 V* K$ r/ F. X' f" @. O' ^2 O! k6 K. b2 F: ]
  
9 E2 J% I( E* ^8 K    图 29 q! H, W- `& u- d- l4 ~
    配置完串口之后,打开我们提供的代码。& ~; T5 ]1 ?7 Y% j% {
8 q1 ~1 }' b- b
    (1)点击仿真按键。4 ^! k7 o2 c* c
9 v& D8 F3 |7 e: Z
   
6 G8 l! C* T; r$ I% a2 j+ z    图 3
# l; `/ m( N5 g3 i# r% e    (2)点击运行代码。, _/ S8 T9 ^! ~+ k, q/ [, Z/ Z
+ F! ^+ d* M1 ]
           
: D8 v9 c" f4 Y2 V    图 4$ E! @- J. l- y- O- U+ ]4 Y/ N

  S; h1 b9 e9 ]9 [3 n    完成上述操作,就会看到串口调试助手区域 4 中会显示出步数,我们摇晃单片机,会发现串口调试助手打印出新的步数,并且步数在增加。
; L" r, Q0 ^& }8 n) g( z
9 D6 H6 K$ f) E( g5 N( |% B    
6 K5 u7 {7 w3 D    图 5
* s3 v; V1 b$ Z" H* z  f2 d: u* l" s! z) Y( b/ f3 T' m( u( G  O

! ]1 @7 D" ~! _* n7 \; C5 `+ T* Q
文件下载请点击: 6_(100%开源)蓝牙心率防水运动手环_三轴计步伐.pdf (612.82 KB, 下载次数: 0) 1 [  J$ ^8 d  i: `  d' F% m7 \+ m* [
& S2 S5 u. |/ z6 Z. ~
5 }& A5 }5 @) I. N1 s$ _
6 i: V$ C, T1 Y% [% g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-13 04:15 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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