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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电容触摸  
, R# M$ [5 G- J: _" U- g) Z

7 o5 M4 U- T- L2 \2 Q0 K# K9 P1 I; H# L: P# ~% F. n( M3 h
3 ?7 v$ ^4 h0 ^
  1相关简介
% V3 Y% F  m% S) `7 w0 n9 o9 e) ?9 b9 \; [' y
  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。! ^+ H) A) n6 K. `9 R
  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请
1 G6 F' b5 \6 u' Y* R  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。( e; O. E, }3 W4 p: Z) M
  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。9 {( D+ h6 O* T
  2硬件设计) _7 U+ S; M' w7 n, \+ V6 u
( y3 P4 \3 N1 X
  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。
+ O8 F$ L/ R0 L5 `
. s% P8 D" w! J, C; ^   0 `- M) L+ U9 G& \! n' \7 R0 n
  图 1+ \) f+ ]2 I! p
  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。, t7 w% ~- x2 i+ `
  3软件设计& _5 e' b. q$ u& M: T4 L

' z1 }5 e( k# `. T  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。; X% p, f# Y% c  v1 ]
) q' P0 ?$ `3 U9 ?5 A5 y( n
  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。
6 F4 K/ w7 g  N* F, C  要使用外部中断,就需要一下几个流程:6 l- T* z: E( N5 A/ O
! i9 u. i2 ]; E
  (1)配置要使用的 IO 口。) m' H' s2 r* g% ^
  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。
( n% H8 d1 ~6 f  (2)注册中断回调函数。( i4 ]" G" b  [
  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);
/ b& O1 ~0 \* s" H$ s6 |  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。
3 h* G8 _) C; Q7 [! v& x5 V7 B, d  (3)使能外部中断。4 ]6 `7 ]( \4 D* G+ b2 P& u  C
  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );
; Y6 h: Y8 I9 S1 H: X1 l2 ]  g! v6 }1 v1 x' _
  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数5 n9 H% [3 w$ ]) d! N; W" P

3 M/ s1 g: y0 R6 |6 G  button1_int_handler 之中。
# i/ [. ^* i4 }* h( O: }/ O  void button1_int_handler(void)
3 h+ F$ `) A% F# ]& o1 P% O
4 M2 ]% z4 [- x5 |/ R7 P  {
+ T- f  f/ h- @  v2 i' y1 R  static unsigned char button_count=0; button_count++;' ~( C# p& X! B9 S
  printf_string("\r\n Number of key:"); printf_byte(button_count);: L, y- b' R* e/ e* S) }! l: V* ^
  }
0 H4 K0 Y7 l7 v
- Q0 P( E+ s1 P7 E  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量% G- s  E1 }' |. G

5 B# S3 D6 v4 E7 h2 M4 s, k. k  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。; z: x: F: k3 n; {4 D
  4实验现象
) f0 g% r$ R' i$ K. q9 {& e* ~+ c: a  s1 J) h+ J. P3 U' ]4 @
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。
  j% r7 n! k1 D5 j* D
& e! x7 J% C) N+ I* z: `+ A8 J$ @6 S  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。2 T7 o: k/ g' u5 B" P/ s- [

8 C/ g$ D" a6 D; P- ?6 a( G8 E  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。( v2 U  ~2 a' Y1 x5 D# ~/ e
  (3)点击打开串口。, u  f. Z5 m% R
6 j4 a/ a* m8 U6 r0 N" ~* Q. y5 W- A
" ]5 I. @! Y# m9 h2 u% z
  图 2
0 h- N' d8 s; V1 p) ?6 c& w  配置完串口之后,打开我们提供的代码。) A2 @& I5 I0 a$ n7 M1 x: L( d

( x" b  T! E6 g6 E& m  (1)点击仿真按键。6 @6 c/ u7 W# v$ D  c5 d$ G
* {' G7 F7 l" R7 w7 I% a

& M& B1 C5 a2 L* k  图 3
* k' R# |& m* F# B* I( X  r  (2)点击运行代码。; p, t% z' z" G. n9 b3 [- s2 b

" A. w  _% r+ L5 _
+ u9 K& N; @+ t0 a) |9 ~! h5 e5 k  图 41 c* W2 g8 G6 ~# F2 ?* y% u0 U; C$ H
  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。
6 L# ~5 ~$ p1 z' M% y; d
  h$ A3 ~8 g% u& a( D6 P$ O   3 v$ G5 U) m* K6 ]
  图 5
9 @6 R2 d$ v- r
- L: }3 h) m+ S  a0 E
8 P0 I( `* E) P) I! Y7 ~
1 {* p4 g$ I) G7 P: A+ d文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0) ) ]' l9 Y2 C8 p/ [' _/ I
) J9 X8 n) l: P& L7 t
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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