本帖最后由 天意无罪 于 2013-10-25 13:07 编辑
中午下班吃了饭,没事做,于是拿上书又翻了起来,还是TSI。在看代码时,想到了矩阵触摸键盘设计。
K60的TSI外设支持16通道触摸感应接口,如果应用设计使用到的触摸按键个数只有几个,可以采用单个IO挂载一个触摸按键的设计。但是,如果我们在设计中需要使用很多个触摸按键时,再使用上述方法就会占用太多MCU的IO资源,这是不合理的设计,特别是在MCU IO资源很少的时候(浪费可耻,节约光荣:lol)。
在看书的时候,我第一反应是想到了我们平时设计机械按键的处理方式,当我们需要的按键个数较多时,都采用矩阵键盘设计。如常见的3*3、4*4,更多的情况下一般就使用专用IC了。那么K60的TSI是否可以这样做勒,为了验证这个想法,偶马上握着铅笔在纸上草花了一下3*3的矩阵,发现可以。下面贴上以3*3=9矩阵触摸键盘为例的图,也是在CAD中画好后,截屏复制下来的,显示效果可能不是好,对不住了啊!凑合着看吧。
图1
按键编号1-9对应的TSI响应通道可以用下表说明。
从图一可以看出,我们只需要4个K60的TSI通道即可实现3*3=9个触摸按键的方法。而普通机械按键是需要3+3=6个IO通道。呵呵,TSI的触摸按键扩展还更力啊。于是我又想那4*4的矩阵触摸键盘应该占用多少个TSI通道勒,因此我又立马按照这个思路画4*4的图纸,等画好后,我发现出问题了,如下图所示。
图2 各位应该看出来问题所在了吧,按键1和6的响应通道一样,按键4和7的响应通道一样,按键10和13的响应通道一样,按键11和16的响应通道一样。这样设计,按键的编码不唯一。看来这种方法不行,只能用于3*3的矩阵设计。改了一下图,只能实现13个触摸按键编码。
各按键号对应的响应通道
|