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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

. F  b' L8 c) F, V9 ?: A
& L( b) {# l' G6 z! ~7 i8 ]' k4 p1 i' ?3 E

, g7 g9 q% U: G% e/ p8 Q  1相关简介
$ n- d4 d* }1 K: A/ h6 O- G
8 X3 C, C/ e: Q: d  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。
/ _# R& U( z5 W! G5 ~' j: ?0 V  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请: `1 D1 ]2 ^: u+ u7 y: H
  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。, e1 S2 B- |" F* X/ ]* V) O
  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。% a; i- ]! b1 y1 S
  2硬件设计
8 J! Y$ d2 o' n1 O2 M! {4 {4 @5 V" {& y
  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。8 e3 w/ U+ B" L, B

+ r4 v2 _, K; z4 i+ L   
' g+ k! W- B( F1 s2 W  图 1
/ L* h+ q6 R2 j. p; `2 D2 o  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。/ ?4 o( e6 q9 a) W
  3软件设计8 V1 h1 x, e: w  [4 U6 h
( H% s: x0 K. A6 H# I
  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。
2 H1 y8 h1 ?. v. P) E$ j( [0 w3 [: D9 V  s5 c8 x5 ^7 z
  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。
/ Z; }& w$ s( @  z5 m; k# X  要使用外部中断,就需要一下几个流程:
  T/ a0 K, g. N* m$ ^, X( V+ S* F. B4 \7 V' ]
  (1)配置要使用的 IO 口。. \+ S/ T; h; ?. F8 G* D0 o: Q! t
  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。
# f8 ?; S, j1 Q2 }  (2)注册中断回调函数。
3 E5 a8 \6 ?6 Z0 U# D) N  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);
8 \  e8 u5 F8 k5 s9 ^  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。
2 F/ U1 q4 K0 Y! \, D4 i  (3)使能外部中断。
7 H" |  v. }/ k& w4 d  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );$ Q8 E' ]) s! }1 L$ V; y

0 M; Y; O+ e( U" b: h- j  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数
! }. d9 L: k# ~6 F6 @+ a# n9 r/ O$ E  R; b  h, c. ~
  button1_int_handler 之中。% K$ @' O& P; o- O6 ]! t% ^+ H
  void button1_int_handler(void)( u& |6 |7 }" P8 G# v7 ~$ D, k( ]5 K

1 R0 L6 W: g" Z3 i7 K  {
* Q, [8 g/ v& |" O' T- e  static unsigned char button_count=0; button_count++;
- O. e3 k3 Q; N/ y5 v4 o; k% {  printf_string("\r\n Number of key:"); printf_byte(button_count);
: W1 F$ g) ]2 F: J* ^9 i% C  }( N+ M7 |+ }) J; l2 N
" Z; ?9 r; }1 @: ^# B! L' \
  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量
9 d9 m/ S% i$ O5 {# E$ t, `7 @; }
  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。* |& i3 g- v0 v( h( E
  4实验现象4 M# O% y& d9 ?- y9 i  U
/ C. c) q! j$ Y, s: G
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。9 _& H! K' R: x: V6 ]4 |) z
" _6 [5 j- B/ A
  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。: R1 z% Z4 K' N, J# J3 b) h
2 J; n* d$ p$ ]& d
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
& T4 B  z" k2 t  (3)点击打开串口。
. c: X& w3 f2 d
& X2 A" q4 t4 w, Y- N! p
: d# b! y& t& X. p( n6 S  图 2' k2 y3 p! C4 \6 [6 o7 D
  配置完串口之后,打开我们提供的代码。
; l# r+ R' t1 Q9 M. K  n( ?9 J3 {
5 e, Y7 d$ L7 q4 e' m8 s" d  (1)点击仿真按键。+ I/ L/ u1 Q/ v0 h5 v) ^& s; c8 z
* k$ J' Y" [9 H# o4 }+ J
3 x4 }+ ?- ]- m9 L& Q
  图 3* i% G7 q6 B. c( f$ m# H- Y
  (2)点击运行代码。
3 H) A+ U* R4 T+ {, D" \9 w% `/ T# a; c) V
1 s( Y" t2 I) ?5 o$ V
  图 4
( |: V! Q+ d" f  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。7 c* V' B8 S( D( }
2 H9 _: L' V& @7 M) Z9 R" C
  
0 X+ ~6 E' A' k  x7 E) Z  图 5
( }  \( f' W# i2 Q9 s6 Q- L$ c: z  a# w9 B

# }! j1 ^( B. _9 G% m* u" p/ g+ H; n6 Z. g
文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0) 6 F2 a5 U& n+ B

9 O- A; ~- Y  I! R
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-28 19:49 , Processed in 0.156250 second(s), 28 queries , Gzip On.

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

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

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