6419|7

6070

帖子

4

TA的资源

版主

楼主
 

【CH554评测】第二篇 测试一下触摸按键 [复制链接]

本帖最后由 damiaa 于 2017-10-9 15:16 编辑

【CH554评测】第二篇 测试一下触摸按键
知识准备:触摸按键 Touch-Key
CH554 芯片提供了电容检测模块及相关的定时器,具有 6 个输入通道,支持电容量范围 5pF~
150pF。自电容方式可以支持最多 6 个触摸按键,互电容方式可以支持最多 15 个触摸按键。
TKEY_CTRL  C3h  Touch-Key 控制寄存器  x0h
TKEY_DATH  C5h  Touch-Key 数据高字节(只读)  00h

TKEY_DATL  C4h  Touch-Key 数据低字节(只读)  xxh
TKEY_DAT C4h  TKEY_DATL 和 TKEY_DATH 组成 16 位 SFR  00xxh  就是从这里读出触摸按键数据

Touch-Key 控制寄存器(TKEY_CTRL)
位7  bTKC_IF  RO定时中断标志。
位[6:5]  保留  RO  保留  00b
位4  bTKC_2MS  RW电容检测定时器的周期选择:0-1mS;1-2mS。每周期的前 87uS 为准备阶段,剩余时间检测阶段。
                       上述时间是基于 Fosc=24MHz 时的时间0
3  保留  RO  保留  0
2  bTKC_CHAN2  RW  触摸按键电容检测输入选择高位  0
1  bTKC_CHAN1  RW  触摸按键电容检测输入选择中位  0
0  bTKC_CHAN0  RW  触摸按键电容检测输入选择低位  0

由 bTKC_CHAN2~bTKC_CHAN0 选择触摸按键电容检测输入通道。
0  0  1  TIN0(P1.0)
0  1  0  TIN1(P1.1)
0  1  1  TIN2(P1.4)
1  0  0  TIN3(P1.5)
1  0  1  TIN4(P1.6)
1  1  0  TIN5(P1.7)
1  1  1  开启电容检测模块的电源但不连接任何通道
总结一下,就是有触摸按键数据寄存器和控制寄存器,一个是读数据,一个是控制哪个按键,开启采样等,这些寄存器都在CH554.H中有定义,在CH554手册中50页开始有详细说明。

1,先准备一下:把JP1的跳线跳到3--5  4--6相连。也就是从上往下左边4和5 右边4和5。
     这里是串口0.到时触摸的数据提示从这里出来。
2,选择USB烧录。(下面的那个USB口)
3,把触摸目录的程序烧录进去。
4,重新把线插到上面USB口。打开串口调试器,把串口选上面的那个刚生成的串口。波特率57600,N,8,1
5,按下触摸。不灵敏啊。一起按。啊出来了。提示03触摸通道 Query TouchKey Channel 03

  不灵敏啊 是我没试好?  板子?  程序?   后面再试。

程序采用查询方式好些了:去掉Touchkey.h中的宏定义://#define INTERRUPT_TouchKey   0     
就是查询方式了。结果好点了。

看来程序要改进一下才好。

触摸程序简介:程序有         main.c TouchKey.c Debug.c
         CH554.H Debug.H stdio.h TouchKey.h
这里只介绍一下相关的部分:
CH554.H中:
/*  Touch-key timer Registers  */
sfr TKEY_CTRL       = 0xC3;         // touch-key control
#define bTKC_IF           0x80      // ReadOnly: interrupt flag for touch-key timer, cleared by writing touch-key control or auto cleared when start touch-key checking
#define bTKC_2MS          0x10      // touch-key timer cycle selection: 0=1mS, 1=2mS
#define bTKC_CHAN2        0x04      // touch-key channel selection high bit
#define bTKC_CHAN1        0x02      // touch-key channel selection middle bit
#define bTKC_CHAN0        0x01      // touch-key channel selection low bit
// bTKC_CHAN2 & bTKC_CHAN1 & bTKC_CHAN0: touch-key channel selection
//   000: disable touch-key
//   001: TIN0(P1.0)
//   010: TIN1(P1.1)
//   011: TIN2(P1.4)
//   100: TIN3(P1.5)
//   101: TIN4(P1.6)
//   110: TIN5(P1.7)
//   111: enable touch-key but disable all channel
sfr16 TKEY_DAT      = 0xC4;         // ReadOnly: touch-key data, little-endian
sfr TKEY_DATL       = 0xC4;         // ReadOnly: low byte of touch-key data
sfr TKEY_DATH       = 0xC5;         // ReadOnly: high byte of touch-key data
#define bTKD_CHG          0x80      // ReadOnly: indicate control changed, current data maybe invalid
这里对理解程序有帮助。

IE_TKEY:触摸按键检查定时器的中断允许位,该位为1 允许定时中断。
INT_NO_TKEY:触摸按键定时器中断


Touch Key.h#define INTERRUPT_TouchKey   0                                                 //开启TouchKey中断方式


#define KEY_FIRST            0                                                 //采样起始通道                                      
#define KEY_LAST             3                                                 //采样结束通道
#define KEY_ACT              16  //20                                                //按键按下,通道采样值减小,该值减小,灵敏度高,该值增大,灵敏度低
#define KEY_BASE_SAMPLE_TIME 5                                                 //采样基准值采样次数,为了取到稳定的通道基准值                                           
中主要声明了与触摸相关寄存器和函数。还有几个宏定义INTERRUPT_TouchKey   0/1  是否采用中断形式采用触摸按键。
KEY_ACT 这个值是采样灵敏度调节的。特别注意。

Touch Key.c中有两种采样触摸方式的函数。
main.c中根据采用方式采样的结果进行串口打印输出。


测试结果:中断方式,在KEY_ACT 为16时中断方式稍微好些 。 CH554DEMO_TOUCH.hex (5.68 KB, 下载次数: 2)
               问题:目前老是第三通道被测试到。其他的没看 到 。程序后续要改动试下。
此内容由EEWORLD论坛网友damiaa原创,如需转载或用于商业用途需征得作者同意并注明出处












此帖出自单片机论坛

最新回复

可以把测试的结果贴出来,看看串口打印的内容,建议把keydata内容打印出来看看,触摸是否发生变化,变化阈值是否在可检测范围之内  详情 回复 发表于 2017-10-9 10:13
点赞 关注(1)
 

回复
举报

2774

帖子

8

TA的资源

版主

沙发
 
哈哈,慢慢来,要对国产有信心
此帖出自单片机论坛

点评

是啊。芯片应该还是不错的。只是使用好才行。  详情 回复 发表于 2017-10-3 20:12
 
 

回复

6070

帖子

4

TA的资源

版主

板凳
 
strong161 发表于 2017-10-3 14:07
哈哈,慢慢来,要对国产有信心

是啊。芯片应该还是不错的。只是使用好才行。
此帖出自单片机论坛
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

4
 
楼主把您的经验总结一下,写个比较详细的学习教程,带大家学习。
此帖出自单片机论坛

点评

嗯,有时间再细化一下。  详情 回复 发表于 2017-10-3 22:19
 
 
 

回复

6070

帖子

4

TA的资源

版主

5
 
dontium 发表于 2017-10-3 21:19
楼主把您的经验总结一下,写个比较详细的学习教程,带大家学习。

嗯,有时间再细化一下。
此帖出自单片机论坛
 
 
 

回复

305

帖子

0

TA的资源

一粒金砂(高级)

6
 
有疑问可直接发帖或联系我。
此帖出自单片机论坛

点评

谢谢  详情 回复 发表于 2017-10-9 10:02
 
个人签名单价1元含税的USB和Touchkey单片机CH551G已大批量出货,试样QQ:1258305301
 
 

回复

6070

帖子

4

TA的资源

版主

7
 
沁恒USB单片机 发表于 2017-10-9 09:55
有疑问可直接发帖或联系我。

谢谢
此帖出自单片机论坛
 
 
 

回复

168

帖子

3

TA的资源

一粒金砂(中级)

8
 
可以把测试的结果贴出来,看看串口打印的内容,建议把keydata内容打印出来看看,触摸是否发生变化,变化阈值是否在可检测范围之内
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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