1. TSC 工程完整目录与三层软件层级架构
工程分为五层文件夹:Application、Hardware、TouchDriver、StdPeriphDriver、CMSIS。 软件逻辑三层架构:应用层‑驱动层‑硬件层
- 应用层(Example/User):main.c、tsc_user.c,业务逻辑,调用 TSC 驱动对外 API;
- 驱动层:分为标准外设库 StdPeriphDriver 与 TSC_Device_Lib 触摸库;
- 硬件层:APM32F0xx 片上 TSC 外设寄存器,GPIO 硬件。
TouchDriver 触摸库内部再细分三大模块组:
- 处理组:
tsc_ecs.c、tsc_dxs.c、tsc_time.c、tsc_filter.c(环境优化、检测排除、定时、滤波) - 采集组:
tsc.c、tsc_acq.c、tsc_object.c(通道采集、块处理、对象管理) - 配置组:
tsc_touchkey.c、tsc_linrot.c(按键、线性旋转算法)
资料获取:AN1090_APM32_TSC_应用笔记
2. 驱动库模块分组
- Channel 通道:存储每个 GPIO 通道源配置、目的映射、采样参考值、Meas 测量值、Delta 差值;使用
TSC_Channel_Src_T、TSC_Channel_Dest_T、TSC_Channel_Data_T结构体;需要在 ROM 定义源 / 目的配置,RAM 存放动态测量数据。 - Block 采集块:Block 代表一组同步采集通道;通过
TSC_Block_T结构体配置;核心 API:TSC_Acq_ConfigBlock、TSC_Acq_StartPerConfigBlock、TSC_Acq_WaitBlockEOA、TSC_Acq_ReadBlockResult。 - Object 触摸对象 (Object):将若干通道组合为业务传感器,分为 TouchKey 单通道按键,LinRot 线性 / 旋转多通道传感器;结构体
TSC_Object_T管理对象集合;API:TSC_Obj_ConfigGroup、TSC_Obj_ProcessGroup。
3. 关键对象配置:Channel 通道、Block 采集块、Object 触摸对象
完整配置顺序:
- 在 ROM 定义
MyChannels_Src[]通道源配置,绑定 Group、IO 掩码; - 定义
MyChannels_Dest[]通道目的映射;RAM 分配MyChannels_Data[]存放实时测量数据; - 定义 Block 块集合
MyBlocks[],划分哪些通道属于同一个同步采集块; - 定义 Object 对象集合
MyObjects[],把通道组合为按键、线性滑条、旋转旋钮; - 调用 API 完成块、对象初始化;周期调用
TSC_Obj_ProcessGroup执行采集与状态处理。
4. 按键、线性 / 旋转触摸软件配置流程
- TouchKey 触摸按键 每个按键占用 1 个 Channel;结构体
TSC_TouchKey_T;APITSC_TouchKey_Config配置阈值;TSC_TouchKey_Process处理按键释放 / 按下状态机;宏定义TOUCH_TOTAL_TOUCHKEYS设置按键总数量。 - 线性 / 旋转 LinRot 触摸 最少 3 通道;支持 M1/M2/H/D 多种电极拓扑模式;
- 配置差值系数表
DeltaCoeff[],16 位定点格式,MSB 整数、LSB 小数;例 1.50 =0x010D;0.80 =0x00CD; - 在
tsc_conf.h宏启用对应电极拓扑(3CH_LIN_H、3CH_ROT_M 等); - API:
TSC_Linrot_Config、TSC_Linrot_Process、TSC_Linrot_CalcPos输出 0‑256 位置值。
5. 抗干扰机制 DTO / DXS / ECS 参数配置
- DTO 超时检测:宏
TOUCH_DTO配置最大触摸时长;驱动内部自动执行,超时自动重新校准通道。 - DXS 检测排除:宏
TOUCH_USE_DXS开启;必须在TSC_Obj_ProcessGroup()之后调用TSC_Dxs_FirstObj()。 - ECS 环境优化:宏配置
TSLPRM_ECS_K_SLOW、TSLPRM_ECS_K_FAST、TSLPRM_ECS_DELAY;定时(例每 100ms)调用TSC_Ecs_Process()做基线更新。 - 定时管理 Time:宏
TOUCH_TICK_FREQ设置系统滴答时基;为 ECS、DTO 提供时间基准。
6. 参考测试例程、EMC 测试参数、工程移植排错要点
文档 TouchPanel‑APM32F051 例程提供两套参数配置,做 EN61000‑4‑6 传导骚扰 CS 测试:
- 参数集 1:TouchKey 可达 10Vrms Class A,线性 / 旋转 6Vrms Class A;
- 参数集 2:TouchKey 可达 6Vrms Class A,线性 / 旋转 3Vrms Class A。
测试失效现象:特定频点采样数值跳变,产生无触摸误触发。
工程移植关键要点:
阅读全文
65