- 打卡等级:偶尔看看III
- 打卡总天数:50
- 最近打卡:2025-04-30 22:59:03
超级版主
- 积分
- 12073
|
发表于 2024-6-13 22:54:34
|
显示全部楼层
本帖最后由 梁工 于 2024-6-13 23:07 编辑
TSCFG1 = (7<<4) + 6; //B6~B4:开关电容工作频率 = fosc/(2*(TSCFG1[6:4]+1)), B2~B0:放电时间(系统时钟周期数) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最好大于等于3(1000)
TSCFG2 = 1; //B1~B0:配置触摸按键控制器的内部参考电压(AVCC的分压比), 0(1/4) 1(1/2) 2(5/8) 3(3/4)
检测原理:先对参考电容Co放电至0V,然后对被检测电容Cx按一定的频率fs充电至Vcc,接着将Cx与Co连接,Cx对Co放电,不断重复上述过程,直到参考电容Co上的电压达到设定的参考值。
本例放电时间为5000个主频时钟,即5000/24=208us。
参考电压选择 Vcc*1/2,在开关频率fs时Cx等效电阻为1/(fs*Cx),则根据RC充电公式简单计算可得 t = 0.693*Co/(fs*Cx)。
fs = fosc/(2*(TSCFG1[6:4]+1)),本例TSCFG1[6:4]=7,则fs=24/16=1.5MHz,这个就是开关电容的频率。当这个频率越快,则充电时间就越短。
比如某个键读数为24000,即1000us,如果TSCFG1[6:4]=3,则fs=3MHz,则读数变为12000,即500us,如果TSCFG1[6:4]=1,则fs=6MHz,则读数变为6000,即250us,如果TSCFG1[6:4]=0,则fs=12MHz,则读数变为3000,即125us。
fs低一些为好。
假设Co=22nF,fs=1.5MHz,某个键无触摸时读数24000,即1000us,此时电容Cx = 0.693*22nF/1.5MHz/1000us = 10.164pF。
假设触摸时读数变小了8%,即读数为22080,时间为920us,则此时电容Cx = 0.693*22nF/1.5MHz/920us = 11.048pF,手指触摸增加电容0.884pF。
可见,手指触摸时电容改变通常不到1pF,所以设计电路一定要尽量减小分布电容,使触摸电容变化在5%以上,达到10%则会非常优秀。
看不懂上述描述不要紧,直接示波器看参考电容的波形即可知道检测一个键的时间(放电+充电时间)。 |
|