本帖最后由 Anrenly 于 2023-4-8 21:07 编辑
#申请原创# 看到新定义可以免费申请开发板,毫不犹豫的申请了一个,主要是因为开发板提供了触摸按键和触摸滑条功能,触摸的应用越来越多,我对触摸一直都不太清楚,好奇到底是怎么做的? TBK-RD8T3x开发板使用的是新定义的8位MCU RD8T37P48,128KFlash, 48pin ,MCU的资源相当丰富,可以查看规格书或者其它帖的介绍。 我主要是看触摸的相关信息,资料包含了原理图,PCB,DEMO例程。
第一个问题: 触摸工程到底是怎么做的,如何实现的? 打开工程,main函数里相当简洁,SC_Init()初始化;TouchKeyInit()触摸的初始化函数,这个函数没有开放是通过LIB库的方式提供的;然后在while里一直调用 Sys_Scan()触摸按键扫描函数。
继续看Sys_Scan函数: 1)(SOCAPI_TouchKeyStatus & 0x80)首先判断触摸键扫描一轮标志,Bit7为1时 表示当前一轮扫描按键完成;是否调用 TouchKeyScan()一定要根据此标志位置起后 2)(SOCAPI_TouchKeyStatus &= 0x7f)清除触摸键标志位,手工清除 3)exKeyValueFlag = TouchKeyScan() 分析按键数据, 并返回结果出来 4)应用层对获取的键值进行处理 5)最后调用TouchKeyRestart()启动下一轮转换触摸扫描
查看《新定义RD8系列TouchKey MCU 应用指南 V1.0.pdf》, 对库文件的调用流程有详细的介绍,本Demo中的使用的是RD8T3X_HighSensitive_Lib_T1Slide_L_V2.1.0.LIB 弹簧库文件调用流程(简称 T1 库) ① 将 TK 对应的 IO 设置为强推挽输出高。 ② 主程序调用接口函数“TouchKeyInit()”用于配置触控按键通道的参数,并初始化 Baseline 基线; ③ 主程序通过查看全局变量 SOCAPI_ToucKeyStatus&0x80 来判定一轮触控按键扫描是否完成; ④ 主程序调用接口函数“TouchKeyScan()”用于读取触控按键值; ⑤ 主程序调用“TouchKeyRestart()”启动下一轮扫描。
到这里算是大致看懂了弹簧触摸的实现过程,厂家提供了LIB, 看起来还好,不是很难。 遗留任务是 滑条触摸没看懂,以后再看。
第二个问题: exKeyValueFlag = TouchKeyScan() 分析按键数据,并返回结果出来, 返回的到底是什么? 回答: 查看《新定义RD8系列TouchKey MCU 应用指南 V1.0.pdf》,TouchKeyScan(void)函数返回值: 返回值对应 bit 为 1 即该通道有按键,0 为无按键。 若使能双键,且有两键触发,则会有两个 bit 位置起。
举例:switch(exKeyValueFlag) { case 0x00400000:exKeyValue = 1;break; //表示TK22有按键 case 0x00800000:exKeyValue = 2;break; //表示TK23有按键 case 0x01000000:exKeyValue = 3;break; //表示TK24有按键 case 0x02000000:exKeyValue = 4;break; // TK25 case 0x04000000:exKeyValue = 5;break; //TK26 case 0x08000000:exKeyValue = 6;break; //TK27 default:exKeyValue = 0xff;break; }
第三个问题:工程里,触摸的驱动路径是Drivers 目录下一共4个文件,分别是什么意思? Drivers目录下触控库包括以下几个文件: TKDriver.h(或者为SensorMethod.h): 该文件是触控库对外的接口函数声明。用户需要在主程序引用该头文件。 RD8TXXX_X_X_Vx.x.x.LIB:该文件是触控库算法部分,用户需要将该文件加入工程进行编译 S_TOUCHKEYCFG.H:该文件是触控相关参数的配置文件。(用户通过魔盒软件调试后生成) TKDriver.C (或者为S_TouchKeyCFG.C):该文件包含触控参数头文件与触控库交互的相关接口,用户需要将文件加入工程编译。
新的问题:S_TOUCHKEYCFG.H这个文件是通过魔盒软件调试触摸后的相关参数配置文件,那如何在魔盒里调试触摸获得触摸参数?下次再写
|