搜索
bottom↓
回复: 73

请教:STM8L做触摸按键的一些问题

  [复制链接]

出0入42汤圆

发表于 2011-2-14 10:25:57 | 显示全部楼层 |阅读模式
我现在用STM8L152做项目,其中用到了12触摸按键,采用的是CT感应方式(注意:不是RC方式)。

目前主要问题落在PCB Layout上面,ST的应用笔记(AN2869)上要求的很夸张,一般的应用中很难满足:

(原文件名:TSL.JPG)

问题如下:

1、在PCB Layout中需不需要严格按照AN2869上的要求来做?(感觉AN2869上提到的只是RC方式方面的要求,没有CT方式的)

2、如不满足AN2869上的要求,影响会不会很大?(比如AN2869要求每个GROUP之间的走线最小间隔距离是2mm,可是设计时只有1.5mm)

3、每个按键的走线需不需要等长?(最担心的是这个了,ST的触摸库里所有的按键都是统一的判定门限)


请各位DX帮忙,还有香水斑竹,谢谢!

补充:

现在画的板是这样的,按键部分的Layout心里没底


(原文件名:PCB.PNG)

底面

(原文件名:PCB1.PNG)

正面

(原文件名:PCB2.PNG)

出0入0汤圆

发表于 2011-2-14 10:35:01 | 显示全部楼层
个人感觉
3、每个按键的走线需不需要等长?(最担心的是这个了,ST的触摸库里所有的按键都是统一的判定门限)
应该不需要

门限判断是检测变化,而不是一个固定的值

出0入42汤圆

 楼主| 发表于 2011-2-14 10:58:22 | 显示全部楼层
回复【1楼】xieshang
个人感觉
3、每个按键的走线需不需要等长?(最担心的是这个了,st的触摸库里所有的按键都是统一的判定门限)
应该不需要
门限判断是检测变化,而不是一个固定的值
-----------------------------------------------------------------------

判定门限是统一的,《STM8 Touch Sensing Firmware Library On-line Help Manual》中对这个判定门限有说明的:


(原文件名:Help.PNG)

出0入0汤圆

发表于 2011-2-14 14:31:04 | 显示全部楼层
我觉得不会有问题的,STM8S我用过,,楼主想得很细,呵呵,仅供参考哈

出0入8汤圆

发表于 2011-2-14 16:30:03 | 显示全部楼层
线宽当然是越细越好,如是8L,支持两个key公用一个地,判别条件可以区分的,这与8S不太相同

出0入42汤圆

 楼主| 发表于 2011-2-14 17:13:59 | 显示全部楼层
回复【4楼】Grant
线宽当然是越细越好,如是8l,支持两个key公用一个地,判别条件可以区分的,这与8s不太相同
-----------------------------------------------------------------------

多谢Grant

我现在设计的按键的走线的线宽是8mil,这个已经是我现在的PCB供应商那里最小的走线了。

现在板子已经发出去了,等扳子回来后,我把调试结果告诉大家。同时欢迎大家交流

出0入0汤圆

发表于 2011-2-14 17:26:16 | 显示全部楼层
MARK STM8L 触摸键

出0入0汤圆

发表于 2011-2-14 22:04:12 | 显示全部楼层
3、每个按键的走线需不需要等长?(最担心的是这个了,ST的触摸库里所有的按键都是统一的判定门限)
---------------------------------------------------------------------------------------------
这一点大家都被迷惑了,这个问题我曾经咨询过ST的技术支持人员,他们也说不能分别设定。
但是,通过分析源代码,我发现实际上每一个按键都可以独立设定的。
只需在调用TSL_Init()之后,重新赋值以下变量(i表示按键的编号)   
sSCKeyInfo.DetectThreshold
sSCKeyInfo.EndDetectThreshold
sSCKeyInfo.RecalibrationThreshold

不过从你的Layout来看,你的按键之间的差别不会太多。

出0入0汤圆

发表于 2011-2-14 22:08:44 | 显示全部楼层
CT感应方式我没用过,不知道和RC方式有多大差异。我注意到你的按键旁边都有一个贴片元件,如果是RC方式,以尽量靠近MCU为佳,不知道CT方式是否也如此。

出0入42汤圆

 楼主| 发表于 2011-2-14 22:23:15 | 显示全部楼层
回复【7楼】wuyya
3、每个按键的走线需不需要等长?(最担心的是这个了,st的触摸库里所有的按键都是统一的判定门限)  
---------------------------------------------------------------------------------------------
这一点大家都被迷惑了,这个问题我曾经咨询过st的技术支持人员,他们也说不能分别设定。
但是,通过分析源代码,我发现实际上每一个按键都可以独立设定的。
只需在调用tsl_init()之后,重新赋值以下变量(i表示按键的编号)     
ssckeyinfo.detectthreshold  
ssckeyinfo.enddetectthreshold  
ssckeyinfo.recalibrationthreshold  
不过从你的layout来看,你的按键之间的差别不会太多。
-----------------------------------------------------------------------

多谢,这个太给力了

出0入42汤圆

 楼主| 发表于 2011-2-14 22:25:38 | 显示全部楼层
回复【8楼】wuyya
ct感应方式我没用过,不知道和rc方式有多大差异。我注意到你的按键旁边都有一个贴片元件,如果是rc方式,以尽量靠近mcu为佳,不知道ct方式是否也如此。
-----------------------------------------------------------------------

这个影响应该不大,这个是ESD电阻

出0入42汤圆

 楼主| 发表于 2011-2-14 22:30:13 | 显示全部楼层
我现在担心按键背面的网状铺地,用20%的敷铜率,安全间距是20mil

出0入42汤圆

 楼主| 发表于 2011-2-22 11:29:47 | 显示全部楼层
板子做回来了,经过测试,触摸按键很好使。上图:
PCB背面

(原文件名:0222111201.jpg)
PCB正面

(原文件名:0222111300.jpg)
背面:

(原文件名:0222111200.jpg)

主芯片STM8L152

(原文件名:0222111400.jpg)
显示效果

(原文件名:0222111500.jpg)
显示效果

(原文件名:0222111601.jpg)
按键细节

(原文件名:0222111600.jpg)
按键细节

(原文件名:0222111700.jpg)

出0入0汤圆

发表于 2011-2-22 13:30:02 | 显示全部楼层
回复【12楼】my_avr  
-----------------------------------------------------------------------
请问,触摸按钮上粘着的那个像棉花样的东西 是什么?

出0入42汤圆

 楼主| 发表于 2011-2-28 00:35:24 | 显示全部楼层
回复【13楼】gonghaixu123
-----------------------------------------------------------------------

是“导电泡绵”

出0入0汤圆

发表于 2011-2-28 10:31:55 | 显示全部楼层
MARK,正在研究,很不错的资料

出0入0汤圆

发表于 2011-3-1 09:10:47 | 显示全部楼层
回复【14楼】my_avr  
-----------------------------------------------------------------------

能把程序发给我看看吗?ghx-123@163.com 我用的是STVD
我用的stm8s103f3单片机 1.0的触摸库 现在发现load脚一直振荡不了
我把tim3改成了tim2  在207的实验板上load脚没有问题,但是自己做的103f3板子 就是不行 郁闷中

想用辛库试试,但是老有问题
#error cpstm8 ..\libraries\stm8s_stdperiph_driver\src\stm8s_adc1.c:48(10+3) bad struct/union operand
不知道 编译器是不是要升级

出0入42汤圆

 楼主| 发表于 2011-3-1 09:30:33 | 显示全部楼层
1.0的库我没用过,现在也找不到1.0的库来用。

用最新的触摸库是肯定没问题的,编译器可以不用升级,我一直用本网站提供的免安装和谐版的Cosmic

触摸库里带有好几个例程,你可以试着把这几个例程编译一下,成功了之后再一步步修改,这样相信不会有太多的问题

出0入0汤圆

发表于 2011-3-1 12:21:50 | 显示全部楼层
回复【17楼】my_avr  
-----------------------------------------------------------------------
这是在103里调试的定时器寄存器

(原文件名:stm8103.png)
这是在207里调试的定时器寄存器

(原文件名:stm8.207.png)

程序都一模一样,结果却差了很多  很明显103里的没工作
现在只能去搞新库了  新库主要是路径难设置 老是出错

出0入0汤圆

发表于 2011-3-2 22:02:25 | 显示全部楼层
有一个老版本的配置文件中,103相关的Timer的寄存器的地址是错的,我忘记了是1.1还是1.2版了,你可能用的就是那个版本,请核对一下文档就知道了。

出0入0汤圆

发表于 2011-3-2 22:06:41 | 显示全部楼层
我找到了,如下,在STM8S103那一行写的是 0x530B,你如果照搬下来,就被坑了,正确的地址是0x530C。

//==============================================================================
//
// 2) ACQUISITION TIMER SELECTION (TIMACQ)
//
// Set the acquisition timer name and its counter high register address.
// The timer you select must be a 16-bit timer, have a 8-bit prescaler and
// must be different of the TIMTICK timer described below.
// This table summarizes the values for some products (consult the datasheet
// if your product is not in the list):
// Product                TIMACQ        TIMACQ_CNTR_ADD
// STM8S20x               TIM2          0x530B
//     "                  TIM3          0x5328
// STM8S105               TIM2          0x530B
//     "                  TIM3          0x5328
// STM8S103               TIM2          0x530B
// STM8L101               TIM2          0x525B
//     "                  TIM3          0x528B
//==============================================================================
#define TIMACQ           (TIM2)
#define TIMACQ_CNTR_ADD  (0x530C)

出0入0汤圆

发表于 2011-3-3 12:19:22 | 显示全部楼层
我已经 块崩溃了
我的程序在实验板上 一点问题没有(207)

到了自己做的 就是不行

我现在得到的结果是这样,我用的是1.1的库  已经照着官方资料,把 configuration, map.h,i/o 文件里的 参数全部改过。
load脚已经出现震荡波形。但是是那种没用105电阻接acq脚的那种波形。不是实验板正常震荡的波形。  我觉得还是acq口出现问题,似乎不能检测。而且 还有个奇怪的问题 ,就是我把PD0 废掉不用 load口立刻不震荡。真的不知道是哪边出了问题。

出0入0汤圆

发表于 2011-3-10 14:07:30 | 显示全部楼层
回复【10楼】my_avr
回复【8楼】wuyya  
ct感应方式我没用过,不知道和rc方式有多大差异。我注意到你的按键旁边都有一个贴片元件,如果是rc方式,以尽量靠近mcu为佳,不知道ct方式是否也如此。
-----------------------------------------------------------------------
这个影响应该不大,这个是esd电阻
-----------------------------------------------------------------------

查文档,CT方式的ESD电阻,也要求尽量靠近MCU。

我一直在用ST的RC触摸库,试过用各种干扰源来测试,感觉抗干扰还不错,但是最近发现了一个大问题,我的板子抵挡不住阴极射线管电视机的干扰,电视机连续换台的时候,按键失效,停止干扰后,要过几秒钟才能逐步恢复。
反复用了几种板来测试,发现线拉得越长,抗干扰能力越差,唯一还值得庆幸的是,受干扰的结果是检测不到按键,而不会误触发。
很关心CT方式是否要强于RC方式,楼主如有富余的板子,可否送给我一套,我测试一下CT方式的抗干扰能力。

出0入0汤圆

发表于 2011-3-23 13:56:49 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-27 13:39:11 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-29 00:17:28 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-9 15:21:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-14 11:12:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-9 16:13:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-9 19:40:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-25 17:53:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-12 21:23:32 | 显示全部楼层
回复【22楼】wuyya  
-----------------------------------------------------------------------
我问过STM8的技术支持,他很明确的告诉我CT模式比RC模式抗干扰能力要强。
但我现在又不得不用RC模式,因为IO口资源的原因。

出0入0汤圆

发表于 2011-12-20 15:40:59 | 显示全部楼层
Cool!见识到了!

出0入0汤圆

发表于 2012-1-5 09:28:25 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-1-17 19:09:27 | 显示全部楼层
我不习惯用库,因为不知道库里面是怎么实现的,具体算法是什么样的,如果出现问题不好解决。而且用库的话代码大小比较大。

出0入0汤圆

发表于 2012-1-20 22:43:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-21 18:56:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-28 11:27:40 | 显示全部楼层
学习

出0入0汤圆

发表于 2012-2-28 12:34:47 | 显示全部楼层
mark,学习

出0入0汤圆

发表于 2012-2-28 12:47:07 | 显示全部楼层
板子画的不错。

一直对这种触摸按键感兴趣,只是不知道稳定性不知如何?现在看来,应该很好。

呵呵,请问楼主stm8l使用什么仿真器?

出0入0汤圆

发表于 2012-2-28 13:15:36 | 显示全部楼层
1、stm没用过stm的产品,想问下触摸一块盘隔2--4mm的亚克力或塑料后触摸效果怎么样,毕竟做产品需要外壳包装吧!

2、另外据我了解STM8L中有带LCD接口的MCU,没必要用HT1621B之类的LCD驱动IC吧。也许你的答案是MCU引脚不够。
^_^

出0入30汤圆

发表于 2012-2-28 13:36:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-29 14:31:57 | 显示全部楼层
CT模式跟RC模式有什么区别?

出0入42汤圆

 楼主| 发表于 2012-2-29 15:04:16 | 显示全部楼层
回复【39楼】fickle
板子画的不错。
一直对这种触摸按键感兴趣,只是不知道稳定性不知如何?现在看来,应该很好。
呵呵,请问楼主stm8l使用什么仿真器?
-----------------------------------------------------------------------

STM8L用ST-LINK可以仿真


回复【40楼】duxingkei 独行客
1、stm没用过stm的产品,想问下触摸一块盘隔2--4mm的亚克力或塑料后触摸效果怎么样,毕竟做产品需要外壳包装吧!
2、另外据我了解stm8l中有带lcd接口的mcu,没必要用ht1621b之类的lcd驱动ic吧。也许你的答案是mcu引脚不够。
^_^
-----------------------------------------------------------------------

1、2mm左右的亚克力或塑料是没问题的,4mm的话可能灵敏度不够好,操作不灵敏。我现在产品一般用2mm厚的ABS面板

2、STM8L是有带LCD接口,图中的产品确实是因为IO口不够才用HT1621B的,因为12个触摸按键已经用了18个IO口了

回复【42楼】liang118038
ct模式跟rc模式有什么区别?
-----------------------------------------------------------------------

CT是基于电容电荷转移的原理的;RC方式是采用RC电路充放电原理

出0入0汤圆

发表于 2012-3-28 21:02:42 | 显示全部楼层
怎么st网站都没有CT方式触摸按键的文档?不公开?

出0入42汤圆

 楼主| 发表于 2012-3-28 21:12:19 | 显示全部楼层
fickle 发表于 2012-2-28 12:47
板子画的不错。

一直对这种触摸按键感兴趣,只是不知道稳定性不知如何?现在看来,应该很好。

稳定性还可以,就是要注意使用环境,不要太潮湿

STM8L可是使用ST-LINK来开发

出0入42汤圆

 楼主| 发表于 2012-3-28 21:14:13 | 显示全部楼层
nos001 发表于 2012-3-28 21:02
怎么st网站都没有CT方式触摸按键的文档?不公开?

文档有的,从ST的网站上下载触摸库后,里边有帮助文档,有介绍CT方式的原理

出0入42汤圆

 楼主| 发表于 2012-3-28 21:34:26 | 显示全部楼层
具体的扫描电流没有测,现在产品的平均电流为40uA左右,一个2032电池可以用一年

出0入0汤圆

发表于 2012-3-28 21:52:41 | 显示全部楼层
楼主,STM8的触摸库的按键检测代码是以查询方式进行的,不影响你别的应用吗?这种程序结构我觉得简直没法用啊,假如我的应用里有个10ms定时中断并且中断里花销的时间有5ms,那按键扫描还能进行吗?又或者在中断后下一个中断到来前完成1-3个按键的扫描?如果我还有AD中断还有SPI中断呢?那按键扫描不可避免的要被打断,这如何保证按键的灵敏和可靠性?

出0入0汤圆

发表于 2012-3-28 21:57:29 | 显示全部楼层
很漂亮,可惜自己一直没动手去搞

出0入42汤圆

 楼主| 发表于 2012-3-28 22:59:41 | 显示全部楼层
触摸库运作的时候,在关键的充放电时间里,肯定是关闭全局中断的,其他时候是可以被中断的。按键的可靠性是需要一些算法保证的,比如采用一般机械按键的状态机办法。

ST的触摸库是轮询的工作进行的,MCU是需要唤醒的时候才能检测按键的,触摸按键不能把MCU从中断唤醒。

出0入0汤圆

发表于 2012-3-28 23:21:54 | 显示全部楼层
本帖最后由 nos001 于 2012-3-28 23:38 编辑
my_avr 发表于 2012-3-28 22:59
触摸库运作的时候,在关键的充放电时间里,肯定是关闭全局中断的,其他时候是可以被中断的。按键的可靠性是 ...


要是关全局中断如何保证定时器定时中断的准确?他的库代码就有个0.5ms的定时中断。
我看了tps430和PIC的触摸文档,他们的提供的触摸代码都是基于中断的,只是他们的MCU脚位多的型号都较贵,不好选型。另外就是看中STM8S208的can通信了。
其实STM8的触摸代码完全可以利用中断的,他的培训资料里说的也是和应用文档里的一样是基于中断的,就是启动按键扫描的时候启动个定时器,假设为T1,按照文档里
介绍的测试原理当I/O口充放电平达到ViH或ViL后产生I/O口中断,然后记取T1定时器的计数。STM8的触摸库之所以采取轮训的检测方式应该是为了通用,不是最好的方案。

出0入0汤圆

发表于 2012-7-2 16:28:59 | 显示全部楼层
STM8L 电容触摸    mark

出0入0汤圆

发表于 2012-7-2 20:21:32 | 显示全部楼层
mark

STM8L电容触摸讨论

出0入0汤圆

发表于 2012-7-3 06:45:15 | 显示全部楼层
做得不错。
CT和RC的方式,有哪些文档有介绍?

出0入0汤圆

发表于 2012-8-23 09:43:38 | 显示全部楼层
想知道,板的底层不铺地可以吗?

出0入0汤圆

发表于 2012-11-21 11:42:48 | 显示全部楼层
这个必须 顶
头像被屏蔽

出0入0汤圆

发表于 2013-4-17 13:15:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-5-2 12:39:36 | 显示全部楼层
markmarkmark

出0入0汤圆

发表于 2013-5-14 09:10:57 | 显示全部楼层
mark

出0入17汤圆

发表于 2013-8-31 13:02:55 | 显示全部楼层
有什么办法解决温度和湿度的影响?

我这里使用专用芯片,正常情况,工作很正常,一放到阳光下,按键就不触发了。(按键上方加了背光板和亚克力外壳)

出0入0汤圆

发表于 2013-10-29 15:56:11 | 显示全部楼层
收藏了!!!

出0入0汤圆

发表于 2013-12-31 18:05:59 | 显示全部楼层
MARK
223234234

出0入0汤圆

发表于 2014-6-10 14:32:18 | 显示全部楼层
好贴,标记下

出0入0汤圆

发表于 2014-7-2 14:04:01 | 显示全部楼层
MARK stm8l触摸按键

出0入4汤圆

发表于 2014-9-13 11:56:05 | 显示全部楼层
STM8L 触摸按键

出0入0汤圆

发表于 2014-10-22 10:57:37 | 显示全部楼层
my_avr 发表于 2012-3-28 21:14
文档有的,从ST的网站上下载触摸库后,里边有帮助文档,有介绍CT方式的原理 ...

能将库资料发上来么?ST的官网上下载不了,要收费

出0入0汤圆

发表于 2014-10-27 16:13:50 | 显示全部楼层
MARK,最近也在做,不知道用什么驱动芯片好。

出0入0汤圆

发表于 2015-2-3 10:32:51 | 显示全部楼层
mark,楼主做的板子很漂亮。

出0入0汤圆

发表于 2015-4-23 21:34:24 | 显示全部楼层
楼主可否发触摸的资料给我!急用

出0入0汤圆

发表于 2015-9-12 14:31:22 | 显示全部楼层
楼主,资料可否告知一二啊....

出0入8汤圆

发表于 2015-9-12 19:39:08 | 显示全部楼层
都几年了,楼主公开一下资料啊,

出0入0汤圆

发表于 2016-2-28 22:01:45 | 显示全部楼层
my_avr 发表于 2012-3-28 21:34
具体的扫描电流没有测,现在产品的平均电流为40uA左右,一个2032电池可以用一年 ...

一年?那么久?你是怎么做到的,求教

出0入0汤圆

发表于 2019-3-16 15:30:02 | 显示全部楼层

MARK STM8L 触摸键
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 16:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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