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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

! m) O0 `6 F1 P' A" K$ {; c$ }" D2 N: b

  ~2 I* Z1 F. d0 G- ~) d2 I2 }9 W; v) @

& d5 K/ c+ H/ y1 ~4 m4 r    三轴记步* p6 l" w+ X! d" s  A
    1相关简介7 ]$ q9 B$ c, }) O$ Q* m1 s
& l- c6 ]+ P+ m6 D% J
    本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数。9 D/ ~8 G) Z& W% q) p% N

3 [5 R0 ]: P9 c- O, t    I2C 总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议。; \3 V/ z- `8 H. `0 A! e* g
    两线 I2C 串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL); $ |$ H8 u. {$ T2 Z
    支持两种通行速率,标准模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);1 ?8 r0 W$ l6 a+ I: J5 d
    时钟同步;
& a) f7 o' k  o; _/ d0 F& D    32 字节的发送接收 FIFO;
6 R# y( d( R" T$ a     主机发送与接收操作;$ r3 h8 E3 R5 {8 [; C0 C" b
    7 或 10 位地址,7 或 10 位混合格式发送; & l2 s2 b/ Y5 Q; [3 r( n* b2 H2 ~2 ~
    块发送模式;
3 c8 ^$ K; N5 B. f- L! H, {    默认从地址为 0x055;
/ ]" K1 A$ \; i& u5 V    中断或者轮询操作模式;
0 u! P; @4 U+ a3 Y  b    可编程的数据线保持时间;
5 D8 d4 |( o8 I; ]
/ Z% o( L- k" l, Z" X( I/ M3 W    本次使用的三轴传感器是 LIS2DS12。LIS2DS12 是一种超低功率高性能三轴线性加速度计,具有用户可选择的尺寸 2G/4G/8G/16G,能够测量输出数据速率从1Hz 到 6400Hz 的加速度。并且具有集成的 256 级先入先出(FIFO)缓冲器,让用户在存储数据时,限制主机处理器的干预。LIS2DS12 支持 SPI 和 I2C 两种接口, 我们这里采用的 I2C 接口。) L+ a4 m2 `7 c" k& ?, |" X
0 I3 |* w6 |- H. N% o: j. f$ i; Y

- O+ p# v7 G- k$ Q5 s; y! p1 p7 [    2硬件设计+ q8 ^% {' a: @+ {

8 Q; a4 Y3 H4 C6 _    LIS2DS12 一共有 12 引脚。1 脚 SCL 是时钟信号。2 脚 CS 是 SPI/I2C 使能引脚。第 3 引脚是 SPI 的数据输出,由于这里用的 I2C,这个引脚空余。引脚 SDA 是 I2C 用来传送数据的。还有两个中断脚 INT1、INT2,打开之后,当 LIS2DS12 检测到步数,能产生中断电平。
0 y0 ?- N- ]' R% Z+ y- s7 i: B4 y- p( @. V1 |7 C- c! F8 ~  K
    . x4 S: H% e; {; p& e' Y
    图 1- d/ F1 H7 `$ n& D# s" F7 ]) R$ Q. j
5 h+ K. P0 ]' q. r" i+ r5 }
4 W. g# X" y' P  ^+ H* J# |
    3软件设计
1 v  b3 z" f9 f3 L7 F' @( [+ _8 A- m& x
    首先,完成系统初始化,调用 system_init(),可以参考前面的电量检测。接 下 来 就 是 I2C 的 使 用 了 。 第 一 步 我 们 配 置 I2C 的 相 关 引 脚 。3 b8 U# m: Z# m1 }+ s2 t0 E

7 k* C/ [" F) E$ z" M7 V" _1 i# q    GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);% h" H4 U" z! P8 R% Z
     GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);
! m/ G2 H* ^+ a; s+ s& H  ~2 o2 j& L7 m
    第二步,就是通过下面函数初始化 I2C。+ M6 o& z" A7 O5 H" Y6 o% U

$ }8 H  `/ q$ j    
( r5 Y1 Y4 m" T: i, e    代码1
$ I4 e- Y7 V% l+ A- l& v) z! W. r, ^  C" h" f7 U# j5 _# S6 ~/ z7 ?
    完成 I2C 的初始化之后, 我们就可以通过 i2c_eeprom_read_byte(uint32_taddress,        uint8_t        *byte)        对        LIS2DS12        进        行        读        操        作        ,        通        过- J$ d" J8 a1 i  W# y/ r

  O; ?7 h5 f7 m    i2c_eeprom_write_byte(uint32_t address, uint8_t byte)对 LIS2DS12 进行写操作。
$ X  M8 ^: e8 A4 `7 C5 k, L    通过 I2C 的读写函数,对 LIS2DS12 寄存器进行读写,就能使用 LIS2DS12。详细资料可以查询 LIS2DS12 的 datasheet。
; s: a+ _- Q1 _: e) o    首先,我们是调用函数 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(),记步测试。
9 c, \9 O7 D( d4 z' R
  W& N& S. Z$ h7 v; t2 l    
9 b3 Y) H+ P- F8 c! Q2 }- S    代码2
+ Y  r/ o6 ~6 P3 n! N+ M* {
" ^' ?! p$ f1 u8 c
% y/ x  @; h. y7 U    4  实验现象8 n* O$ a% i: Q! L7 L

) z7 c( B- ^- U2 b4 M    首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。
& w) Q4 k6 [7 \6 E. R5 F, Z
4 n# w6 z( Z# {; j    (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。0 a9 Z7 U/ @7 ?0 }$ x2 n  I# N
8 }. C; e, s" O3 w) p5 z4 c
    (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
6 ]4 v0 o, P' M- _0 h1 M- U# E% z  w" m3 I* T! N! ^6 |& X( Q
$ d) e( u8 A- N* L
    (3)点击打开串口。5 K& A2 O. Y$ Z9 K
9 N. K9 y1 ^$ E! G: f5 N
  1 ]/ S+ s( r9 T2 J! g+ x' z
    图 2
9 Y( f* z( I+ n# v    配置完串口之后,打开我们提供的代码。
3 V+ ?7 e( \2 O7 G$ N+ F3 n  n3 R1 K/ p
    (1)点击仿真按键。5 J/ m' e% I* S) l& K" I2 @

2 Z5 H" k/ @7 }6 \    0 [7 K' j9 r+ T+ _% t* P7 E
    图 3
" o$ \4 W5 K& `8 J' \    (2)点击运行代码。1 X" |# F2 _: M

' K) j7 K4 N0 M3 i; |- C+ @            
% F1 Z4 l' m# L& M, }2 ^4 v0 A" \0 q    图 4
# P8 G5 N  I; g; S
9 _" G: N: y. s  C, u    完成上述操作,就会看到串口调试助手区域 4 中会显示出步数,我们摇晃单片机,会发现串口调试助手打印出新的步数,并且步数在增加。
3 V' D) q4 @% }" |. e2 |
* ]7 C8 S! B$ O5 I* V9 j: i     / L7 D  P- l0 {- \  Z6 h4 M, q
    图 5
; W: q6 q8 `/ G" P" n! K* |( n# i& W/ @: Z& i- |. i

  w8 c* y  ^: B& k: ~$ T9 n0 J
" X$ q9 L) R2 v) r+ _3 q$ n文件下载请点击: 6_(100%开源)蓝牙心率防水运动手环_三轴计步伐.pdf (612.82 KB, 下载次数: 0)
3 ]- W# C8 P4 X$ K. p- E2 @" q. |5 G! B

" t( ]' \4 j3 J' S. Z- K, C7 E( l6 i2 X- q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-23 17:48 , Processed in 0.078125 second(s), 27 queries , Gzip On.

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

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

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