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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
三轴计步伐
, t7 i4 R+ n. D( K; ~# ]

1 x2 T, X1 p; }+ G6 {4 N  `0 V- \0 F/ N3 K6 g
/ }, p. S( a2 T" p" M& j- H; Q
4 @0 n5 ^( t9 @7 B( s7 z
    三轴记步
, |; Q5 @, }; f. ~6 F# u* d0 {    1相关简介% Q7 s# \3 z5 Q  w* ~" T3 q
8 e- Y. M& q9 M3 T
    本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数。* v0 n# l/ o& H6 t3 o' y. a

, m- p! D, f5 ^6 b& m6 q" v4 q( ~/ S    I2C 总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议。2 |) g, f: O" M3 S' n4 r+ L
    两线 I2C 串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL); 2 ?! K& g' |0 w' H. q# S. A
    支持两种通行速率,标准模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);
1 v7 ?( ~" J0 U    时钟同步;
& s1 m: B' K1 v8 e0 D    32 字节的发送接收 FIFO;% H! q, L+ x- ]: t
     主机发送与接收操作;
4 h3 k2 E' B  p6 J/ {* ~* |1 K    7 或 10 位地址,7 或 10 位混合格式发送;
' w3 Y3 K, e: L+ d* z    块发送模式;5 R% y: p9 h3 J7 v& r8 r* b# h
    默认从地址为 0x055;9 Z* R! {5 F/ W7 x0 L& F
    中断或者轮询操作模式;
* c/ `) Z! a* j! e+ F    可编程的数据线保持时间;
) D( o5 z# \' {6 x- Z- g# I4 i3 Y
- y: Y0 {# m/ W1 ?    本次使用的三轴传感器是 LIS2DS12。LIS2DS12 是一种超低功率高性能三轴线性加速度计,具有用户可选择的尺寸 2G/4G/8G/16G,能够测量输出数据速率从1Hz 到 6400Hz 的加速度。并且具有集成的 256 级先入先出(FIFO)缓冲器,让用户在存储数据时,限制主机处理器的干预。LIS2DS12 支持 SPI 和 I2C 两种接口, 我们这里采用的 I2C 接口。
0 g  U$ G1 r# K5 o/ @5 o# J; z$ ?5 m& k8 P/ O+ w' g
4 J7 c! v9 I5 F* Y& _& @* W
    2硬件设计
1 T. Z2 o$ Z/ G! ]- O2 ?
; C& p( W1 @9 |; p+ A) J3 r    LIS2DS12 一共有 12 引脚。1 脚 SCL 是时钟信号。2 脚 CS 是 SPI/I2C 使能引脚。第 3 引脚是 SPI 的数据输出,由于这里用的 I2C,这个引脚空余。引脚 SDA 是 I2C 用来传送数据的。还有两个中断脚 INT1、INT2,打开之后,当 LIS2DS12 检测到步数,能产生中断电平。: u% d7 O4 [0 A4 V4 w" |5 Z" \

$ A( X- [( N; Z    
% v2 o1 e+ t+ [1 ^    图 1
2 G$ L: ?/ o: a( {" R! c8 k& M% f; F, c' d; h& Q5 E

& O0 u4 L0 C+ {/ {) C" s9 h4 X    3软件设计$ T* }1 w7 P: \$ w) `8 ^4 k* g, R
! V* G1 H4 C6 s3 |/ y) T8 J3 y+ h
    首先,完成系统初始化,调用 system_init(),可以参考前面的电量检测。接 下 来 就 是 I2C 的 使 用 了 。 第 一 步 我 们 配 置 I2C 的 相 关 引 脚 。. ~" C& E# |) s6 }) Z- a' V
( c5 J+ W+ F: m" Y( l+ t, ]# b
    GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);
, p! Q* z2 _/ a! Y1 c! \     GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);
$ L, @- K7 E5 X" o
# [/ P; I1 w5 e: K6 u; a: M- E    第二步,就是通过下面函数初始化 I2C。) v' G: G7 I* [/ u3 d' x  b5 V

7 k; n% I+ g4 q) a% ~+ T4 @' a6 t% }    
' l6 O# K! m$ Q# g* o: }5 {0 |    代码1" x, u" d4 Y! F9 s6 R' x
# X% M: t" R0 I8 s  k
    完成 I2C 的初始化之后, 我们就可以通过 i2c_eeprom_read_byte(uint32_taddress,        uint8_t        *byte)        对        LIS2DS12        进        行        读        操        作        ,        通        过  y- n/ c) W0 _5 e2 e
) C% \4 V4 K5 ]9 R
    i2c_eeprom_write_byte(uint32_t address, uint8_t byte)对 LIS2DS12 进行写操作。
. v! k  H( u4 s7 n/ G    通过 I2C 的读写函数,对 LIS2DS12 寄存器进行读写,就能使用 LIS2DS12。详细资料可以查询 LIS2DS12 的 datasheet。
8 ^! ?! p! ]2 n/ g, z- Y9 J    首先,我们是调用函数 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(),记步测试。2 Z4 O/ M+ V4 F% q. _! d

8 a& }: Q, q, m/ Y: y; K3 ]2 g+ N    
$ e. G) r0 i! h  H0 d- f    代码20 J$ L# e3 B1 A* t8 ~2 \
1 g$ ~4 u4 G, w3 g

3 }' `! b6 L, w: `: Y    4  实验现象( X+ v1 q4 ], p+ t1 L
( Y: a3 i8 j7 ^) p
    首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。2 g1 ]6 n( z8 |3 }' `/ a

0 o- t9 Y- ?/ Z$ q# R$ V    (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
8 ]- q$ J" X2 [  n! F" e/ q8 i; W; k' d4 [( E
    (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
# Q# R# b- v% s$ J* {4 ?) U# p/ \: O; ~$ P% w* E7 E3 ]# K
* S- u" ~6 u7 y
    (3)点击打开串口。
' w! A) Z5 D  M8 @% `! W& l( n) _( S7 a2 a/ _2 ^: g
   
5 y# B5 r: a% W4 _$ Z. M    图 2
7 o" \3 Y! c! H' Z8 d1 p    配置完串口之后,打开我们提供的代码。
3 Z( c9 G- E) g, t- Z& M# `7 q
: G+ |( c& f$ j' o    (1)点击仿真按键。7 U$ ?; t5 M( x7 g( j0 r# ~+ [1 F
+ W" T- E5 J% P' M& y) U/ x  ?
   2 G& s, f# n# K& m( y, {! A
    图 3  o0 @2 `# I1 h7 H* h& U
    (2)点击运行代码。
  O, @# X' f+ m( R8 S; Y' F
& C( g9 X1 Z/ s; C2 z( d            
$ u/ g% X- e* e! `    图 4, z0 ]2 d* n6 h( |0 a' n- y2 [

, E0 Y, g/ `& m" V8 Q1 W1 _: R7 h    完成上述操作,就会看到串口调试助手区域 4 中会显示出步数,我们摇晃单片机,会发现串口调试助手打印出新的步数,并且步数在增加。
' l; ]/ w$ ]9 b% t3 D8 h  K/ h+ F0 d) j. ]8 }) V) V7 q
   
6 n0 w9 G7 k0 N5 l' R4 b7 \    图 5' X/ r. N+ m/ J6 Z+ @) t

/ |. e% `3 t7 p' |  r. m9 ?. ]
$ @1 `: L9 x/ J6 |8 g! k
& m9 s' _; J8 o# q文件下载请点击: 6_(100%开源)蓝牙心率防水运动手环_三轴计步伐.pdf (612.82 KB, 下载次数: 0) 0 W( r2 w" P9 o8 H2 a" \9 r# u) |

' Y) ]6 S/ G) r! |$ k! x, m* V8 J6 t& r8 {

  e$ \. L7 ]9 o# v# \. c
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-25 21:18 , Processed in 0.140625 second(s), 28 queries , Gzip On.

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

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

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