Ai8H4KTLCD 触摸按键有两个通道的按键扫描数据溢出问题 | TCAP 引脚焊接的电容太大了
配置了 TK0/TK1/TK3/TK4/TK5 5个触摸按键,打印扫描的按键值有两个通道的值溢出了,在中断里查询 TSDOV 确实置位了,
手册上说,如果出现溢出,可以修改软件配置或者系统硬件以避免发生溢出
目前我也修改了 TSVR,但是没啥作用,不知道还有哪些配置是关联扫描数据溢出的?
能请大佬详细讲讲吗?另外手册上说可以调整系统硬件,请问具体是调整哪一块呢?
附上触摸按键的相关配置代码:
void bsp_StcTouchkeyInit(void)
{
IE2 &= ~(1 << 7); //停止触摸中断
TSCTRL = 0; //停止自动扫描
TSSTA2 |= 0xC0; //清除标志位
/* 根据实际使用到的 GPIO 将其配置为高阻 */
P1_MODE_IN_HIZ(GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5); // P1.5/P1.4/P1.3/P1.1/P1.0 设置为高阻输入
/*
根据实际使用的触摸按键,使能对应的即可
此处使能了 TK00、TK01、TK03、TK04、TK05 共 5 个触摸按键
*/
TSCHEN1 = BV(0) | BV(1) | BV(3) | BV(4) | BV(5); // TK00~TK07
TSCHEN2 = 0x00; // TK08~TK15
/* TSRT 寄存器用于配置触摸按键控制器和 LED 驱动器分时多工 */
TSRT = 0x00; // 没有LED分时扫描
/*
触摸按键配置寄存器
TSCFG1:
bit6~bit4: 开关频率配置率(频率越高充电时间越短) 开关电容工作频率 = fosc/(2*(TSCFG1+1))
bit2~bit0: 配置触摸按键控制器内部的Cref的起始对地放电时间 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最小3
TSCFG2:
bit1~bit0: 配置触摸按键控制器内部的参考电压0(1/4 AVcc)1(1/2 AVcc)2(5/8 AVcc)3(3/4 AVcc)
*/
TSCFG1 = 0x7F;
TSCFG2 = 0x00;
/*
触摸按键控制寄存器(TSCTRL)
bit7(TSGO): 正常工作模式下触摸按键控制器启动控制 0:停振扫描 1:正常模式下启动扫描
bit6(SINGLE):单次扫描模式控制(TSGO为1时此寄存器位写入无效,TSGO为0时才可写入) 0:重复扫描模式 1:单次扫描模式
bit5(TSWAIT):触摸按键控制器等待控制(TSGO为1时此寄存器位写入无效,TSGO为0时才可写入)0:触摸按键控制器自动重复扫描 1:触摸按键控制器等待TSIF状态为1后才重复扫描
bit4(TSWUCS):低功耗模式下触摸按键控制器时钟源选择(TSGO为1时此寄存器位写入无效,TSGO为0时
才可写入)
bit3(TSDCEN):触摸按键控制器内部16位数字比较器控制位(TSGO为1时此寄存器位写入无效,TSGO为0
时才可写入)
bit2(TSWUEN):触摸按键控制器低功耗唤醒使能位(TSGO为1时此寄存器位写入无效,TSGO为0时才可写
入)
bit1~bit0(TSSAMP):单一触摸通道重复扫描次 0:1次 1:2次 2:3次 3:4次
*/
TSCTRL = 0xA0 & 0x7F; // 配置其他项时,确保 TSGO 为 0
TSCTRL |= 0x80; // 其他项配置完成时,设置 TSGO 为 1
IE2 |= (1 << 7); // 使能触摸中断
EA = 1; // 开总中断
bsp_StcTouchkeyVarInit();
}
其他的通道也接近65535了
检查TCAP的值是不是不对,或者按键电容值是不是不合理(触摸按键硬件结构) DebugLab 发表于 2024-10-7 20:07
其他的通道也接近65535了
检查TCAP的值是不是不对,或者按键电容值是不是不合理(触摸按键硬件结构) ...
还有
触摸按键频率SCR
放电时间DT
触摸按键参考电压TSVR TSCHEN1=0xFC; //TK00~TK07
TSCHEN2=0xFC; //TK08~TK15
TSRT=0x00; //没有LED分时扫描
TSCFG1=0x73; //开关电容工作频率 = fosc/(2*(TSCFG1+1)),放电时间(系统时钟周期数) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最小3
TSCFG2=0x03; //配置触摸按键控制器的内部参考电压(AVCC的分压比),0(1/4)1(1/2)2(5/8)3(3/4)
TSCTRL=0x33; //重复扫描模式,完成一轮扫描暂停,低功耗模式时钟为外部32768晶振,关闭数字比较器,关闭低功耗唤醒,4次平均,B7: TSGO,B6: SINGLE,B5: TSWAIT,B4: TSWUCS,B3: TSDCEN,B2: TSWUEN,B1 B0: TSSAMP
TSCTRL|=0x80; //开始扫描
IE2|=0x80; //启用触摸中断
应该是你TSCFG1、TSCFG2参数设置不合理导致的 DebugLab 发表于 2024-10-7 20:11
TSCHEN1=0xFC; //TK00~TK07
TSCHEN2=0xFC; //TK08~TK15
TSRT=0x00; //没有LED分时扫描
按照这个参数修改一下试试 DebugLab 发表于 2024-10-7 20:16
按照这个参数修改一下试试
感谢您的回复,实际测试修改参数后有作用但是不大;
查了原理图后发现 TCAP 引脚焊接的电容太大了,
修改为10nF之后在调节软件上面的参数就比较有效了,
再次感谢
{:handshake:}
roger 发表于 2024-10-7 21:26
感谢您的回复,实际测试修改参数后有作用但是不大;
查了原理图后发现 TCAP 引脚焊接的电容太大了,
修改 ...
{:handshake:}
页:
[1]