单片机-STM32部分:9-1、触控检测芯片
飞书文档https://x509p6c8to.feishu.cn/wiki/ILBsw4EaQiWaUukWrxEcO4XZnXc
传统物理按键
| |
原理
玻璃盖板下通过一个触摸PAD连接到触摸芯片中,触摸PAD可以用PCB铜箔、金属片、平顶圆柱弹簧、导电棉、导电油墨、导电橡胶、导电玻璃的ITO层等。
当有人体手指靠近触摸按键时,人体手指与大地构成的感应电容并联焊盘与大地构成的感应电容,会使总感应电容值增加。
电容式触摸按键IC在检测到某个按键的感应电容值发生改变后,将输出某个按键被按下的确定信号。
PT2041A 是一款单通道触摸检测芯片。该芯片内建稳压电路,提供稳定电压给触摸感应电路使用, 同时内部集成高效完善的触摸检测算法,使得芯片具有稳定的触摸检测效果。该芯片专为取代传统 按键而设计,具有宽工作电压与低功耗的特性,可广泛地满足不同消费类应用的需求
所以,对于STM32来说,我们只需要关注QC的IO有没有电平变换,即可判断有没有手指按下。
所以这部分的代码与按键部分是完全一样的,我们可以参考7、GPIO输入 按键编写。
首先,设置PC0为输入模式,修改标签名为PAD_KEY
同时添加LED1作为测试效果展示
然后生成工程。
添加测试代码
while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(HAL_GPIO_ReadPin(PAD_KEY_GPIO_Port,PAD_KEY_Pin) == 0) //判断按键KEY是否被按下{HAL_Delay(10);//延时10ms消除按键抖动if(HAL_GPIO_ReadPin(PAD_KEY_GPIO_Port,PAD_KEY_Pin) == 0){//再次判断KEY是否依然被按下HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); //对LED引脚进行取反操作while(HAL_GPIO_ReadPin(PAD_KEY_GPIO_Port,PAD_KEY_Pin) == 0); //等待按键抬起}}}/* USER CODE END 3 */
参考工程
参考飞书文档