2D Surface (Two-Finger Touch) CS/2T Module
The 2D Surface (Two-Finger Touch) CS/2T module in Microchip’s touch modular library enables advanced capacitive touch detection and position tracking for up to two simultaneous fingers on a 2D surface. This module is ideal for applications that require multi-touch gestures such as pinch, zoom, and dual-finger swipes.
Surface CS/2T Typedefs and Data Structures
scr_resolution_t
RESOL_2_BIT = 2,
RESOL_3_BIT,
RESOL_4_BIT,
RESOL_5_BIT,
RESOL_6_BIT,
RESOL_7_BIT,
RESOL_8_BIT,
RESOL_9_BIT,
RESOL_10_BIT,
RESOL_11_BIT,
RESOL_12_BIT
} scr_resolution_t;
Description: Scroller resolution setting
scr_deadband_t
DB_NONE,
DB_1_PERCENT,
DB_2_PERCENT,
DB_3_PERCENT,
DB_4_PERCENT,
DB_5_PERCENT,
DB_6_PERCENT,
DB_7_PERCENT,
DB_8_PERCENT,
DB_9_PERCENT,
DB_10_PERCENT,
DB_11_PERCENT,
DB_12_PERCENT,
DB_13_PERCENT,
DB_14_PERCENT,
DB_15_PERCENT
} scr_deadband_t;
Description: Scroller deadband percentage setting
qtm_surface_cs_config_t
Description: Configuration parameters for the touch surface
More Info: The following table describes the individual members of the structure:
| Parameter | Size | Range/Options | Usage |
|---|---|---|---|
| start_key_h | 2 bytes | 0 to 65534 | Start key of horizontal axis |
| number_of_keys_h | 1 byte | 0 to 255 | The number of keys forming horizontal axis |
| start_key_v | 2 bytes | 0 to 65534 | Start key of vertical axis |
| number_of_keys_v | 1 byte | 0 to 255 | The number of keys forming vertical axis |
| resol_deadband | 1 byte | Bits 7:4 = Resolution 2 to 12 bits | Full-scale position resolution reported for the axis |
| position_hysteresis | 1 byte | 0 to 255 | The minimum travel distance to be reported after contact or direction change Applies to Horizontal and Vertical |
| position_filter | 1 byte | Bits7:5: — | — |
| Bit 4: Median Filter | Median filter enable | ||
| Bit3 : — | — | ||
| Bit 2: — | — | ||
| Bits 1:0: IIR Config | IIR Config0 = None1 = 25%2 = 50%3 = 75%. | ||
| contact_min_threshold | 2 bytes | 0 to 65535 | The minimum contact size measurement for persistent contact tracking Contact size is the sum of neighboring keys’ touch deltas forming the touch contact |
| *qtm_touch_key_data | Pointer2/4 bytes | qtm_touch_key_data_t | Pointer to touch key data for the underlying set of touch keys |
qtm_surface_cs2t_data_t
{
uint8_t qt_surface_cs2t_status;
}qtm_surface_cs2t_data_t;
Description: Run-time data for the Surface CS/2T module
More Info:
| Parameter | Size | Range/Options | Usage. |
|---|---|---|---|
| qt_surface_cs2t_status | 1 byte | Bit field Bit 7: Reburst required | Reburst Required = 1 indicates that further measurements are required to resolve/update contact status |
| Bit 6: — | — | ||
| Bit 5: POS_MERGED_V | Two contacts present, vertical positions too close to separate | ||
| Bit 4: POS_MERGED_H | Two contacts present, horizontal positions too close to separate | ||
| Bit 3 — | — | ||
| Bit 2: — | — | ||
| Bit 1: — | — | ||
| Bit 0: Touch detection | Touch Detection = 1 indicates that a touch contact is present on the surface |
qtm_surface_contact_data_t
uint8_t qt_surface_status;
uint16_t h_position_abs;
uint16_t h_position;
uint16_t v_position_abs;
uint16_t v_position;
uint16_t contact_size;
} qtm_surface_contact_data_t;
Description: Run-time data for touch surface
More Info: The follow describes the individual members of the structure:
| Parameter | Size | Range/Options | Usage |
|---|---|---|---|
| qt_surface_status | 1 byte | Bit field Bit 7: Reburst required | Reburst Required = 1 indicates that further measurements are required to resolve/update contact status |
| Bit 6: — | — | ||
| Bit 5: POS_V_DEC | Vertical position decreased | ||
| Bit 4: POS_V_INC | Vertical position increased | ||
| Bit 3: POS_H_DEC | Horizontal position decreased | ||
| Bit 2: POS_H_INC | Horizontal position increased | ||
| Bit 1: POS_CHANGE | Change in reported position | ||
| Bit 0: Touch detection | Touch Detection = 1 indicates that a touch contact is present on the surface | ||
| h_position_abs | 2 bytes | 0 to 4095 | Apparent horizontal position |
| h_position | 2 bytes | 0 to 4095 | Motion filtered horizontal position |
| v_position_abs | 2 bytes | 0 to 4095 | Apparent vertical position |
| v_position | 2 bytes | 0 to 4095 | Motion filtered vertical position |
| contact_size | 2 bytes | — | Sum of touch deltas at contact location |
qtm_surface_cs2t_control_t
qtm_surface_cs2t_data_t *qtm_surface_cs2t_data;
qtm_surface_contact_data_t *qtm_surface_contact_data;
qtm_surface_cs_config_t *qtm_surface_cs_config;
} qtm_surface_cs2t_control_t;
Description: Top-level container for surface configuration. Contains pointers to data and configuration structures
Surface CS/2T APIs
qtm_init_surface_cs2t
Description: Initialize a Surface CS2T Module
Parameter:
| Type | Description. |
|---|---|
| qtm_surface_cs2t_control_t * | Pointer to Surface Module Control Structure |
Return:
| Type | Description. |
|---|---|
| touch_ret_t | Touch Library Return Status |
qtm_surface_cs_process
Description: Performs Surface Processing. Calculates X and Y position for the surface
Parameter:
| Type | Description. |
|---|---|
| qtm_surface_cs2t_control_t * | Pointer to Surface Module Control Structure |
Return:
| Type | Description. |
|---|---|
| touch_ret_t | Touch Library Return Status |
qtm_get_surface_cs2t_module_id
Description: Returns the module ID
Parameter: void
Return:
| Type | Description. |
|---|---|
| uint16_t | Module ID |
qtm_get_surface_cs2t_module_ver
Description: Returns the module firmware version
Parameter: void
Return:
| Type | Description. |
|---|---|
| uint8_t | Module Version |