hejun96 发表于 2020-3-4 07:34:13

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

      最近在调试STM32的程序,首先STM32充当主控,合泰的BS83B08C触控单片机充当触控,触控控制3个按键,这3个按键有单个按键的长短按,也有2个按键的组合长按。
      那么在按键短按时会产生脉冲信号给主控STM32,STM32收到这个脉冲信号后对其进行解码,比方说触控输出的有3个按键也就有3路脉冲,那么我分别定义STM32解码值为0x01,0x02,0x04。根据获取到的3路脉冲分别解码得到按键的按下状态。但是如何进行解码的具体过程我不是很清楚,有坛友知道的吗?

mylovemcu 发表于 2020-3-5 10:31:20

这种解码一般就是采用中断读取的方式解码PWM输入捕获测量脉冲长度或者计数具体需要看一下触控芯片发出来的是什么信号格式

发表于 2020-3-5 11:10:36

一般是通过判断按键状态保持电平状态进行判断。用定时器或者中断的方式判断第一次改变时,时间结束时所产生的的时间段。

hejun96 发表于 2020-3-15 08:20:47

mylovemcu 发表于 2020-3-5 10:31
这种解码一般就是采用中断读取的方式解码PWM输入捕获测量脉冲长度或者计数具体需要看一下触控芯片发出 ...

我已经用示波器配合代码把自定义的协议对比,协议的解码现在都已经解到了,但是两个按键的长按还是不行,执行的却是其中的一个按键长按的效果。3个按键:COLD_LEY:0XAAHOT_KEY:0XBBCHILD_KEY:0XCC   现在我要同时长按COLD_KEY和HOT_KEY,同时长按10s,执行到的效果却是HOT_KEY或者是COLD_KEY长按10s的效果

mylovemcu 发表于 2020-3-16 08:48:34

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

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

单个按键和组合按键的处理方式不一样的单个按键只要判断边沿或者电平就可以组合按键的需要同时判断这两个按键的状态

hejun96 发表于 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
首先已经确定触控的单片机可以支持多建同时按,而且用示波器看波形确实可以同时两路脉冲按下不松开一直有 ...

触控单片机返回的信号是脉冲信号还是协议数据

hejun96 发表于 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)

hejun96 发表于 2020-3-17 08:52:29

mylovemcu 发表于 2020-3-17 08:42
触控单片机返回的信号是脉冲信号还是协议数据
波形类似于这种,我已经把这种波形进行分析,看下面的波形,一个尖波表示0,一个横平表示1.就得出主控端的码值是1010 1010(0XCC) =>COLD_KEY

mylovemcu 发表于 2020-3-17 09:25:06

hejun96 发表于 2020-3-17 08:52
波形类似于这种,我已经把这种波形进行分析,看下面的波形,一个尖波表示0,一个横平表示1.就得出主控端的 ...

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

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

要不从协议判断50ms以内收到两种协议可以判断是组合按键仅供参考
页: [1] 2
查看完整版本: STM32F1根据触控按键的脉冲解码