1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2018-10-03 xuzhuoyi first implementation. 9 */ 10 11 #ifndef __DRV_TOUCH_H__ 12 #define __DRV_TOUCH_H__ 13 14 #include <stdint.h> 15 16 /* Register addresses */ 17 #define STMPE811_CHIP_ID 0x00 18 #define STMPE811_ID_VER 0x02 19 #define STMPE811_SYS_CTRL1 0x03 20 #define STMPE811_SYS_CTRL2 0x04 21 #define STMPE811_SPI_CFG 0x08 22 #define STMPE811_INT_CTRL 0x09 23 #define STMPE811_INT_EN 0x0A 24 #define STMPE811_INT_STA 0x0B 25 #define STMPE811_GPIO_EN 0x0C 26 #define STMPE811_GPIO_INT_STA 0x0D 27 #define STMPE811_ADC_INT_EN 0x0E 28 #define STMPE811_ADC_INT_STA 0x0F 29 #define STMPE811_GPIO_SET_PIN 0x10 30 #define STMPE811_GPIO_CLR_PIN 0x11 31 #define STMPE811_GPIO_MP_STA 0x12 32 #define STMPE811_GPIO_DIR 0x13 33 #define STMPE811_GPIO_ED 0x14 34 #define STMPE811_GPIO_RE 0x15 35 #define STMPE811_GPIO_FE 0x16 36 #define STMPE811_GPIO_AF 0x17 37 #define STMPE811_ADC_CTRL1 0x20 38 #define STMPE811_ADC_CTRL2 0x21 39 #define STMPE811_ADC_CAPT 0x22 40 #define STMPE811_ADC_DATA_CH0 0x30 41 #define STMPE811_ADC_DATA_CH1 0x32 42 #define STMPE811_ADC_DATA_CH2 0x34 43 #define STMPE811_ADC_DATA_CH3 0x36 44 #define STMPE811_ADC_DATA_CH4 0x38 45 #define STMPE811_ADC_DATA_CH5 0x3A 46 #define STMPE811_ADC_DATA_CH6 0x3C 47 #define STMPE811_ADC_DATA_CH7 0x3E 48 #define STMPE811_TSC_CTRL 0x40 49 #define STMPE811_TSC_CFG 0x41 50 #define STMPE811_WDW_TR_X 0x42 51 #define STMPE811_WDW_TR_Y 0x44 52 #define STMPE811_WDW_BL_X 0x46 53 #define STMPE811_WDW_BL_Y 0x48 54 #define STMPE811_FIFO_TH 0x4A 55 #define STMPE811_FIFO_STA 0x4B 56 #define STMPE811_FIFO_SIZE 0x4C 57 #define STMPE811_TSC_DATA_X 0x4D 58 #define STMPE811_TSC_DATA_Y 0x4F 59 #define STMPE811_TSC_DATA_Z 0x51 60 #define STMPE811_TSC_FRACTION_Z 0x56 61 #define STMPE811_TSC_DATA_XYZ 0x57 62 #define STMPE811_TSC_DATA 0xD7 63 #define STMPE811_TSC_I_DRIVE 0x58 64 #define STMPE811_TSC_SHIELD 0x59 65 #define STMPE811_TEMP_CTRL 0x60 66 #define STMPE811_TEMP_DATA 0x61 67 #define STMPE811_TEMP_TH 0x62 68 69 /* Touch state */ 70 struct touch_state { 71 int16_t x; ///< Position X 72 int16_t y; ///< Position Y 73 uint8_t pressed; ///< Pressed flag 74 uint8_t padding; 75 }; 76 77 int32_t touch_get_state(struct touch_state *state); 78 79 #endif /* __DRV_TOUCH_H__ */ 80