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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
三轴计步伐
/ d+ A+ w7 Y. [! y

+ Z! q* e& G: W7 d5 f* F) D, P8 ]2 \( q
# A- ?  L: J3 J

. T* X0 b# P3 s; ~- a3 }    三轴记步
+ C  U) N# S2 K    1相关简介
% M+ s! N' w0 k* W
$ y# X  p+ T# c    本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数。7 e4 }/ p6 A3 n& |4 |; H9 `& ?; Q. l
4 T' Q: k* x$ J5 a
    I2C 总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议。
9 P# u) f& A: P9 \# y    两线 I2C 串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL);
$ r6 v' i, ], F* x- A. S2 `; ^- X    支持两种通行速率,标准模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);
( `) `+ b7 Q; l    时钟同步;, e5 _+ ~4 |+ Q7 Z3 U2 `
    32 字节的发送接收 FIFO;
+ `* B* V* V6 d4 C     主机发送与接收操作;
' w. U) O& O( O$ v8 y0 i6 q/ c% W    7 或 10 位地址,7 或 10 位混合格式发送; & s$ I1 i! A. r% }5 N
    块发送模式;6 G' n" o' |$ J
    默认从地址为 0x055;+ L$ C' z* V9 C
    中断或者轮询操作模式;
' z) o; A0 V1 K. G. z$ g    可编程的数据线保持时间;8 G/ D! _1 p8 K; E* h* U  d# d& L

9 j* [% Q7 ?! ]    本次使用的三轴传感器是 LIS2DS12。LIS2DS12 是一种超低功率高性能三轴线性加速度计,具有用户可选择的尺寸 2G/4G/8G/16G,能够测量输出数据速率从1Hz 到 6400Hz 的加速度。并且具有集成的 256 级先入先出(FIFO)缓冲器,让用户在存储数据时,限制主机处理器的干预。LIS2DS12 支持 SPI 和 I2C 两种接口, 我们这里采用的 I2C 接口。
+ `, v2 I' x5 f! a" W  G1 r/ G$ s2 @& }, v
3 y2 H; [# z, ?) g, P
    2硬件设计! d3 g( R; X, I( O1 O
3 x1 _# ?8 S' r$ k1 ^2 Q
    LIS2DS12 一共有 12 引脚。1 脚 SCL 是时钟信号。2 脚 CS 是 SPI/I2C 使能引脚。第 3 引脚是 SPI 的数据输出,由于这里用的 I2C,这个引脚空余。引脚 SDA 是 I2C 用来传送数据的。还有两个中断脚 INT1、INT2,打开之后,当 LIS2DS12 检测到步数,能产生中断电平。, [( a0 _; i( Q6 ~) U$ q. M
5 h/ V5 z6 @: q
   
4 m& X: X6 O% a) f, p  W3 Q) \1 @    图 1
2 e# D$ X2 z( b. z% a# Z1 h" x. |; k
+ Q$ W+ f0 V3 x" n0 N) f& c/ J# S/ L( e. F$ e: q2 ?
    3软件设计% Y9 Z. v# w% X3 q( ?
/ ~5 d, i; x/ W8 b
    首先,完成系统初始化,调用 system_init(),可以参考前面的电量检测。接 下 来 就 是 I2C 的 使 用 了 。 第 一 步 我 们 配 置 I2C 的 相 关 引 脚 。
) L! |/ M6 n# ^7 T7 s$ z% m7 j) l/ p: v( N! X
    GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);
* f$ x; f! }1 \! |     GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);
% p  m! {# m2 `# V# t7 E2 H
+ O" a0 V- R8 K. C$ \    第二步,就是通过下面函数初始化 I2C。
% n: A9 \# w; c" |: s, k( q3 j+ h1 }& o
   ) S! a1 b5 v4 w% S$ O, y3 C
    代码1
: }4 T6 D$ D3 {3 j3 t! h+ S/ {" b
" x# a0 ^# f5 ?+ e6 p# R    完成 I2C 的初始化之后, 我们就可以通过 i2c_eeprom_read_byte(uint32_taddress,        uint8_t        *byte)        对        LIS2DS12        进        行        读        操        作        ,        通        过% @7 ?9 `% S0 ^; L8 B

+ U2 Y/ m: A) l0 L; f$ R' n: ]    i2c_eeprom_write_byte(uint32_t address, uint8_t byte)对 LIS2DS12 进行写操作。
( J8 |6 B! ^$ \( i4 m$ Q% S    通过 I2C 的读写函数,对 LIS2DS12 寄存器进行读写,就能使用 LIS2DS12。详细资料可以查询 LIS2DS12 的 datasheet。
# E  ~* s' J9 c% ]    首先,我们是调用函数 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(),记步测试。$ |0 y! R. X1 I$ O, e. x

$ j9 H/ N5 e! c# B    & T3 @: f# R* Q2 t' g
    代码2
$ e, v( Z, _' ?- D3 Y3 ?* `! |, ]1 i$ k9 V* d! n/ n# T

. v5 v  c: @" s, _# h' `    4  实验现象
4 l# P2 M, U5 [# F7 F8 k) ]/ v0 x8 d! \  l
    首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。! S/ ^1 P& }- E: r# O
! ^% a+ \3 Y3 i" G& q( [2 A2 |( R
    (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。' N# |; X0 w3 k3 x
6 Z$ c4 t* H; |# y+ \
    (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
/ ?* `/ @+ w4 r( x3 P  i4 h/ M4 z6 p2 I+ ]

0 E" r! h0 ^0 p1 v' n    (3)点击打开串口。
: v5 Q5 ^' l& j; Q8 J
6 }7 R4 {1 _: ^6 t: @   ! [- _; h; O3 R& ~: i
    图 2
) i0 |. h8 o( P1 j. A' O+ h    配置完串口之后,打开我们提供的代码。
3 K9 w$ v3 L; k8 G: a% B% w) D! K0 S  l1 |1 x0 v; l
    (1)点击仿真按键。
4 H, t4 q4 W* K$ w# p4 b' B" k: l. a2 h  B( t1 m. {
   $ I; z: b# f% k. V& {. p$ u  i
    图 3
* k: V/ u. Q- g- g3 Z    (2)点击运行代码。
3 v" B' z: t3 M
+ I( z& ~9 ~( ?; a$ G  i+ L            
* d* }% j+ R8 L: X    图 4( q6 \$ C! Q, g; D) O2 ]3 n1 X$ z
2 Q0 j5 q$ Q+ F( p' o  W
    完成上述操作,就会看到串口调试助手区域 4 中会显示出步数,我们摇晃单片机,会发现串口调试助手打印出新的步数,并且步数在增加。* q% V' ]" c: I! M1 u# L

  t1 k' L0 J2 N# p1 d- \    
6 X" R* D9 ^5 r. _    图 5$ _! e- q5 V8 Z( O2 h9 Y
: h5 m+ S9 `8 T$ C% v

3 ?: p, @$ t: V1 F! T, G
: {9 Y% [6 u' v" V- p文件下载请点击: 6_(100%开源)蓝牙心率防水运动手环_三轴计步伐.pdf (612.82 KB, 下载次数: 0) ; D7 w* h! f' ~

+ N6 x2 R1 b3 L9 G, K/ d; L  }1 u! p
) d, a7 H# {# d9 Y& b% c9 f; U0 y1 C& G& u9 Y) B
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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