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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电容触摸  
$ u- r2 W3 R7 Y6 f
% c3 T' ]7 l1 D- r

$ C. C7 b- J  \+ u' H% u5 ^- f6 Z; t1 l
  1相关简介
6 l0 N/ }7 e7 F; x. k$ J0 S/ p  b$ E% [5 S% r/ k% g% J# _
  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。
2 L, B5 v- |6 A$ A- }  B  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请
( f$ M" p3 r/ H% p9 X  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。0 {, F2 W6 b( u5 @9 C/ C* \- i
  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。6 C* R/ r+ @1 x. z
  2硬件设计. [& t, e. r& \4 j# L: |; ^

7 F3 e9 h& T; P3 @* b+ x* G  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。
! ]9 X5 ^. x: F; p' f: _, n4 f, w  |5 `4 Z4 ?" t  O. ]' `
  
" `+ P' X( R) C  T  图 1: ]0 f) T3 V4 s. [" Q0 k
  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。
# v2 U* T( p6 e6 T) C  3软件设计
) ?0 E) A; e" @; N8 ~( q
( D) ]2 E! [/ R3 a6 ^# Q* _  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。1 b1 ~: A  Z2 [+ o, b0 }/ e3 u
4 {( h* x1 @) X2 E
  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。
& `* k$ L/ h( I5 ^+ s* K0 P! H  要使用外部中断,就需要一下几个流程:* X& a' o+ m2 Q  I* v
0 Y9 D) K) p$ G. @% j: Y
  (1)配置要使用的 IO 口。
" m' c7 ~; I3 H) U9 z  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。/ P- L2 i* \4 \* u2 W4 ]
  (2)注册中断回调函数。4 k1 S& O" z' X0 M9 n! I  k  N
  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);/ f' p* y8 M. r' E! z* g0 i
  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。
& z- l& }7 i+ c$ g  (3)使能外部中断。
. m2 v8 j! o7 i5 g! q5 m  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );+ b4 Z0 K7 I! a3 G
# _% p( n1 \+ L* F$ Z6 P$ J
  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数
, N/ w+ k6 N. r: W/ L% A) y2 B6 B
  button1_int_handler 之中。; K7 d" I! f, W3 O9 k$ K& W
  void button1_int_handler(void)1 g" s+ g/ e2 S/ N" ~

1 Z  _: H- i  G7 ^% M  {" _6 w6 w" ]8 t( g5 e' |
  static unsigned char button_count=0; button_count++;
# G% v3 G$ }$ x; j% n+ Q  printf_string("\r\n Number of key:"); printf_byte(button_count);
3 i: Y8 y+ ~5 E" o7 y  }( |3 v- D) g+ G9 M
: u# v$ N# r6 p0 }* B
  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量/ u6 B! ~; \& B+ Y1 y& S; Q5 H  @

1 O1 {9 k( u+ a  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。
- z) v: P7 K# \+ l. ~( a  4实验现象/ `+ v* _6 s. ^2 p! e

7 a: _5 P3 a: X; _  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。; U. \2 a; m  V: f/ Y3 z

! ^1 L, D/ F" z! r* J  Q  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。4 I+ F' t: [) P- x+ ]4 y
) R$ {7 j7 V$ u
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。; ^6 g  L! d3 A. A) v# e9 y! ]
  (3)点击打开串口。
! n" t+ p% a" P! r. x9 r& k; O: J7 X) c1 b& J
; ~7 Q% }, Q. ^
  图 2- S: S3 a) G( x$ k. X8 W( k
  配置完串口之后,打开我们提供的代码。
6 U1 C3 e1 o0 d+ Q7 w( ]$ v
( K2 _& p  ]. l5 e/ ]& _, I9 H! e3 G) I" U  (1)点击仿真按键。
$ U* Y2 W; [5 K) f; g/ K; R" j# O/ C2 V8 ^1 D' w3 b8 E

# X4 B% J/ B! W' L; y3 B4 o  图 3- c& h: Q/ Y2 e, ?/ {0 z* ^
  (2)点击运行代码。
& w' E) Y2 f$ _6 w& A
& I# ~) D' C; L* |+ {
- q  b, X6 B; l# \( j/ C. @0 Z; C1 U  图 4) F: O9 V" f: ^; I7 K9 L: r- F
  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。0 N" q2 |5 R: i1 n+ k5 v/ L0 ~
5 o" [8 _' @6 u( F2 H$ [
  
8 Y0 i6 Q0 Q2 q0 q% I! M, @  图 5
; ]+ u* p9 j5 G
$ k8 [' l. y* O$ q% U9 E+ S* Q
6 J% Z6 u: y- L! Z9 `* E1 f- X- }0 Q
" j! A, U7 [) T. s9 i1 Y7 M& C文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0)
& Z' e. T7 ]" @' A# T' Q! u/ v4 [. q* H# `: y3 T- ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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