一、任务介绍
本项目基于Microchip PIC32CM5164LS00048微控制器,实现EV41C56A开发板上电容触摸按键对板载LED的控制功能。具体要求如下:
功能需求:单次触摸按键 → 点亮板载LED;再次触摸 → 关闭LED
触摸通道:正确初始化触摸通道,确保触摸检测可靠
LED控制逻辑:逻辑清晰,实现按键与LED的联动,避免误触发
项目特点:采用触摸技术替代传统机械按键,提升产品交互体验和可靠性
电容触摸按键技术广泛应用于智能家居、消费电子、工业控制等领域,相比传统机械按键具有以下优势:无机械磨损、防水防尘、外观美观、寿命长。本项目作为触摸技术入门实践,帮助开发者掌握QTouch触摸库的使用方法以及触摸检测的基本原理。
二、硬件介绍
本项目采用的PIC32CM5164LS00048是Microchip推出的基于ARM Cortex-M23内核的32位微控制器,属于PIC32C MLS系列。该芯片集成丰富外设资源,其中最关键的是PTC(Peripheral Touch Controller)外设,这是Microchip专为电容触摸检测设计的模拟前端模块,无需外部触摸控制器芯片即可实现可靠的触摸按键应用。芯片主要特性包括:最高48MHz主频、512KB Flash、64KB SRAM、1.8V至3.6V供电范围。PTC外设内部集成了Charge Pump、Comparator、Counter及数字滤波器等电路,负责完成电容到数字信号的完整转换过程。
EV41C56A是Microchip官方推出的PIC32CM5164开发评估板,板上集成了多个标准化外设资源,方便开发者进行功能验证和原型开发。本项目使用的板载资源包括:
触摸按键(Touch Button):采用PCB式的电容触摸电极设计
LED指示灯:板载用户LED,连接到GPIO端口
PIC32CM系列MCU的PTC外设采用自电容检测原理。每个触摸电极与MCU内部电路形成一个基准电容,当手指接近或触碰电极时,人体作为导体与电极之间形成耦合电容,典型值为1至10皮法,导致该电极的自电容增加。PTC外设通过测量电容的变化量来判断触摸动作:先将电容充电至参考电压,再测量充放电所需时间的变化,当手指触碰时充放电时间延长,超过预设阈值即判定为触摸事件。
三、方案框图和设计思路
系统总体架构

触摸通道使用PTC的Y16通道,配置为自电容模式,这是单按键应用的最佳选择。相比互电容模式,自电容配置简单、响应速度快、所需引脚少。自电容模式无需X-Y矩阵配合,每个按键只需一个感应引脚,非常适合本项目的单一触摸按键场景。触摸检测的关键参数包括:触摸阈值设为20,表示信号超过基准值20个单位时触发检测;迟滞设为25%,用于防止因信号在阈值附近波动导致的抖动;检测去抖次数设为4,表示连续4次测量确认触摸才判定为有效,这一机制能有效过滤偶然的噪声干扰;释放去抖次数设为5,表示连续5次测量确认无触摸才判定为真正释放,避免手指轻微抖动造成反复触发。
四、软件流程图和重要代码介绍
4.1 整体软件流程图

4.2 主循环代码分析
/* 初始化所有模块 */
SYS_Initialize ( NULL );
touch_init(); // 初始化触摸库
/* 配置LED引脚PA15为输出 */
PORT_GroupOutputEnable(LED_PIN_PORT, LED_PIN_MASK);
PORT_GroupClear(LED_PIN_PORT, LED_PIN_MASK); // LED初始关闭
while ( true )
{
touch_process(); // 执行触摸测量
if (measurement_done_touch == 1u) // 测量完成?
{
measurement_done_touch = 0u;
/* 获取当前触摸状态,检测是否被触摸 */
uint8_t current_touch = get_sensor_state(0) & KEY_TOUCHED_MASK;
/* 边缘检测:从无触摸变为有触摸 */
if ((current_touch != 0u) && (last_touch_state == 0u))
{
led_state = !led_state; // 翻转LED状态
if (led_state) {
PORT_GroupSet(LED_PIN_PORT, LED_PIN_MASK); // LED ON
} else {
PORT_GroupClear(LED_PIN_PORT, LED_PIN_MASK); // LED OFF
}
}
last_touch_state = current_touch; // 更新历史状态
}
}
return ( EXIT_FAILURE );
五、实验效果
操作效果:

六、心得体会
电容触摸按键的设计并非单纯的软件配置问题。触摸电极的形状、尺寸、覆盖层材质和厚度都会直接影响触摸灵敏度。在本项目中,触摸电极连接到PTC的Y16通道,配置为自电容模式。相比互电容模式,自电容更适合单按键应用,配置简单且响应速度快。触摸检测涉及模拟电路(充放电、比较器)和数字信号处理(滤波、去抖)的配合。QTouch库已经封装了这些底层细节,开发者只需关注上层的参数配置。但理解其工作原理对于调试触摸不灵敏或易误触发的问题至关重要。本项目验证了基于PIC32CM系列MCU实现触摸按键控制的基本流程,掌握QTouch库的使用方法,不仅为开发电容触摸应用奠定了基础,也加深了对嵌入式系统中模拟与数字信号处理协同工作的理解。