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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版