找回密码
 立即注册
查看: 389|回复: 7

Ai8H4KTLCD 触摸按键有两个通道的按键扫描数据溢出问题 | TCAP 引脚焊接的电容太大了

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:258
  • 最近打卡:2025-05-01 09:43:59

11

主题

18

回帖

941

积分

高级会员

积分
941
发表于 2024-10-7 19:38:17 | 显示全部楼层 |阅读模式
配置了 TK0/TK1/TK3/TK4/TK5 5个触摸按键,打印扫描的按键值
截图202410071931569058.jpg
有两个通道的值溢出了,在中断里查询 TSDOV 确实置位了,
手册上说,如果出现溢出,可以修改软件配置或者系统硬件以避免发生溢出
截图202410071933283078.jpg
目前我也修改了 TSVR,但是没啥作用,不知道还有哪些配置是关联扫描数据溢出的?
能请大佬详细讲讲吗?另外手册上说可以调整系统硬件,请问具体是调整哪一块呢?

附上触摸按键的相关配置代码:
  1. void bsp_StcTouchkeyInit(void)
  2. {
  3.     IE2 &= ~(1 << 7);                //停止触摸中断
  4.     TSCTRL = 0;                        //停止自动扫描
  5.     TSSTA2 |= 0xC0;        //清除标志位
  6.     /* 根据实际使用到的 GPIO 将其配置为高阻 */
  7.     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 设置为高阻输入
  8.     /*
  9.     根据实际使用的触摸按键,使能对应的即可
  10.     此处使能了 TK00、TK01、TK03、TK04、TK05 共 5 个触摸按键
  11.     */
  12.     TSCHEN1 = BV(0) | BV(1) | BV(3) | BV(4) | BV(5); // TK00~TK07
  13.     TSCHEN2 = 0x00;                                  // TK08~TK15
  14.     /* TSRT 寄存器用于配置触摸按键控制器和 LED 驱动器分时多工 */
  15.     TSRT = 0x00; // 没有LED分时扫描
  16.    
  17.     /*
  18.     触摸按键配置寄存器
  19.     TSCFG1:
  20.     bit6~bit4: 开关频率配置率(频率越高充电时间越短) 开关电容工作频率 = fosc/(2*(TSCFG1[6:4]+1))
  21.     bit2~bit0: 配置触摸按键控制器内部的Cref的起始对地放电时间 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最小3
  22.     TSCFG2:
  23.     bit1~bit0: 配置触摸按键控制器内部的参考电压  0(1/4 AVcc)  1(1/2 AVcc)  2(5/8 AVcc)  3(3/4 AVcc)
  24.     */
  25.     TSCFG1 = 0x7F;
  26.     TSCFG2 = 0x00;
  27.     /*
  28.     触摸按键控制寄存器(TSCTRL)
  29.     bit7(TSGO): 正常工作模式下触摸按键控制器启动控制 0:停振扫描 1:正常模式下启动扫描
  30.     bit6(SINGLE):单次扫描模式控制(TSGO为1时此寄存器位写入无效,TSGO为0时才可写入) 0:重复扫描模式 1:单次扫描模式
  31.     bit5(TSWAIT):触摸按键控制器等待控制(TSGO为1时此寄存器位写入无效,TSGO为0时才可写入)0:触摸按键控制器自动重复扫描 1:触摸按键控制器等待TSIF状态为1后才重复扫描
  32.     bit4(TSWUCS):低功耗模式下触摸按键控制器时钟源选择(TSGO为1时此寄存器位写入无效,TSGO为0时
  33.     才可写入)
  34.     bit3(TSDCEN):触摸按键控制器内部16位数字比较器控制位(TSGO为1时此寄存器位写入无效,TSGO为0
  35.     时才可写入)
  36.     bit2(TSWUEN):触摸按键控制器低功耗唤醒使能位(TSGO为1时此寄存器位写入无效,TSGO为0时才可写
  37.     入)
  38.     bit1~bit0(TSSAMP):单一触摸通道重复扫描次 0:1次 1:2次 2:3次 3:4次
  39.     */   
  40.     TSCTRL = 0xA0 & 0x7F; // 配置其他项时,确保 TSGO 为 0
  41.     TSCTRL |= 0x80; // 其他项配置完成时,设置 TSGO 为 1
  42.    
  43.     IE2 |= (1 << 7); // 使能触摸中断
  44.     EA = 1;      // 开总中断
  45.     bsp_StcTouchkeyVarInit();
  46. }
复制代码





回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-10-7 20:07:53 | 显示全部楼层
其他的通道也接近65535了
检查TCAP的值是不是不对,或者按键电容值是不是不合理(触摸按键硬件结构)

点评

还有 触摸按键频率SCR[2:0] 放电时间DT[2:0] 触摸按键参考电压TSVR[1:0]  详情 回复 发表于 2024-10-7 20:10
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-10-7 20:10:20 | 显示全部楼层
Debu*** 发表于 2024-10-7 20:07
其他的通道也接近65535了
检查TCAP的值是不是不对,或者按键电容值是不是不合理(触摸按键硬件结构) ...

还有
触摸按键频率SCR[2:0]
放电时间DT[2:0]
触摸按键参考电压TSVR[1:0]
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-10-7 20:11:59 | 显示全部楼层
        TSCHEN1=0xFC;        //TK00~TK07
        TSCHEN2=0xFC;        //TK08~TK15
        TSRT=0x00;                //没有LED分时扫描
        TSCFG1=0x73;        //开关电容工作频率 = fosc/(2*(TSCFG1[6:4]+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;                //启用触摸中断

点评

按照这个参数修改一下试试  详情 回复 发表于 2024-10-7 20:16
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-10-7 20:13:31 | 显示全部楼层
应该是你TSCFG1、TSCFG2参数设置不合理导致的
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-10-7 20:16:29 | 显示全部楼层
Debu*** 发表于 2024-10-7 20:11
TSCHEN1=0xFC;        //TK00~TK07
        TSCHEN2=0xFC;        //TK08~TK15
        TSRT=0x00;                //没有LED分时扫描

按照这个参数修改一下试试
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:258
  • 最近打卡:2025-05-01 09:43:59

11

主题

18

回帖

941

积分

高级会员

积分
941
发表于 2024-10-7 21:26:57 | 显示全部楼层
Debu*** 发表于 2024-10-7 20:16
按照这个参数修改一下试试

感谢您的回复,实际测试修改参数后有作用但是不大;
查了原理图后发现 TCAP 引脚焊接的电容太大了
修改为10nF之后在调节软件上面的参数就比较有效了,
再次感谢


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-10-7 22:36:50 | 显示全部楼层
rog*** 发表于 2024-10-7 21:26
感谢您的回复,实际测试修改参数后有作用但是不大;
查了原理图后发现 TCAP 引脚焊接的电容太大了,
修改 ...

DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 11:17 , Processed in 0.125979 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表