你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F1根据触控按键的脉冲解码

[复制链接]
踮起脚摘苹果 提问时间:2020-3-4 07:34 /
      最近在调试STM32的程序,首先STM32充当主控,合泰的BS83B08C触控单片机充当触控,触控控制3个按键,这3个按键有单个按键的长短按,也有2个按键的组合长按。
      那么在按键短按时会产生脉冲信号给主控STM32,STM32收到这个脉冲信号后对其进行解码,比方说触控输出的有3个按键也就有3路脉冲,那么我分别定义STM32解码值为0x01,0x02,0x04  。根据获取到的3路脉冲分别解码得到按键的按下状态。但是如何进行解码的具体过程我不是很清楚,有坛友知道的吗?
收藏 评论18 发布时间:2020-3-4 07:34

举报

18个回答
踮起脚摘苹果 回答时间:2020-3-18 21:17:36
butterflyspring 发表于 2020-3-18 16:56
这个触控IC的手册是怎样描述双键按下的协议的,或者是怎样定义的,与单键按下什么区别的 ...

触控IC并没有对双键按下的协议有过描述,但是触控端有一个宏定义是对多键是否可以同时按下的一个宏,这个宏用来判断触控端是否支持多个按键同时。只是说触控端长按只要对应都能发出持续的电平就认为时可以的,我用示波器测过两个按键按下不松开,每一路脉冲都有协议的起始脉冲和结束脉冲,如果长按按键不松开,一直不会触发1ms的结束脉冲,只有当松开按键的时候,才会出现结束脉冲.双键与单键长按的区别并不在触控,而在STM32F103主控端的标志位,如果一个标志位表示热水键,那么按下后延时10s热水长按标志位置1,冷水按键长按10s,冷水按键的长按标志位置1.双键长按,热水按键+冷水按键同时长按就触发了双键长按的标志位。触控端只需要判断按键按下,结束的1ms脉冲始终都不执行,只有当松开按键,结束的1ms脉冲才执行就可以了,就把这个1ms脉冲看成是触控端的结束标志位。所以问题觉得不在触控
踮起脚摘苹果 回答时间:2020-3-17 09:54:33
mylovemcu 发表于 2020-3-17 09:25
确定是支持同时按键的吗  如果支持的话  组合键按下会传过来另一个协议  比如0xdd这样的  那处理方式和单 ...

比如1个按键发出这个协议的长度是28ms,那么做法不应该是当有2个按键按下了,会有两路脉冲输出,持续10s,10s后认为是双键长按。协议发过来,就和上面的图一样,但是会有一个结束的脉冲,比如说这个结束的脉冲是1个ms,如果我一直按下这个按键,那么这个1ms的结束脉冲在示波器上始终不会出现,只有当我松开按键的时候,这个结束脉冲出现了,那么这是单个按键长按的触发。那么双键长按我也是用两个长按的标志位,然后分别计时10s,当这两个标志位同时为1时才进入,但是这两个双键的10s定时器一直没计时。合泰触控BS83B08C支持双键长按
踮起脚摘苹果 回答时间:2020-3-15 08:20:47
mylovemcu 发表于 2020-3-5 10:31
这种解码一般就是采用中断读取的方式解码  PWM输入捕获测量脉冲长度或者计数  具体需要看一下触控芯片发出 ...

我已经用示波器配合代码把自定义的协议对比,协议的解码现在都已经解到了,但是两个按键的长按还是不行,执行的却是其中的一个按键长按的效果。3个按键:COLD_LEY:0XAA  HOT_KEY:0XBB  CHILD_KEY:0XCC   现在我要同时长按COLD_KEY和HOT_KEY,同时长按10s,执行到的效果却是HOT_KEY或者是COLD_KEY长按10s的效果
mylovemcu 回答时间:2020-3-5 10:31:20
这种解码一般就是采用中断读取的方式解码  PWM输入捕获测量脉冲长度或者计数  具体需要看一下触控芯片发出来的是什么信号格式  

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

废鱼 回答时间:2020-3-5 11:10:36
一般是通过判断按键状态保持电平状态进行判断。用定时器或者中断的方式判断第一次改变时,时间结束时所产生的的时间段。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

mylovemcu 回答时间:2020-3-16 08:48:34
hejun96 发表于 2020-3-15 08:20
我已经用示波器配合代码把自定义的协议对比,协议的解码现在都已经解到了,但是两个按键的长按还是不行, ...

这种组合按键首先要确定触控单片机是否支持  如果只支持单个按键触发的话  再怎么修改也做不了组合按键  只有自己做了

单个按键和组合按键的处理方式不一样的  单个按键只要判断边沿或者电平就可以  组合按键的需要同时判断这两个按键的状态
踮起脚摘苹果 回答时间:2020-3-17 07:51:07
mylovemcu 发表于 2020-3-16 08:48
这种组合按键首先要确定触控单片机是否支持  如果只支持单个按键触发的话  再怎么修改也做不了组合按键   ...

首先已经确定触控的单片机可以支持多建同时按,而且用示波器看波形确实可以同时两路脉冲按下不松开一直有效,直到松开按键电平才结束。然后STM32主控端我也是用当两个按键都有效时,用另一个标志位计时10s然后置1,却始终达不到效果
mylovemcu 回答时间:2020-3-17 08:42:48
hejun96 发表于 2020-3-17 07:51
首先已经确定触控的单片机可以支持多建同时按,而且用示波器看波形确实可以同时两路脉冲按下不松开一直有 ...

触控单片机返回的信号是脉冲信号  还是协议数据
踮起脚摘苹果 回答时间:2020-3-17 08:47:07
mylovemcu 发表于 2020-3-17 08:42
触控单片机返回的信号是脉冲信号  还是协议数据

是协议数据,我已经分析过这个协议,有3个按键COLD_KEY:0XCC(25ms),HOT_KEY:0xBB(27ms),CHILD_KEY:0XAA(25ms)
踮起脚摘苹果 回答时间:2020-3-17 08:52:29
mylovemcu 发表于 2020-3-17 08:42
触控单片机返回的信号是脉冲信号  还是协议数据

波形类似于这种,我已经把这种波形进行分析,看下面的波形,一个尖波表示0,一个横平表示1.就得出主控端的码值是1010 1010(0XCC) =>  COLD_KEY

CHILD_KEY 解码脉冲

CHILD_KEY 解码脉冲
mylovemcu 回答时间:2020-3-17 09:25:06
hejun96 发表于 2020-3-17 08:52
波形类似于这种,我已经把这种波形进行分析,看下面的波形,一个尖波表示0,一个横平表示1.就得出主控端的 ...

确定是支持同时按键的吗  如果支持的话  组合键按下会传过来另一个协议  比如0xdd这样的  那处理方式和单个按键一样的处理方式  

如果不支持同时按键的话  好像无解的  

要不从协议判断  50ms以内收到两种协议  可以判断是组合按键  仅供参考
butterflyspring 回答时间:2020-3-18 16:56:11
这个触控IC的手册是怎样描述双键按下的协议的,或者是怎样定义的,与单键按下什么区别的
踮起脚摘苹果 回答时间:2020-3-27 20:08:50
butterflyspring 发表于 2020-3-18 16:56
这个触控IC的手册是怎样描述双键按下的协议的,或者是怎样定义的,与单键按下什么区别的 ...

版主,现在触控这边的问题解决了,现在在STM32F103主控端有这么一个问题,就是单个按键有长按和短按的功能,长按和短按的功能各不相同,短按的时间不会超过3s,长按的时间需要10s,那么我现在是长按的时候会打开短按的功能,现在不想这样做,也就是说长按的时候不会触发短按,求版主能给一个方法指导吗?
五哥1 回答时间:2020-4-1 23:56:40
hejun96 发表于 2020-3-27 20:08
版主,现在触控这边的问题解决了,现在在STM32F103主控端有这么一个问题,就是单个按键有长按和短按的功 ...

这个应该是在中断程序里加上对时间的检测,就可以区分短按或者长按。
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版