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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

# I3 Q& D; h( k3 I  M+ g7 u2 }* _1 O. {2 a) @1 _+ h) N
( B- F; U! M) O5 R: P9 v4 a

+ k. f: b; o1 T, c5 }& g: w) n$ j- ?) p7 @, b) n- ]1 G) G
    三轴记步8 i# e: W7 ~& T
    1相关简介$ K6 b9 x( W( f) M
" P: T* F& {, t) D& J2 d
    本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数。' D# C1 j8 F, y- Q

7 i3 V$ v& ~# _" |    I2C 总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议。
9 M6 N0 I3 n1 ]. t- O" }3 i6 S7 D7 E    两线 I2C 串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL); , I1 b+ d# A2 q; r/ F. B$ E9 }
    支持两种通行速率,标准模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);. B8 y* o7 x: h$ A. c: C5 o( \
    时钟同步;+ o# Y- \+ G% c* s5 V* b9 T% C
    32 字节的发送接收 FIFO;
0 ~5 A( ^: H9 Y+ {# {     主机发送与接收操作;
# l+ O* r( e' |8 o  g. w6 {    7 或 10 位地址,7 或 10 位混合格式发送; , y% s$ ~: I3 T" F* L
    块发送模式;
3 [- Q9 z% W$ y$ q- p    默认从地址为 0x055;. V7 N- r+ K8 H3 N+ W% h( |+ N
    中断或者轮询操作模式;
# I! ~- R8 R: D; K5 {, ?( O* X2 V    可编程的数据线保持时间;, N, l/ K! n5 E3 ]8 q/ C9 U
0 C% O8 g2 x! N- h4 ?
    本次使用的三轴传感器是 LIS2DS12。LIS2DS12 是一种超低功率高性能三轴线性加速度计,具有用户可选择的尺寸 2G/4G/8G/16G,能够测量输出数据速率从1Hz 到 6400Hz 的加速度。并且具有集成的 256 级先入先出(FIFO)缓冲器,让用户在存储数据时,限制主机处理器的干预。LIS2DS12 支持 SPI 和 I2C 两种接口, 我们这里采用的 I2C 接口。8 k, x% j8 v- a6 p3 J4 f

7 ?& W- C' {" I5 B( s, V* |0 x) w: S& l+ T' K8 S
    2硬件设计/ L7 A' i! _$ W  P

3 P, M  T* `9 @, m+ g3 @# C3 ^; v' K5 t    LIS2DS12 一共有 12 引脚。1 脚 SCL 是时钟信号。2 脚 CS 是 SPI/I2C 使能引脚。第 3 引脚是 SPI 的数据输出,由于这里用的 I2C,这个引脚空余。引脚 SDA 是 I2C 用来传送数据的。还有两个中断脚 INT1、INT2,打开之后,当 LIS2DS12 检测到步数,能产生中断电平。& q5 {6 M% Q& g7 t! ]( B$ r
- Y; F- M8 s9 h  f# @& t- U
   
# D" j1 h% b" ?- c    图 1
% ]3 B: \7 O4 |: E/ T1 ~% Y- T8 I% j+ n+ O( n, Z

- A5 W: c9 E2 w8 a    3软件设计
+ j7 o7 V- {% v* z9 [0 |0 B) ^
* B3 C. X& f4 }" Y( g! s    首先,完成系统初始化,调用 system_init(),可以参考前面的电量检测。接 下 来 就 是 I2C 的 使 用 了 。 第 一 步 我 们 配 置 I2C 的 相 关 引 脚 。
- ^. L+ y) K, G6 B
6 y) L: J0 s8 B# \    GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);* s3 U2 k3 z3 p. Z3 b4 e5 U, V6 e
     GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);
7 z- B& @/ x; J1 U& W$ p( Z
8 P; a6 B! k4 r) I    第二步,就是通过下面函数初始化 I2C。3 f9 G! U3 i/ v* O- G6 O
9 j  d' b6 Q- h' G
   
8 k2 [" B' F/ n* d( p2 T1 s. c    代码1
9 i9 `, R: Z, ^/ G0 ]
4 f& m9 ^% O/ I3 }0 i- `6 f    完成 I2C 的初始化之后, 我们就可以通过 i2c_eeprom_read_byte(uint32_taddress,        uint8_t        *byte)        对        LIS2DS12        进        行        读        操        作        ,        通        过
0 a8 z' q! j5 D7 h3 K% H& T- n) {3 H( t' {4 J
    i2c_eeprom_write_byte(uint32_t address, uint8_t byte)对 LIS2DS12 进行写操作。
$ e- K9 c; v$ ]8 B0 k' c% j$ u7 l0 ~    通过 I2C 的读写函数,对 LIS2DS12 寄存器进行读写,就能使用 LIS2DS12。详细资料可以查询 LIS2DS12 的 datasheet。- H) s8 Y* E* S! L
    首先,我们是调用函数 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(),记步测试。
( M' p2 D  u; E% \4 t, }8 y; ^5 Z  ~; D: v' J$ ^
   & \$ t  b/ d0 o& s5 e
    代码2. H! O) @, x( x; \' X/ Y8 @1 i4 n

/ ~0 x2 x0 @6 z$ N' x
$ ^. M9 J+ S! C5 t7 a    4  实验现象$ l8 s" L: A) K6 c) `3 U9 U3 I

; d) M: B; M" K! J& Z" L! y    首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。$ `* [" T2 a- v- Z* s# n  Z7 ~# M
. a9 {" m4 Z, `$ V2 r% W5 e+ w
    (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
* u3 N$ B8 g4 N2 e+ w5 Z# y
4 u/ X' E4 r5 m. c6 T! P    (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。7 N  c* H" t$ B6 O* ^

# j* Z6 O* v( }7 N! C: \, x8 e+ z7 h5 s5 F+ }9 U+ I
    (3)点击打开串口。) L: }+ @1 }8 }" l! ?
. X4 X" I" l+ I) j
   8 e3 s% i: G  L" ~* k
    图 2
' L! u+ K9 N: c# Y( L    配置完串口之后,打开我们提供的代码。
2 K2 Z% K# j3 Z7 X+ W( J% s# L# Y
2 S$ @. Q. g, K7 a3 p    (1)点击仿真按键。
( B4 X1 f. B. O7 q, Z; S+ \
( U0 R& ]  H9 T- J" Z$ U* @    " ?1 ~3 `5 p2 _: z& J5 w: @
    图 3
& B9 R. A1 r/ l# W8 `2 Y' B  A2 R    (2)点击运行代码。- A" x# V0 n2 o1 F' }3 D
& `0 W  N7 U, U  G7 `9 F6 j) C, I
           
& I$ Q+ H- u' ]5 N1 h    图 4( Q, Q6 V$ [; w. @) n* P- {) b

' E1 y8 w" v5 {4 w, |    完成上述操作,就会看到串口调试助手区域 4 中会显示出步数,我们摇晃单片机,会发现串口调试助手打印出新的步数,并且步数在增加。
" M1 k6 k  T5 s% y$ ]: c: g3 O, q. W; f" W, s; Q. y# u% E; G
    8 y1 A0 s+ ^% m, v
    图 5
/ F- c9 _. _$ j1 G. |9 O7 Q( _! z" l8 l4 Z2 I' P9 a
, C- n2 _7 U8 W0 B# n+ F
% W) `' a/ d- m  p
文件下载请点击: 6_(100%开源)蓝牙心率防水运动手环_三轴计步伐.pdf (612.82 KB, 下载次数: 0) $ ~. ^! |0 }5 R4 J
; c! J( b! p* f$ ^$ S; i+ K7 K! F
0 d2 K0 d) r5 H# s' I* s
' w" Q' [' U$ D
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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