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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

) R! K$ b6 q8 w" J( K
+ M& u6 {# b: F# O3 y
5 c* r+ M+ ?6 T/ g% `! ^6 A8 x0 \: o$ P6 u) O. Z
  1相关简介
: R: V7 E+ ]: M2 f; X- `. k) r( ]4 [/ K
  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。, X$ L$ r( g8 u, c* v& g. i
  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请5 }+ D. u5 o& w/ S1 S- R
  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。  \$ n: `2 N. U4 `1 h& Y. i
  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。% e9 s4 |0 N2 ~) l
  2硬件设计5 d& N% C* g. o& F

, C0 B/ e. p& j" s2 G' K6 {5 p  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。7 H8 w. |8 c; h+ h0 K; _
) C4 ?% |+ l% K  Y* w
4 ^2 e5 S6 K3 P+ {( S) d: N, E7 A
  图 1
1 D+ F/ @! C+ P. F2 _  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。
. d% j8 N  c- Z  ]3 {, ?, [; J  3软件设计
4 v) a! v( [2 P7 Z) B, X- H$ F" `' s& ]/ Y( l6 G
  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。
; w2 E, B; J* R, R9 h1 k: `, h3 C: D8 g  @0 A
  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。; F# L% X- u, D9 c
  要使用外部中断,就需要一下几个流程:
! W/ ^# J* T, ?1 B9 ^
8 b. |8 e0 D% o: j* U7 W  (1)配置要使用的 IO 口。
9 X! r: N+ T1 D  `6 V- K4 {) D  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。
8 ^5 R* B; w+ {* F1 p  (2)注册中断回调函数。
5 v/ K" a4 ^0 g( [- m2 L. Q, O( L5 e- e  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);9 x, m- L, F; y& P9 A: X3 j# o9 ~
  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。
$ n9 H5 _6 i0 E+ I6 H4 w( v  (3)使能外部中断。* P+ m/ D. O* G, C; B
  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );$ t0 q& `" [6 B9 S0 G2 E
1 \$ e1 h, ?5 p0 g0 |$ c$ }
  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数
$ D' c+ Y9 u* N" g! t2 U' q
8 D1 K& I- P6 I1 R  button1_int_handler 之中。7 b6 U, [& ^2 V, [3 ]
  void button1_int_handler(void)
) R3 U& W* \7 n1 `1 i
% r3 C9 c0 D6 m. Y+ |  {
' W5 ?5 z3 ]8 w% I: o. C  static unsigned char button_count=0; button_count++;8 `8 N* }* i1 A, b
  printf_string("\r\n Number of key:"); printf_byte(button_count);
2 A9 U& _0 p5 w% y7 g  }$ p) S3 @) T3 O# o. K# X

0 g) _5 B- U1 O/ @- E$ N- Q, i  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量
  m" B: b* A+ T" B0 W: F- w  T# @2 P. H0 s' |8 I" _# o" T
  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。
  S: ?0 K% K% @  4实验现象- Y" I: x! B+ y* X4 k1 d, o8 Z

( ]0 p' P4 o# Z/ c2 h( c4 K  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。0 @. Z+ q8 m. [: f0 y' r
) z' }0 ^' h+ U2 D" p
  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
/ a  V% J, t2 K0 l" D' h; I- T/ L6 R& X! |) `# P) q: y
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。4 L' F1 C7 K* b# M2 y8 }
  (3)点击打开串口。0 B& X% A! e8 l8 T9 i# Q

1 i5 v$ N5 }4 Y# J8 ]9 U
: p  X1 n! T5 d& N3 j( g# F  图 2" q$ P' ?/ x$ @2 W  O
  配置完串口之后,打开我们提供的代码。/ {" z* B! C! n" \8 O
- V% P) G- a: C3 P; i# [& C2 u
  (1)点击仿真按键。/ e; a& d& ^& o- H+ ~7 L# g
' N1 d( E  G- I/ b; P: |
8 Y. X6 u8 M( C. V* f3 ]
  图 3% S9 g/ v0 S1 s) X" f
  (2)点击运行代码。
0 ], i- t5 f5 P7 u
/ i1 w+ d  o. Q! v5 U  
5 v1 u- W  k+ C. @  图 4! |: N- s& Q& t  {) l2 w( r" v! }9 N
  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。/ F7 L8 }% R9 n8 E7 I' O" P
6 k- [) m0 p. A  G# h- y

" j. H+ i. t% t( b4 |  图 5; ]8 o+ o: |' B. @9 }

& m" ]4 U+ D# L& G0 S  e' F* g: q1 j- h  p0 K

) G5 o0 A" B) R; ^  X8 m文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0)
: O, T' V( N/ F2 D4 X: p& U3 t' j. q4 c) z

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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