将电容触摸功能融入您的项目中,见证用户体验的转变。
A
A
硬件概览
它是如何工作的?
TouchKey 3 Click使用Microchip的AT42QT1110,这是一款11键的QTouch®触摸传感器集成电路。它可以根据应用的不同以几种不同的方式进行配置:可以用于支持更多或更少的传感器通道,支持直接输出以触发特定通道上的中断,可以使用其#CHANGE输出引脚在传感器之一检测到触摸事件时触发一个全局中断,或者通过使用SYNC输入信号在特定时间间隔内触发感应脉冲来改善功耗。TouchKey 3 Click使用七个电容感应通道,其中#CHANGE引脚被路由到mikroBUS™的INT引脚,这样如果任何传感器检测到触摸事件,就可以触发中断。这可以在按下按键时触发SPI读取周期,而不需要不断轮询AT42QT1110的寄存器。然而,#CHANGE引脚的行为是可编程的,关于其功能的更多信息可以在AT42QT1110的数据手册中找到。SYNC引脚被拉高并且未被使用,允许单击板在Free Run模式下运行,这可以实现最快的按键按下检测时间。AT42QT1110的#RESET引脚被路由到mikroBUS™的RST引脚,并且用于重置设备并重新初始化其工作参数-可以使用存储在EEPROM中的值或者在EEPROM中不包含任何保存的值的情况下加载到RAM中的默认值。在RESET事件发生后的160ms内SPI将不可用。该引脚应拉到高逻辑电平以重置设
备。AT42QT1110传感器具有用于配置设备工作参数的内部寄存器。设备模式寄存器是重要的配置寄存器之一,用于控制单击板的整体操作。设备模式寄存器的KEY_AC位用于设置检测触发模式:通过SYNC引脚为0或通过内部定时器为1(应设置为1,因为SYNC引脚被拉到高逻辑电平);MODE位:用于7个或11个通道配置的0或1(应设置为0以进行7个通道操作);信号位:串行为0,并行为1;SYNC位:用于上升沿的0,零电平检测的1(由于KEY_AC设置为1,因此忽略);重复时间位字段:这四个位设置扫描间隔之间的重复时间。如果将重复时间设置为0,则新的扫描周期将在上一个周期之后立即执行,从而实现最快的触摸检测。该位字段的值乘以16ms即可得到最终的重复时间。TouchKey 3 click还具有信号处理功能,以提供更好的按钮检测。相邻按键抑制(AKS®)技术可以在每个通道上进行配置。启用了AKS®的通道组将被处理,以便仅保留检测到的按键,而其他传感器将被忽略。当当前活动按键释放时,启用了AKS®的其他传感器将仅被激活。未选择AKS®的传感器通道将保留同时感应触摸的能力。这项技术可以提供更好的按键准确性,并减少需要按键按下检测精度的应用中的虚假检测。检测集成(DI)是另一种用于
更好地感应按键按下的技术。当按键首次被按下时,将启动一个计数器。如果计数器超时且传感器通道仍然检测到按键按下,则该按键按下将被声明为真。否则将被忽略为假。这充当了一种去抖动,并防止了虚假检测。DI技术是按传感器实现的。AT42QT1110 IC具有EEPROM存储器,可存储当前RAM设置。所有寄存器都保存在RAM中,并且在上电复位事件(POR)后,EEPROM存储器中存储的值将自动复制到寄存器中。否则,寄存器将加载默认值。所有这些功能都可以通过SPI总线进行访问和配置。SPI通信可以是快速SPI模式或完整SPI模式。在快速SPI模式下工作时,设备将发送包含基本数据的7字节序列,例如通道的检测和错误状态。在此模式下,不需要主机MCU命令,并且此序列将连续从AT42QT1110 IC中时钟输出。通过在通信选项设置寄存器中设置SPI_EN位可以启用快速SPI模式。所有SPI引脚和片选引脚均被路由到mikroBUS™上的适当引脚。标记为VCC SEL的板载SMD跳线选择电源供应和逻辑电压电平。此点击板可与3.3V和5V MCU一起工作。提供的TouchKey 3 Click库包含用于配置设备和全面直观地读取触摸事件的函数。包含的示例应用程序演示了这些函数的使用,并可用作自定义设计的参考。
功能概述
开发板
Nucleo 32开发板搭载STM32F031K6 MCU,提供了一种经济且灵活的平台,适用于使用32引脚封装的STM32微控制器进行实验。该开发板具有Arduino™ Nano连接性,便于通过专用扩展板进行功能扩展,并且支持mbed,使其能够无缝集成在线资源。板载集成
ST-LINK/V2-1调试器/编程器,支持通过USB重新枚举,提供三种接口:虚拟串口(Virtual Com port)、大容量存储和调试端口。该开发板的电源供应灵活,可通过USB VBUS或外部电源供电。此外,还配备了三个LED指示灯(LD1用于USB通信,LD2用于电源
指示,LD3为用户可控LED)和一个复位按钮。STM32 Nucleo-32开发板支持多种集成开发环境(IDEs),如IAR™、Keil®和基于GCC的IDE(如AC6 SW4STM32),使其成为开发人员的多功能工具。

微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M0
MCU 内存 (KB)
32
硅供应商
STMicroelectronics
引脚数
32
RAM (字节)
4096
你完善了我!
配件
Click Shield for Nucleo-32是扩展您的开发板功能的理想选择,专为STM32 Nucleo-32引脚布局设计。Click Shield for Nucleo-32提供了两个mikroBUS™插座,可以添加来自我们不断增长的Click板™系列中的任何功能。从传感器和WiFi收发器到电机控制和音频放大器,我们应有尽有。Click Shield for Nucleo-32与STM32 Nucleo-32开发板兼容,为用户提供了一种经济且灵活的方式,使用任何STM32微控制器快速创建原型,并尝试各种性能、功耗和功能的组合。STM32 Nucleo-32开发板无需任何独立的探针,因为它集成了ST-LINK/V2-1调试器/编程器,并随附STM32全面的软件HAL库和各种打包的软件示例。这个开发平台为用户提供了一种简便且通用的方式,将STM32 Nucleo-32兼容开发板与他们喜欢的Click板™结合,应用于即将开展的项目中。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
这个库包含了TouchKey 3 Click驱动程序的API。
关键功能:
touchkey3_send_command- 执行可能的命令之一。touchkey3_send_request- 发送请求命令,并返回响应。touchkey3_get_data- 从所选配置寄存器读取数据。
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief TouchKey3 Click example
*
* # Description
* This Click uses 7 capacitive sensing channels, with the #CHANGE pin routed to the INT pin of the mikroBUS™,
* so that an interrupt can be triggered if any of the sensors detect a touch event.
* This can be used to trigger an SPI read cycle only when the key is actually pressed,
* avoiding the need for constant polling of the sensor registers.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes Click driver and performs a soft reset of the Click.
*
* ## Application Task
* Reads the status of the keys, and outputs a message if a key is touched.
*
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "touchkey3.h"
// ------------------------------------------------------------------ VARIABLES
static touchkey3_t touchkey3;
static log_t logger;
static uint8_t return_data[ 2 ];
static uint8_t counter;
static uint8_t temp;
static uint8_t old_state;
static const uint16_t timeout_state = 1000;
static uint16_t timeout_cnt;
// ------------------------------------------------------ APPLICATION FUNCTIONS
uint8_t calculationt_index ( uint8_t data_in )
{
uint8_t counter = 2;
if ( data_in <= 2 )
{
return data_in;
}
while ( data_in > 2 )
{
data_in /= 2;
counter++;
}
return counter;
}
void application_init ( void )
{
log_cfg_t log_cfg;
touchkey3_cfg_t cfg;
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, "---- Application Init ----" );
// Click initialization.
touchkey3_cfg_setup( &cfg );
TOUCHKEY3_MAP_MIKROBUS( cfg, MIKROBUS_1 );
touchkey3_init( &touchkey3, &cfg );
touchkey3_reset( &touchkey3 );
touchkey3_send_command( &touchkey3, TOUCHKEY3_CMD_RESET );
timeout_cnt = timeout_state;
Delay_ms ( 300 );
}
void application_task ( void )
{
touchkey3_send_request( &touchkey3, TOUCHKEY3_REQ_ALL_KEYS, &return_data );
for ( counter = 0; counter < 7; counter++ )
{
if ( ( return_data[ 1 ] >> counter ) & 0x01 )
{
log_printf( &logger, "Touch detected on key %d\r\n", ( uint16_t )(counter+1) );
Delay_ms ( 1000 );
}
}
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:电容

































