将电容触摸功能融入您的项目中,见证用户体验的转变。
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库包含用于配置设备和全面直观地读取触摸事件的函数。包含的示例应用程序演示了这些函数的使用,并可用作自定义设计的参考。
功能概述
开发板
Clicker 2 for Kinetis 是一款紧凑型入门开发板,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 ARM Cortex-M4F 微控制器,NXP 半导体公司的 MK64FN1M0VDC12,两个 mikroBUS™ 插槽用于 Click 板™连接,一个 USB 连接器,LED 指示灯,按钮,一个 JTAG 程序员连接器以及两个 26 针头用于与外部电子设备的接口。其紧凑的设计和清晰、易识别的丝网标记让您能够迅速构建具有独特功能和特性
的小工具。Clicker 2 for Kinetis 开发套件的每个部分 都包含了使同一板块运行最高效的必要组件。除了可以选择 Clicker 2 for Kinetis 的编程方式,使用 USB HID mikroBootloader 或外部 mikroProg 连接器进行 Kinetis 编程外,Clicker 2 板还包括一个干净且调节过的开发套件电源供应模块。它提供了两种供电方式;通过 USB Micro-B 电缆,其中板载电压调节器为板上每个组件提供适当的电压水平,或使用锂聚合物 电池通过板载电池连接器供电。所有 mikroBUS™ 本
身支持的通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、重置按钮和几个用户可配置的按钮及 LED 指示灯。Clicker 2 for Kinetis 是 Mikroe 生态系统的一个组成部分,允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。
微控制器概述
MCU卡片 / MCU
建筑
ARM Cortex-M4
MCU 内存 (KB)
1024
硅供应商
NXP
引脚数
121
RAM (字节)
262144
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图
一步一步来
项目组装
实时跟踪您的结果
应用程序输出
此款Click板可通过两种方式进行接口连接和监控:
Application Output
- 在调试模式下,使用“Application Output”窗口进行实时数据监控。按照本教程正确设置它。
UART Terminal
- 通过UART终端使用USB to UART converter监控数据有关详细说明,请查看本教程。
软件支持
库描述
这个库包含了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 );
}
}
}
void main ( void )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END