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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

$ R, R3 t& H/ J9 h' o3 R$ L
6 z5 S# C5 P' @* j6 t# e7 ~4 c. w, Y  i! m! x7 p. Y

4 |/ D! {) r& \9 ?- a) u# e  1相关简介
1 o3 I& u7 N9 U, m) Z
1 V: _- C% a! P9 ?7 K4 }) e  本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。
  {+ i0 y' l" G6 [  [! G  DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请
" y& O# V- {1 G. X' C2 g7 E  求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。
+ {: v4 d& V2 w! w$ o: T' m  DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。
( C1 S" b2 K$ x+ P  2硬件设计
# B7 A! O- Y7 K1 l, m7 E6 b1 m2 {/ `. N1 z6 y) Q" `
  下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。
# R( f1 K+ f/ S* O5 O; g- r
2 c* U! t( B8 Y" }   
- O" R% a& k6 K1 g  图 1
9 J& V1 U& j! @9 b( r/ ]) I+ l  RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。4 \, x8 Y$ h' {# B0 v/ t7 A5 ?
  3软件设计
% S' m# M, c* {# _) k/ Z! G
6 n: x  l; q8 ^, p0 v: r- R  本次软件,将完触摸一次按键,打印一次累计按键次数的现象。' x+ l4 M6 E0 F+ m! g: o

$ N2 _) |$ Q7 p/ q  G4 @# \: K  整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。9 k. F) ?; O; C" y2 x" o5 X
  要使用外部中断,就需要一下几个流程:4 |$ B# p4 }+ v  P& G
# t* c; T) J( p) P
  (1)配置要使用的 IO 口。3 k+ u( C0 d# x5 v( \7 i
  GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。8 Z9 ?2 [  \* B& r. O0 D
  (2)注册中断回调函数。
4 \# w6 m5 S! B! q: x  GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);
' c; k4 X# w# u6 M1 O0 j  这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。
: M# a% D9 d) V( U, E  |& F4 Q$ E# C. r  (3)使能外部中断。! {$ Z! r) Y0 J# z# O
  GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );* a8 ?& ]# \, ~+ e0 ^. Z( }
3 b% k$ K9 X) ~4 b& Z3 e; H& {5 W  h$ e
  完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数
4 p2 T' t9 ~$ b6 M* [; j! B, Q; p0 h0 Z; ^0 R% w
  button1_int_handler 之中。
0 P7 h, C; `" v( f  void button1_int_handler(void)6 S# a2 s5 |3 ]
( N) z8 `$ s) x5 U) c
  {
0 h1 c7 y2 _' B6 k- [  }  static unsigned char button_count=0; button_count++;
$ O0 k" f1 I! N0 j& O  printf_string("\r\n Number of key:"); printf_byte(button_count);6 v$ X0 M& K% D& P% y
  }0 Z' Q1 |' L! T2 d; [5 ?: i3 b
, r( W2 I- j! \; f1 M( D
  在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量' x# r. _! T- A" v4 |
/ w# L1 ^3 M& J
  button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。9 `. e, A' V4 d$ H
  4实验现象5 r2 v# ^2 ^# J3 |* D8 d: {. N2 ~" V
  q; |* d6 D, t' @! v
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。0 p& O' o1 Z/ k1 w9 A, @

7 f6 Z* X  V% g& j& a1 V" \) E& u  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
$ w2 x  y" P! N4 ^5 c) Z" g1 o& V) T$ ~& ^
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
) h" p2 I4 z) N5 m& X  (3)点击打开串口。
5 ~$ I8 A6 d1 g; ?- G- n
; Y* P* h# X( e, x4 V7 {
: G* |7 H! T. _4 f5 J: W/ E  图 23 X% @- n) n! j1 b1 m6 w
  配置完串口之后,打开我们提供的代码。* f1 ]+ [8 C2 [* s: u& _9 V

; a1 F  X: X4 N- c2 M# S; V  (1)点击仿真按键。. B& \( d$ J: f

* t! \2 z/ q  }
" r; Y" u1 r" m* m# V  图 3
( M3 @7 i3 r4 Y4 s% I/ H& {  (2)点击运行代码。
1 k: d1 `4 ]) R3 q: `$ m; Q! i
! T7 ^6 x, ?) ^5 T& s # D, k  _4 d+ p' U
  图 4
& D: s# Y7 O7 l" ^; j1 @4 z  完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。3 I( c8 m% Y9 {
, N/ S$ n8 O! b% ?3 \
  ' Y3 d0 o: u8 e7 r# w
  图 5; x  w0 r1 i- o; _
- N9 k1 t$ ]$ ?. _( o# r
# l- o0 C5 Y2 I8 _) ?1 T' c* e
6 w6 _7 H/ B! i0 d9 q; y5 P
文件下载请点击: 5_(100%开源)蓝牙心率防水运动手环_电容触摸.pdf (645.65 KB, 下载次数: 0)
( ]/ q  ~! y, c2 ]& e! R" b
% L/ d3 g; V3 m, @+ N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-13 11:04 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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