前言
经过无数次的失败尝试,终于把程序调出来了,我们在之前实际上接触过Microchip的开发,也接触过touch库的开发,不过还是遇到了一些问题,这个安全机制还是挺不错的,就是还不习惯。
电容式触摸检测技术凭借其无需机械部件、密封性好、外观美观等优势,已广泛应用于各类消费电子和工业控制产品中。传统的机械开关需要通过物理按压产生触点接触信号,容易受到磨损、氧化和污染的影响,长期使用可靠性会显著下降。相比之下,电容式触摸检测通过测量人体靠近时引起的微小电容变化来感知触摸事件,整个感知过程完全不涉及机械运动,因此具有极长的使用寿命和良好的密封性能。
项目介绍
本次任务使用的是PIC32CM LS00 Curiosity Nano+ Touch Evaluation Kit开发板,板载的单片机是PIC32CM5164LS00048,这个一款Microchip旗下的32位单片机,任务的最终目标是通过触控按键实现LED状态的切换,这款单片机板载资源支持触摸采集,咱们可以直接进行功能使用。
硬件平台介绍
本次的功能实现使用的是基于PIC32CM5164LS00048的PIC32CM LS00 Curiosity Nano+ Touch Evaluation Kit开发板,是一款专为评估 PIC32CM5164LS00048 微控制器而设计的硬件平台。该套件基于安全且超低功耗的 ARM® Cortex®-M23 内核,集成了丰富的安全功能和触摸控制能力,这款评估套件将安全启动、TrustZone® 技术、加密加速器与增强型触摸控制完美融合,是开发安全触摸应用的理想选择。
上图可以看出这个开发板包括了USB接口,调试器、电源状态指示灯,用户LED灯,按键,触摸按键,单片机,晶振等硬件资源。
该芯片的突出优势在于其内置的PTC外设。传统设计中若需要实现电容式触摸检测,往往需要外接专用的触摸控制芯片,这不仅增加了BOM成本,还占用了宝贵的PCB布板空间。PIC32CM5164LS00048将PTC完全集成于芯片内部,通过QTouch库提供的标准化软件接口,应用工程师可以直接在芯片内部完成从原始电容采样到触摸状态判定的全部信号处理流程。
软件平台介绍
MPLAB X IDE,作为Microchip Technology公司倾力打造的集成开发环境(IDE),专为嵌入式系统设计领域量身定做,展现了其在促进高效开发和创新方面的强大实力。这款软件不仅跨平台兼容,能够在包括Windows、macOS以及Linux在内的多种操作系统上流畅运行,还集成了源代码级调试功能,使得开发者能够深入代码内部,精准定位并解决问题,极大地提升了调试效率。其界面设计高度可配置,无论是初学者还是资深开发者,都能根据自己的工作习惯和项目需求,调整界面布局和功能模块,实现个性化定制,从而提升工作效率。MPLAB X IDE还支持从仿真阶段到硬件测试的全流程开发,确保了开发过程的连贯性和结果的可靠性。MPLAB X IDE对多种单片机(MCU)的支持,涵盖了从经典的8位单片机到高性能的32位MCU,满足了不同应用场景下的性能需求。这种广泛的兼容性,使得开发者能够在一个统一的开发环境中,轻松应对从简单控制到复杂数据处理的各种挑战。
软件设计
软件流程图
软件功能设计
1、初始化
我们用到的模块主要包括了touch库(RTC模块和PTC模块),GPIO模块,所以我们需要进行这些模块的初始化操作,我们已经通过图形化配置了,代码如下:
SYS_Initialize(NULL);
LED_Init();
touch_init();
2、判断触摸按键功能
这个是在while中进行循环检测的,通过判断到触摸按键后执行相关操作,代码如下:
touch_process();
if (measurement_done_touch == 1u) {
measurement_done_touch = 0u;
uint8_t key_status = get_sensor_state(TOUCH_SENSOR_KEY_0);
bool touch_curr = (bool)(key_status & KEY_TOUCHED_MASK);
if (touch_curr && !g_touch_prev) {
g_touch_lock = true;
LED_Toggle();
g_evt_cnt++;
}
g_touch_prev = touch_curr;
g_tick_cnt++;
}
主循环中每次迭代都会调用touch_process()函数。该函数首先检查time_to_measure_touch_var标志位——若为1则表示本轮测量的触发条件已满足,函数调用qtm_ptc_start_measurement_seq()启动PTC序列测量。PTC外设完成一次完整的充电-测量周期后,会产生一个内部回调,通过qtm_measure_complete_callback()设置touch_postprocess_request标志。这一过程完全在PTC硬件和QTouch库之间完成,应用层代码仅需设置触发条件并等待完成标志。
效果展示

通过动态展示我们可以清楚的看到,每一次触摸都能改变LED的状态,并且没有误触的情况。
遇到的难题
在本次的设计过程中是在有一定基础的情况下进行,但是在调试阶段还是出现了不晓得问题,库文件和百年祭文件不在一个地方,导致编译对象出现了错误,安全机制不应该影响调试体验,希望可以优化这里的操作。
心得体会
本项目成功实现了一个基于PIC32CM5164LS00048微控制器的触摸控制LED系统,在TrustZone安全架构下完成了稳定可靠的触摸检测与LED驱动功能。系统以20ms为测量周期,通过上升沿检测算法在手指触摸瞬间精确触发LED状态反转,响应延迟控制在20~40ms范围内,满足人机交互的舒适性要求。