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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电容触摸  
' E4 b* h  V1 _! c' s

6 l7 r' J( y# W0 X9 [0 }# e8 O! J; x; g* I8 U% M' E6 j' {

5 V/ U) J; j& m8 W! D7 g6 M! S  1相关简介
' l3 t# A( ^8 L( \
$ J6 @- Z7 h& {, Z  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。
5 c: a; [( [$ l' J+ H# G/ W  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请: ?( O: M: X/ M; [
  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。
7 j8 L5 o* v" f. l  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。6 Q+ x- i+ G5 w9 Q; _
  2硬件设计
: A1 H0 ]( E5 n4 N0 ^) R
, b" R- b  c; a6 c  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。' g+ B# m" \/ E
! A( Y4 g; V- G! B% k

# h8 q' S$ Z) q" R" m  图 1
+ P1 N/ L9 L/ ^: I' y% @4 V$ B  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。0 b" D* ~  b9 n! O
  3软件设计
( Y' w" U: W3 x4 p3 G1 P* K3 l' w
  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。
, S! ?, u* I: R' t& F8 ^1 q7 B4 ]' {" s  `
  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。
) L& }/ N% |1 E, v+ I0 r! G  要使用外部中断,就需要一下几个流程:
4 e" t- C1 a. w( M( R' W7 T' a$ a
" }  F' i2 @3 P$ V% a. S% k  (1)配置要使用的 IO 口。
0 s+ A* t9 y8 R, v' o- C: L% y  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。
2 v0 L/ n* T3 e, ]: A) x) z  (2)注册中断回调函数。
: b- K3 l, Z) D/ r4 X, A) V" l2 S  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);
2 L3 S( i; E# l! I2 V1 Q9 {/ U  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。
: O7 V% ~2 F$ O* Z% }( [- K- @  (3)使能外部中断。
# f* S1 o) O3 ~% _3 w4 ^2 \  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );4 A& [$ c* ^% H

& U9 {+ }" s/ \  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数; J& i- R  |- f# W$ e
  W( W0 K+ q$ Q9 F; V: n& H* f; Y
  button1_int_handler 之中。
* Z  a7 l' |: M* q0 B5 u3 R  void button1_int_handler(void)
7 j5 ~/ @& Q. {( {6 U+ [+ w# I( @; n0 B$ K7 \) M5 ]$ j
  {
6 d" ^/ J0 R6 g1 e% x  static unsigned char button_count=0; button_count++;5 M2 w: k' e1 Z: x  C- l9 Q+ }1 G
  printf_string("\r\n Number of key:"); printf_byte(button_count);
9 F5 _: N) ]* O  }8 n8 A0 {3 ]9 S, @* ]% D

% @# [/ t* O. s+ `* a  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量
) O9 Z3 F/ P" r- a9 C; n# h4 i% J& e7 s( o, ?% U7 X, d; D: i0 C" t+ T
  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。
! D/ ~! V3 ~: g  4实验现象
" v" g8 X) m" p& S5 G0 E1 M# \$ s0 Q" u6 f" Y$ G( _
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。- ^1 k; P5 E" b8 `$ `$ Z  N
* r( ]& O1 t6 k) X
  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
) I/ H8 a7 O" I& [4 x& Y5 O
- }: O' a0 H/ z  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
) S# x3 g- g' Z' T0 f7 R  (3)点击打开串口。
7 J1 f1 t# J* b8 j
$ L/ A) L' l  m3 R$ w * v+ z9 F8 r) J- C" W
  图 2: X$ \4 X: K/ r+ D
  配置完串口之后,打开我们提供的代码。
3 |" y0 F7 `) V" D! R
( c4 n8 F/ k0 ^+ V# W) O  (1)点击仿真按键。
" y8 h+ c. R. j8 }3 c, v
6 m) d' D, N/ H' U5 S/ r ) ]3 H6 R* A* `* F7 i
  图 3
# A& K% q. y# c  (2)点击运行代码。% y( J6 C5 a# `* T* j
* C1 X: x) s+ Z: }
  
% F; h% B6 T1 B0 E! `: J+ S  图 4& z. F: _, o* R* z
  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。
9 y8 J: j- P8 O- c: x( c. M% }
, d3 E% p8 [  v % ^1 `$ Q! q* s# y  o; V% t
  图 5
9 r0 P! T3 n9 H0 t, g0 q: i
' e; H7 I6 P( z, R. Y  l
4 N: l9 U4 T! f+ a0 ^; R1 f; w  Q  w) F; k$ U
文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0)
- K. f( X- n8 J$ |
7 j( e  h. t$ V7 d$ v% c

该用户从未签到

2#
发表于 2022-8-17 18:38 | 只看该作者
串口助手是调试串口的好工具,必不可少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-26 14:58 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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