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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

( N+ [! U( D7 P  I+ n7 U8 P, I2 y& S& C% i' J

' p& f% ]) z5 j2 W& i5 L( P
$ u% Z- D9 o) t: s  1相关简介' i6 L; s4 B8 o$ l  X
/ N# M, h# u7 C' |8 X
  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。
5 k5 Y  ~9 z0 i# D6 R  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请9 P* Z1 p' l0 V, d1 v
  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。1 _, ], P8 o/ P7 e
  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。
1 t5 ~$ O  `' g4 ?- I  2硬件设计
- ~  K+ o) b7 Y; e9 V6 J1 c/ d  _3 e& W  U/ d3 c: s
  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。3 t: R& }  b9 ~. c8 H5 T$ ]2 Y
! e0 u+ `0 i  U

3 u4 ?1 q6 R4 [) @  图 1
, J: C" `) H, N3 W9 |  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。" q7 V' D8 z  H1 O
  3软件设计# I. E8 l8 p# T% l6 A

% M! l' T- Q: K) p7 I7 R  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。7 u% y. G- L- K; I4 R, R3 E
5 R0 u' y8 w' e! ?
  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。
5 n) J& a( U" k0 J9 j0 j4 @4 \8 \# k  要使用外部中断,就需要一下几个流程:* U7 A2 j9 `, s# G! L
7 D$ y+ W5 e% l0 R) c
  (1)配置要使用的 IO 口。# v3 V6 V+ Q2 u$ ?! D9 i
  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。8 ?6 Y4 [/ z9 G/ v) F5 G
  (2)注册中断回调函数。
5 a: H( @% Y2 B& b6 q* ~3 I& g1 w  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);6 }* Z) J  l/ R$ d
  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。3 v4 y9 X! ~0 a' m6 g5 I
  (3)使能外部中断。/ `  a% }" S' r: ~$ p3 y
  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );
7 H8 ^/ ?7 H5 T- K8 b9 w
/ e: p& A; e" I* p7 }7 ^  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数
/ k. V& m+ }4 b2 n: }
4 g: f. F0 Z3 h* p$ v; O+ ?# w  button1_int_handler 之中。
2 M1 B6 _" H. x  void button1_int_handler(void); i% v  i' J9 D) ]
; ^  Z+ R- n. M( N  A3 ?) c) \& n
  {
% a6 t8 O; A; d1 ?  Y3 C  static unsigned char button_count=0; button_count++;
% J6 K# J6 p! r" V6 O! D  printf_string("\r\n Number of key:"); printf_byte(button_count);7 `0 z3 U4 t# N& S
  }
) Z( l/ Y0 X/ P4 H! ^6 Z) ?; J+ t4 o0 D4 Z5 o! p/ h% q, L
  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量
! }; h' _9 H  x2 |, k+ b
: N' o/ @2 z8 m. L# w, S" [  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。3 {% F1 ]9 S$ ]$ T
  4实验现象0 r; j! ?4 V+ G, Y  ^
- f: y' g$ g7 E: m  s
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。* c  p9 ~; r$ h  S$ z, A7 G
& A$ @; B7 |# y. k
  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。9 `9 n2 o+ v6 `- |: |
% s9 R4 o# V) U5 b) I  S
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。; s& L) d, c& o0 G
  (3)点击打开串口。
* r. M0 P  V3 f* T& b
' n' X1 [1 V" X- Z " T' D. q! q& g3 o% M
  图 2
! P, E$ t. M0 v& [3 d2 [8 t0 s  配置完串口之后,打开我们提供的代码。  B* B9 j4 f& Q0 M4 b" D

  O1 v: V& M6 q. k! T, a  (1)点击仿真按键。
' J& H; W; y8 {/ `2 }7 d
; _8 f0 @7 B" J  U 0 h8 |9 E( h+ U6 Q' D6 M8 o+ c# t% A
  图 3' }* R. z/ e+ D- J+ W; ]7 t
  (2)点击运行代码。
- Z" a4 _$ u: c/ l; a) N5 ?8 i# `' A/ a# d7 E% n! d6 l
   $ {( h4 s4 o$ A0 ~% }" W
  图 4
; g, b* @( h& X4 Q  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。3 m( a4 j4 L- D9 k7 }
. x6 }9 P- C" n) d+ {
$ ?' ?; l- X3 O, o8 ~* P
  图 5
2 `, q$ ^% c8 Y- w/ f3 _$ s1 x9 w) w5 P

9 f7 b+ ~% ]) G8 t3 B2 S* t; @6 j$ [
, x7 p4 U, f7 I& q文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0)
! m7 B: M6 c# b+ ~* }) s+ Y" w, O/ y& b

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 01:58 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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