触摸按键的程序的实现:
7 研读数据手册
①基本功能
在进行程序设计之前,必须仔细研读MSP430的数据手册。根据TOUCH PAD手册中所说,只有2211这块MCU具有比较器的功能。下面让我们来看看这块芯片的一些详细参数。
工作电压1.8V~3.6V
16位的计时/比较寄存器
电压过低检测
在线的模拟信号比较功能(这点尤为重要,是RC震荡的基础)
在线编程功能
下图是MSP430G2x11的基本功能框架图
由于基于RC的电容触摸核心在于对比较器输出数据的获取与处理,所以我们主要应该了解MSP430的比较器(从下面开始,将会以MSP430_USER_GUIDE内的原版章节编排)
第19章 比较器_A+
Comparator_A+是一个模拟电压比较器。下面主要讲述如何使用2XX系列的比较器。
19.1 比较器介绍
比较器模块支持精确的模拟到数字的转换,支持监测电压和外部模拟信号。下面是该比较器的一些特点:
在比较器输出端可以用软件选择是否要用RC滤波
输出能够作为Timer_A的输入
可用软件控制的输入端口缓冲器
可以选择的参考电压发生器
比较器和参考电压发生器能够关闭电源
具有输入选择器
19.2 操作比较器
用户可以使用软件来配置这个比较器模块,在下面的章节中我们将会仔细讨论如何使用软件来操作这个它。
19.2.1 比较器
比较器是用来比较在输入端+和输入端-的模拟电压的器件。当+端的电压比-端的电压更大的话比较器的输入端CAOUT将会输出高电平。比较器可以使用CAON位来打开或者关闭。一般来说,为了节能,在不使用的时候比较器应该关闭。当比较器关闭时,CAOUT端始终为低。
19.2.2 输入模拟开关
输入模拟开关通过控制P2CAx位来选择连接或断开比较器的输入端到相应的引脚上。并且,比较器的每个输入端都可以单独的被控制。P2CAx位的作用可以归纳如下:
把外部的信号连接到比较器的+端和-端
在内部把参考电压和相关的外部输出引脚连接起来。输入开关被配置为一个T触发器以便减少信号失真。
注意:当比较器被打开的时候,输入端应该被接上信号,电源或地。否则,浮动的信号将会导致中断发生或者增加电流消耗。
CAEx位用来控制输入端的多路选择器,通过多路选择器能够选择最终是哪个输入信号连接到比较器的+和-端。
19.2.3 输入短路开关
CASHORT位用来控制是否短路比较器的输入端。这将为比较器用来建立一个简单的采样保持电路。
19.2.4 输出滤波
比较器的输出端能够被配置是否使用内部的滤波器。当控制位CAF被设置的时候,输出端将会使用一个RC滤波器。
当输入端的电压差比较小的话,比较器的输出端会产生震荡。内部和外部各个信号线的寄生效应和相互耦合将会产生下图中的效果。这样,这个比较器的震荡输出将会使比较器的结果失去精度。这时,如果我们选择使用输出端的RC滤波,那么就能很容易减少这种问题的发生。
19.2.5 参考电压发生器
参考电压发生器一般用来产生Vcaref,它可以用来连接输入比较器的输入端。寄存器中的CAREFx位就是用来控制电压发生器的输出的。CARSEL位用来选择比较器的哪个端口应用Vcaref电压。当然,如果外部的信号连接到比较器每个端口的话,那么内部的参考电压发生器就应该被关闭以减少电量的消耗。内部电压比较器能够产生设备电压(VCC)的百分数或者一个固定的电压值。
19.2.6 比较器端口禁止寄存器CAPD
比较器的输入输出功能引脚是和普通IO引脚复用的,当模拟信号从这些CMOS结构的门中经过的时候,在VCC和GND之间就会产生一个寄生电流。禁止这些引脚能够减少寄生电流的消耗。
当我们把CAPDx位置1的时候,P2端口的输入和输出缓冲区将会被禁止。如果产品对功耗比较敏感的话,那么应该把每一个连接到模拟信号的引脚的CAPDx位都置位。
19.2.7 比较器的中断
对于比较器的中断来说,有个中断标记和中断向量与其相关。在中断标志寄存器CAIFG中通过设置CAIES位能够设置当前是上升沿触发还是下降沿触发。如果CAIE和GIE位都被置为1了,此时CAIFG标记位将会产生一个中断请求。如果中断请求被服务了或者被软件置位了,那么CAIFG标记将会被自动复位。