8260|13

1469

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

我的MSP432 launchpad 扩展板 之 电容触摸板 终于调通啦 (附电容触摸按键原理简介) [复制链接]

 
本帖最后由 anqi90 于 2016-1-14 22:36 编辑

很久之前弄的这个MSP432 launchpad 扩展板上做了一个电容按键矩阵的触摸板

当时只是按照设想的做的,能不能用还真没底

结果板子做出来以后,把手上的oled模块调通之后就扔到一边了,这一放就是三四个月....

这两天终于又想起来了,于是翻出来吹吹灰,试着把这个触摸按键调一下吧。

废话不多说,先上视频给大家看看吧(目前只是把8个按键的计数变化量显示了出来,还没有计算坐标)——

从视频中可以看到,数据还是比较稳定的,而且可以根据按压的力度(实际就是接触面积的大小)读到不同的值
而且理论上可以判断出两到三个点的数据。


------------------------更新视频——-------------------------

有两段演示,一个是计算出来的坐标,可以看到有一个z表示按压的力度
第二段就是使用坐标画点,可以看出来在覆铜交界的地方会有偏移,不过暂时也只好这样了,毕竟也用不到很精确的定位
其实这个触摸板更大的意义在于可以随意规划按键的布局,不再受限于普通的4*4键盘只有16个按键,按键的位置也可以随意安排

其实之前(那时候还在学校,一晃都好几年了....)用MSP430G2的launchpad也做过触摸按键,就是下面这货:


不过当时鉴于经验不足,只是照着boosterpack风火轮的例程,把触摸按键的部分扒下来套上去用的
结果只是勉强能用,知其然而不知其所以然,用起来也不太稳定。

而这次就不一样了。这次本来是想学习一下TI的Capacitive Touch Software Library。不过简单看了一下之后,发现实在是太复杂,自己玩估计用不到这么多东西,于是就照着datasheet开始一步一步的配置。

其实432上的触摸按键说白了并不复杂,简单的结构如下:

原理也并不复杂:
首先,当引脚配置为触摸按键之后,就会产生一个震荡的信号,振荡的频率是与引脚与地之间的电容决定的。
当有导体靠近或接触到管脚及管脚所连接的铜皮时,电容就会改变,从而改变管脚上的振荡频率。
检测有没有按下,其实就是检测这个信号的频率变化。

然后,所谓的频率,其实就是 “一段时间内的信号周期数”
实际上我们并不关心绝对的“频率”(或者说“1秒内的周期数”),只要保证测量的时间相同,得到的周期数的变化就可以对应为电容的变化
所以我们使用一个定时器1控制定时器2的工作时间,用定时器2来测量这段时间内的周期数

实际需要做的配置也就是对应上图中的三个部分:
GPIO配置为电容触摸管脚
配置定时器1
配置定时器2

例如,配置P4.0为电容触摸并使能电容触摸功能:
  1. CAPTIO0CTL |= CAPTIOEN;
  2. CAPTIO0CTL |= CAPTIOPOSEL__P4;
  3. CAPTIO0CTL |= CAPTIOPISEL_0;
复制代码

这时候P4.0管脚上就会产生震荡信号。

下一步就是配置定时2,配置为输入时钟使用电容触摸按键的输出信号,计数模式,禁用中断等
从datasheet看到只有Timer A2、A3可以用电容触摸信号作为时钟源
我这里选择的是A2:
  1. TA2_config.clockSource              = TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK;
  2. TA2_config.clockSourceDivider       = TIMER_A_CLOCKSOURCE_DIVIDER_1;
  3. TA2_config.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_DISABLE;
  4. TA2_config.timerClear               = TIMER_A_DO_CLEAR;
  5. Timer_A_configureContinuousMode(TIMER_A2_MODULE, &TA2_config);
复制代码

对于定时器1,我是使用了看门狗定时器WDT_A,配置如下:
  1. CS_setReferenceOscillatorFrequency(CS_REFO_128KHZ);  // Set Internal low-power low-frequency oscillator 32KHz
  2. CS_initClockSignal(CS_ACLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1); // REFOCLK -> ACLK
  3. WDT_A_initIntervalTimer(WDT_A_CLOCKSOURCE_ACLK, WDTIS_7);   // ACLK -> WDT_A
  4. WDT_A_registerInterrupt(WDT_A_IsrHandler);
  5. Interrupt_enableInterrupt(INT_WDT_A);
复制代码
WDT_A的中断函数INT_WDT_A()里什么都没做,只是用来从LPM0中唤醒。

以上就是全部的配置工作,接下来就可以实际测量引脚上的震荡信号了:
  1. Timer_A_clearTimer(TIMER_A2_MODULE);
  2. WDT_A_clearTimer();
  3. WDT_A_startTimer();
  4. Timer_A_startCounter(TIMER_A2_MODULE, TIMER_A_CONTINUOUS_MODE);
  5. PCM_gotoLPM0();

  6. Timer_A_stopTimer(TIMER_A2_MODULE);
  7. WDT_A_holdTimer();
  8. count = Timer_A_getCounterValue(TIMER_A2_MODULE);
复制代码
清空两个定时器
开启WDT_A 开始计时
开启Timer_A 开始记录周期数
进入LPM0等待WDT_A 定时结束
定时结束后从LPM0唤醒
停止Timer_A
停止WDT_A
读取Timer_A的计数值

这样得到的count值就是这一个WDT_A定时周期内,TimerA2计数得到的震荡周期数。

对应不同的电容值会有不同的震荡计数,接下来就可以判断出这个引脚上的电容有没有变化、变化了多少,从而也就可以判断出按键有没有被按下啦

ok,大致的操作就是以上啦,至于进一步的优化工作就请大家自己动手咯~~~

以上!

七月份的尾巴~突然想起来432~~~八月份的前奏~就把它搞起来
继续折腾MSP432 Launchpad 串口驱动OLED 改为硬件SPI
我的432 launchpad 扩展板,不过有点悲剧
我的MSP432 launchpad 扩展板 之 电容触摸板 终于调通啦




最新回复

您好,请问下这个方案可以购买吗?学习使用   详情 回复 发表于 2023-7-12 17:14

赞赏

5

查看全部赞赏

 
点赞(1) 关注(3)

回复
举报

574

帖子

11

TA的资源

一粒金砂(高级)

沙发
 
很感谢楼主的分享,用ti的mcu很长时间,触摸部分都没怎么调过,有您这个分享,年前忙完一定试一波,我的片子也吃了半年的灰了,是该打扫干净过个年

点评

其实这个电容触摸是相当简单的,一个引脚上接一块铜皮就是一个按键,剩下的就都是软件的工作了  详情 回复 发表于 2016-1-12 23:12
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
sunduoze 发表于 2016-1-12 23:09
很感谢楼主的分享,用ti的mcu很长时间,触摸部分都没怎么调过,有您这个分享,年前忙完一定试一波,我的片 ...


其实这个电容触摸是相当简单的,一个引脚上接一块铜皮就是一个按键,剩下的就都是软件的工作了
 
 
 

回复

574

帖子

11

TA的资源

一粒金砂(高级)

4
 
看来您的软件写的比较屌,总是想不通怎么实现的,后面有时间一点实践一波

点评

其实并不复杂的,我一开始的时候也是一头雾水,慢慢就摸索出来了  详情 回复 发表于 2016-1-13 12:57
 
 
 

回复

2453

帖子

19

TA的资源

五彩晶圆(中级)

5
 
很棒的分享。
 
个人签名    懒得很
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

6
 
sunduoze 发表于 2016-1-13 04:25
看来您的软件写的比较屌,总是想不通怎么实现的,后面有时间一点实践一波

其实并不复杂的,我一开始的时候也是一头雾水,慢慢就摸索出来了
 
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

7
 
 
 
 

回复

821

帖子

0

TA的资源

一粒金砂(高级)

8
 
谢谢楼主分享!触摸按键的帖子当年看过。

点评

哈哈,那可是很长时间啦  详情 回复 发表于 2016-1-14 10:48
 
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

9
 
lising 发表于 2016-1-13 17:28
谢谢楼主分享!触摸按键的帖子当年看过。

哈哈,那可是很长时间啦
 
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

10
 
更新视频啦~~~
 
 
 

回复

1158

帖子

2

TA的资源

版主

11
 
这个非常棒诶!!支持支持!
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

12
 
收藏了。MSP432 触摸与FR2633的触摸有区别吗?

点评

应该是类似的,可以找CCS里带的例程参考一下  详情 回复 发表于 2016-10-10 12:55
 
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

13
 
1592849877 发表于 2016-10-10 10:32
收藏了。MSP432 触摸与FR2633的触摸有区别吗?

应该是类似的,可以找CCS里带的例程参考一下
 
 
 

回复

1

帖子

2

TA的资源

一粒金砂(初级)

14
 

您好,请问下这个方案可以购买吗?学习使用

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表