基本工作原理
通过设置好功能在寄存器和控制寄存器检测引脚输入的值。
实际检测阶段分为3个步骤:第一阶段:选择需要检测的阶段,选择扫描周期1或2ms,开启触摸按键中断,然后在87us内为充电准备阶段,87us内数据寄存器的值就是上周期读取的触摸按键的值。第二阶段: 87us后到1或2ms是触摸按键的寄存器读取本周期按键值,第三阶段 :1或2ms后完成一个周期触摸按键检测,然后进入中断,在中断中检测触摸键值
1,工作电压的问题
使用5v工作电压,在测试中使用串口打印读取的转换数据,发现只有在5v时才能正常输出,3.3v的输出有问题
2,进入中断后先关闭触摸按键中断
由于扫描周期太短,防止刚离开中断就再次进入中断
3,读取数据的方式
不需要设置任何通信方式,在设置好对应的寄存器后,直接在中断中读取对应寄存器中的值就可以了。
例如,直接将reg_dat = TKEY_DAT;
3.1 电容寄存器中数据不能重复读取
下面三行代码是放在触摸中断中,第一行读取了16bit值,2,3行合起来读取16bit的值,但这三行不能同时出现。 而且数据读取后的值不太相同,乱码的情况可参考
reg_dat = TKEY_DAT;// & 0x7FFF; //
// DAT_H = TKEY_DATH;
// DAT_L= TKEY_DATL;
这种现象的猜想:当DAT_H = reg_dat>>8;DAT_L = reg_dat;,并不是将低位赋值,高位舍弃。
3.2 从前面几种读取数值的方式来看最好的数据读取是读取整个16bit位的寄存器值
4,也要考虑干扰噪声的情况
5,不需要再触摸引脚并联电容
有些芯片需要和触摸引脚并联电容,但通过比较发现,若并联电容会发现读取的寄存器的值一直不变。
6,中断开启和关闭的位置和很关键
当进入中断后立即关闭,当下次检测一个通道时再打开