【资料分享】 KL25 TSI基本原理介绍
本篇主要介绍TSI模块(Touch Sensing Interface)的基本原理,TSI模块是飞思卡尔为简化硬件设计人员开发而嵌入到Kinetis架构的电容触摸感应模块,图1是TSI模块的框图,从KL25的的芯片手册截得。图1
我们把这张图分成三部分,
第一部分为虚线框左边从上到下依次为:1 选择Delta电压的大小(Delta电压会在下面讲到),然后是TSI模块的16个通道,接着是选择触发模式:硬件触发还是软件触发。
第二部分为虚线框里面这部分,就是TSI原理的核心部分。电容的充放电的过程随时间变化如下图所示是一个三角波。图中的Hysteresis Voltage Delta是滞回比较器的滞回宽度,也就是三角波的峰峰值。
图2
如图3,触摸板等效于一个对地的电容,手指也等效于一个对地的电容,手指按上时相当于2电容并联,不按时只有一个电容。RC电路充电时间常数T=RC,当上拉电阻阻值固定时,电容增加会导致充电时间增加。所以手指按上时电容变大,充电时间变长(图4中的T2),不按时的充电时间短(图4中的T1)。
图3 图4
这里简要阐述下下电极振荡器输出的三角波是如何产生的。
图5
如图5所示一个简单的三角波发生电路由两个恒流源,两个mos管和一个滞回比较器构成。开始时,A点低电平,输出低电平,两个MOS管上面一个低电平导通,下面一个高电平导通,此时两个栅极C均为低电平,上面一个NMOS导通,下面的PMOS截止,于是电流源经过B到A给电容充电,同时A点电压升高,当到达滞回比较器的阈值Vth+时,输出变为高电平,此时下面的PMOS导通,上面的NMOS截止,这是,电容还是从A到B经过下面的电流源放电。放电放到电压等于另外一个阈值Vth-时,又开始充电。这样就在B点输出了三角波(因为本人的电路基础比较差,所以搞懂这一块花的时间比较久,关于滞回比较器会在接下来讲到)。电极振荡器的频率计算公式为:
在图1的虚线部分还有一个参考振荡器,参考振荡器与电极振荡器类似。计算公式如下:
参考振荡器使用的是内部参考电容,参考振荡器输出的三角波的周期是恒定的,用作图1中16位计数器的参考时钟信号输入。而电极振荡器的输出经过分频和每个电极的扫描次数NSCN之后作为计数器的使能信号输入。这样当电极振荡器的输出信号周期变大时,一个电极振荡器的输出信号周期中对应的参考振荡器周期的数目也就会增加(如图6),芯片手册中定义采样周期为采样周期是定义为模块计数器从0计数到最大值的时间。计算公式如下。我根据计算式将采样周期理解为电极振荡周期*连续扫描电极的次数,这样理解起来更加容易一点。
其中NSCN为连续扫描电极的次数。
测得电容值定义为在采样周期中的TSI参考振荡器的周期数目。存在TSICNT字段中。计算公式如下:
第三部分也就是中断部分。KL25的TSI模块中,中断有两种,一种是End of scan中断另外一种是Out-of-range interrupt中断,由GENCS位决定。
如果定义了End of scan中断,那么在每次扫描结束之后 位会被置。如果定义了Out-of-range interrupt中断,那么在每次扫描结束之后如果TSICNT的值超过阈值寄存器TSIx_TSHD中定义的阈值范围, 位会被置,值得注意的是每次扫描完位会还是会被置位,但是不产生中断。KL25的TSI模块不像K60可以定义持续扫描和周期性扫描,每次都要自己重新触发扫描,在使用的时候不是很方便。比如使用软件触发,每次扫描完需要通过设置TSI_DATA_SWTS_MASK来重新开始扫描。两种中断方式各有利弊,需自己权衡。
资料收藏!! 好,下载的示例代码中没有看到TSI例程 算式看着好复杂 很清晰,多谢 画PCB的时候好像直接敷一块铜就可以了对吧? 同楼上?具体怎么实现呢。。 看起来很复杂 不错 应该和KE02一样的 这个讲的很详细,学习 LZ 有没有工程代码,要是那个传上来就更好啦 学习一下板子升级之后K22没有TSI了
哎 只能看看了 整理的非常好,赞一个! 好资料,楼主费心了。 资料相当不错,整理的非常到位。谢谢分享! 谢谢分享 bruce_helen 发表于 2014-9-2 19:56
资料相当不错,整理的非常到位。谢谢分享!
不客气。 venilunar 发表于 2014-9-3 06:21
谢谢分享
不用谢的。 好复杂。。。。。。。 楼主有没有KL25或KL26的TSI的代码啊!
页:
[1]