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

【开发教程7】疯壳·开源蓝牙心率防水运动手环-电容触摸

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电容触摸  

/ e% u% W. b- G7 d# G4 ^6 w! M8 g  n* l  o

# e& e# o, O# w  j& p: t# N8 K, L4 I' m: ^! K" {# a
  1相关简介
$ M  K" j4 w7 B- {  j! n6 x8 k2 W( Y
3 K+ T6 [! P0 ?6 ^6 j! K! C  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。- b9 X7 [( s! m% z# c  J
  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请
  e, L8 p9 E2 [6 Q  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。
$ i5 I0 N8 X2 f, |0 z8 \7 _  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。
% ?8 R' G& u* `; y3 f  2硬件设计/ K3 E6 b- K" ]8 l
( u5 [" Y9 r/ ?
  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。
# u, j8 n; A7 k* I
8 l- [& p( h, D& j2 V   
3 z- _2 D) Q* K  图 1/ l, S2 ^  Y9 g* |2 }5 l+ Q& L" e# J
  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。
$ W. y/ `/ z) }; d7 z  3软件设计
, X, ]0 e5 _" f% \: }  }" l) g9 M  Z+ |4 n- b- U# t: e: w' i, x8 I' p' t) Q
  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。
0 ?$ e! H! ?/ t  U4 Q3 H# S; \1 E$ Y* W  d
  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。
' s2 f+ B* P2 q+ _& `+ r% C2 D  要使用外部中断,就需要一下几个流程:
$ i: U+ X$ q9 n' N" R& V- `. O! A/ j
  (1)配置要使用的 IO 口。8 Y' r. A1 @  x  v# Q
  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。0 X3 w0 u  i4 D2 A
  (2)注册中断回调函数。
4 H/ n, X: \$ s* U4 ^2 _  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);$ p* ^$ ~* S0 n/ M
  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。
. {8 c# Z$ {# X' s, H  (3)使能外部中断。
/ N" R: V6 ?. ?) ~  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );: x7 P7 \( A5 P, V3 Y* H

( p$ a6 r; x5 b6 d  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数
/ i, [) `" N+ P/ I" _1 x  }6 l& w+ K, e7 C- \+ Y- `( x& h0 v
  button1_int_handler 之中。) ^% @0 M3 e, F6 x3 y" g3 c$ R# y9 ^0 }
  void button1_int_handler(void). m  T& W; d6 m! w& p

1 O1 f/ z+ |$ u* `: @  S  {
' f3 o0 \* Y' w# e5 g8 e  static unsigned char button_count=0; button_count++;
& r) o, J, G/ e$ D  printf_string("\r\n Number of key:"); printf_byte(button_count);
7 d& g6 Z2 y0 b8 Y  O" c# @  }3 b* S4 @3 k3 X! }
8 I8 x4 {' k' x% J
  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量" k! I7 K; s: t- ~( m$ B+ M9 a2 r

9 o4 t9 e  j) W  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。) W  H0 i; t' R9 \) N: n2 u
  4实验现象$ f; Q  z  w! ]6 Q, q
/ m, w: r4 ?5 p' j& H1 b6 L0 A/ A
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。8 d1 ]  |  P% X$ F9 h: L# p

5 b+ r8 U% v7 n1 g7 m  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
8 D1 }1 F7 C2 e8 `' ^
' e; g9 b* ~5 `8 B( g9 @  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。2 `, u0 o; I3 g8 t$ S3 y
  (3)点击打开串口。
& C6 \7 ]  q2 p
/ w8 J- Q3 q/ m* `% ~ ) F: X# N) O% @* u% _3 D
  图 2  D8 c. x1 E. G9 A1 N$ Z+ E7 S8 {/ t
  配置完串口之后,打开我们提供的代码。
! b& x1 I' P% O4 P& S1 b+ m. Y/ \& w" s/ g' P
  (1)点击仿真按键。
' X) O, w! D% x1 O
1 r2 X' T& ^: b9 ~: J5 h
4 R! ?; |. o- L% L+ {2 v* z4 L7 D3 A  图 3  I; m2 [) E% c9 j4 O
  (2)点击运行代码。# f: G# l- H' I( G: ?0 s* |& W
2 S% B7 p3 m* Y( e4 i* `
. o9 `1 B; s1 m
  图 4
3 M7 d& u3 h, t( |# L$ ]6 b  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。2 y/ e, v0 V  F% C- j
) `6 T. _. l+ a* w
  : D5 _0 L8 H0 B$ o/ o9 Q
  图 5
5 g+ @; v5 L* ?* w8 Q$ M& ^8 a8 w; _+ ^1 U
  X4 h$ L/ }0 c4 L9 Z  Q- t, h% b
0 n: j7 e" l! r
文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0) 1 w" m0 c5 u3 n7 ~% A: ]
) O% d1 T' e: d# R
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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