KL25的TSI按键操作

花了一天时间写TSI按键代码,其实写代码只用了30分钟,但是看数据手册却用了我整整半天。擦!

不过一看TSI模块的寄存器只有3个,其实就可以知道这个模块并没有多复杂,复杂的地方在于机制的理解和参数的理解,数据手册有20页,也不算多。

该模块通过两个恒流源给按键充电时的时间差来确定按键是否按下,其中一个是参考恒流源。当按键按下的时候,按键的电容增大,用恒流源将其充满电所需的时间就会变长,这样就可以区分按键是否按下。当然这只是简单的解释。实际的检测过程比较复杂,也就是这个比较难以理解。

不得不说,数据手册的表达还是很到位的,区区20页,讲清楚了所有的操作机理,表达能力不可谓不强,几乎没有任何重复的叙述,所以每一句都很关键,都要细看。

之前听飞思卡尔的研讨会的时候,感觉飞思卡尔很明显对于自己的TSI设计很得意,重点提到多次。该模块确实设计的很了得,各种参数居然都可以设置,比如恒流源电流大小,重复检测多少次,参考电流源电流大小,充电充满与放电放空的电压差,里面还有分频器。不过说回来,正是因为东西这么多,才这么烦人。对于一个仅仅只做按键功能的东西,你整这么多寄存器,不觉得很麻烦吗?

下面是写的初始化代码:

void TSI_Init (void)
{
  SIM_SCGC5 |= SIM_SCGC5_TSI_MASK;  // Enable clock gating for TSI
  
  /* Enable proper GPIO as TSI channels *///以下引脚的功能设置为TSI通道
  PORTB_PCR18 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值