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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

, l1 |' Z  X& w& U* R5 Q2 L, D/ G7 Q) W+ l# g

- \. Z# v' L4 `  f: n' a, R2 @: Z+ p9 C9 t2 h
  1相关简介
' P) y+ y/ a, B1 m9 W/ A* k8 j+ F* T9 F- X0 \' G; H
  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。
; Z3 u; K/ h. d* V+ Q( n  L% e' X  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请
4 u& I* i% c$ o4 N, @: U  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。
3 t, s! i" ^. n. C7 B7 w8 ]' ?% X/ Y4 f  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。
1 d# b0 V9 H9 D0 O) y  2硬件设计$ ~# q  X0 Q6 @& o

! l& w9 d4 ]8 k  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。$ J: x" Z  O* F9 ^# s4 c. @
5 f" W4 [6 S; M  x" T' p5 {

: ?1 Z2 l) s9 k' T- c  图 1
3 y* |7 ~" Z, |" \# v2 Y  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。  R2 m- ^- [, {. }+ X, g7 c  q
  3软件设计% y6 }+ v8 G, |! x5 @

7 \1 l* Z5 ~6 I  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。
* c$ v( R" e& A3 {' a7 j7 l6 B$ I8 r  ?, x/ H7 {( h& X
  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。
4 R7 p* M" l; ?5 x  要使用外部中断,就需要一下几个流程:1 I" U! G# v% _9 P

# y3 }& Q$ Y3 s% d  (1)配置要使用的 IO 口。
# l5 Z, c4 F- x2 ^" z+ H/ O  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。
" k$ p: O3 F* ]1 F$ }  (2)注册中断回调函数。7 m9 r! I! k# D% X
  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);3 ?1 j! S8 ?* z3 R0 [
  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。+ p# a* y# T# V  m8 d: ?
  (3)使能外部中断。
' `' S& \% r/ Z# ~+ H* s% Y  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );
7 n6 \/ e7 @' V, N: x7 v# O' Q, Z! L+ O" I
  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数# t# o) P# L" Y; n6 T$ [
* L4 J9 l) R0 k- ]
  button1_int_handler 之中。$ a; e( @# {  a4 G- d& x! k
  void button1_int_handler(void)
0 ?  m7 H" Z1 Y( e2 E  k& p( X1 K* ^( v% L( r: L; h7 _
  {, u& _& y$ G) ^: r" @: Z; S, M" O
  static unsigned char button_count=0; button_count++;
) V" X1 T, B8 Z+ v1 I0 ?" g  printf_string("\r\n Number of key:"); printf_byte(button_count);
( _6 [0 |4 B6 L# n, S# g# t  }/ _' Y, P3 n9 J* n+ e
; k: Q! q8 v  z
  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量" ?% J1 t( x! x* L; J/ }/ M
1 ~% |/ h/ }( I' G* n
  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。" ^) r% P) P" E9 n
  4实验现象
0 V' H+ j5 y" f8 }; F! A6 o; K8 M& Y( v. b9 s1 Q! G
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。2 e" z- u. h8 K1 h% n3 j% E

$ [- S* ~; ^( Z  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
0 i& q8 m3 v3 \' [$ ]5 a) M7 ^9 X& V: t( z# D  Q2 I9 _
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
* p3 V3 Q2 X( I7 }  (3)点击打开串口。
2 M" y+ z) y8 }9 g! D0 L$ x/ p
- y# J% \" f6 r0 j
- e9 \' e$ @0 }' n: I. d  图 2; ~0 d+ k3 o7 w
  配置完串口之后,打开我们提供的代码。
9 ~6 |, Y; ?+ J  |6 ~
& l3 I$ ?: g, \) [0 t8 f  (1)点击仿真按键。
; n& F% ^" h+ ?( d, f6 c' z
+ ~# n7 _' l+ r2 w" Q
. q/ A! P# T$ n+ u* ~0 i  P5 z  图 3' T- L1 k( S! p1 J2 C
  (2)点击运行代码。
% ^& [* x# e1 R0 s$ B! W2 E/ p) d- Y; \; K8 ~4 j# p
   ! x- l% {9 i3 _% i' D
  图 4
: u8 P7 A- i# G) x  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。
' ^* a* R: {& ?/ |4 F; I! x3 l! w. K2 A$ K% |
, v+ U! {  z- w' |' l% [' S
  图 5
9 c, Y1 O! {! [( c# \( B& o
" N% z/ h2 p# D+ y  H, o$ [1 i/ n# J+ {' I6 l. t5 z% c2 L

$ u  }( V- f' k( g* L0 O文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0) & e. j1 }1 t9 a8 m7 Z: ~; A

, U& E# H1 N6 N% _  H+ t% u

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-22 09:35 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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