/** ****************************************************************************** * @file ft6x06_reg.h * @author MCD Application Team * @brief Header of ft6x06_reg.c * ****************************************************************************** * @attention * *

© Copyright (c) 2019 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under BSD 3-Clause license, * the "License"; You may not use this file except in compliance with the * License. You may obtain a copy of the License at: * opensource.org/licenses/BSD-3-Clause * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef FT6X06_REG_H #define FT6X06_REG_H #include #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ /* Macros --------------------------------------------------------------------*/ /** @addtogroup BSP * @{ */ /** @addtogroup Component * @{ */ /** @addtogroup FT6X06 * @{ */ /* Exported types ------------------------------------------------------------*/ /** @defgroup FT6X06_Exported_Types FT6X06 Exported Types * @{ */ /************** Generic Function *******************/ typedef int32_t (*FT6X06_Write_Func)(void *, uint8_t, uint8_t*, uint16_t); typedef int32_t (*FT6X06_Read_Func) (void *, uint8_t, uint8_t*, uint16_t); /** * @} */ /** @defgroup FT6X06_Imported_Globals FT6X06 Imported Globals * @{ */ typedef struct { FT6X06_Write_Func WriteReg; FT6X06_Read_Func ReadReg; void *handle; } ft6x06_ctx_t; /** * @} */ /** @defgroup FT6X06_Exported_Constants FT6X06 Exported Constants * @{ */ /* Current mode register of the FT6X06 (R/W) */ #define FT6X06_DEV_MODE_REG 0x00U /* Gesture ID register */ #define FT6X06_GEST_ID_REG 0x01U /* Touch Data Status register : gives number of active touch points (0..2) */ #define FT6X06_TD_STAT_REG 0x02U /* P1 X, Y coordinates, weight and misc registers */ #define FT6X06_P1_XH_REG 0x03U #define FT6X06_P1_XL_REG 0x04U #define FT6X06_P1_YH_REG 0x05U #define FT6X06_P1_YL_REG 0x06U #define FT6X06_P1_WEIGHT_REG 0x07U #define FT6X06_P1_MISC_REG 0x08U /* P2 X, Y coordinates, weight and misc registers */ #define FT6X06_P2_XH_REG 0x09U #define FT6X06_P2_XL_REG 0x0AU #define FT6X06_P2_YH_REG 0x0BU #define FT6X06_P2_YL_REG 0x0CU #define FT6X06_P2_WEIGHT_REG 0x0DU #define FT6X06_P2_MISC_REG 0x0EU /* Threshold for touch detection */ #define FT6X06_TH_GROUP_REG 0x80U /* Filter function coefficients */ #define FT6X06_TH_DIFF_REG 0x85U /* Control register */ #define FT6X06_CTRL_REG 0x86U /* The time period of switching from Active mode to Monitor mode when there is no touching */ #define FT6X06_TIMEENTERMONITOR_REG 0x87U /* Report rate in Active mode */ #define FT6X06_PERIODACTIVE_REG 0x88U /* Report rate in Monitor mode */ #define FT6X06_PERIODMONITOR_REG 0x89U /* The value of the minimum allowed angle while Rotating gesture mode */ #define FT6X06_RADIAN_VALUE_REG 0x91U /* Maximum offset while Moving Left and Moving Right gesture */ #define FT6X06_OFFSET_LR_REG 0x92U /* Maximum offset while Moving Up and Moving Down gesture */ #define FT6X06_OFFSET_UD_REG 0x93U /* Minimum distance while Moving Left and Moving Right gesture */ #define FT6X06_DISTANCE_LR_REG 0x94U /* Minimum distance while Moving Up and Moving Down gesture */ #define FT6X06_DISTANCE_UD_REG 0x95U /* Maximum distance while Zoom In and Zoom Out gesture */ #define FT6X06_DISTANCE_ZOOM_REG 0x96U /* High 8-bit of LIB Version info */ #define FT6X06_LIB_VER_H_REG 0xA1U /* Low 8-bit of LIB Version info */ #define FT6X06_LIB_VER_L_REG 0xA2U /* Chip Selecting */ #define FT6X06_CIPHER_REG 0xA3U /* Interrupt mode register (used when in interrupt mode) */ #define FT6X06_GMODE_REG 0xA4U /* Current power mode the FT6X06 system is in (R) */ #define FT6X06_PWR_MODE_REG 0xA5U /* FT6X06 firmware version */ #define FT6X06_FIRMID_REG 0xA6U /* FT6X06 Chip identification register */ #define FT6X06_CHIP_ID_REG 0xA8U /* Release code version */ #define FT6X06_RELEASE_CODE_ID_REG 0xAFU /* Current operating mode the FT6X06 system is in (R) */ #define FT6X06_STATE_REG 0xBCU /** * @} */ /******************************************************************************* * Register : Generic - All * Address : Generic - All * Bit Group Name: None * Permission : W *******************************************************************************/ int32_t ft6x06_write_reg(ft6x06_ctx_t *ctx, uint8_t reg, uint8_t *pbuf, uint16_t length); int32_t ft6x06_read_reg(ft6x06_ctx_t *ctx, uint8_t reg, uint8_t *pbuf, uint16_t length); /**************** Base Function *******************/ /******************************************************************************* * Register : DEV_MODE * Address : 0X00 * Bit Group Name: DEVICE_MODE * Permission : RW *******************************************************************************/ #define FT6X06_DEV_MODE_BIT_MASK 0x70U #define FT6X06_DEV_MODE_BIT_POSITION 4U int32_t ft6x06_dev_mode_w(ft6x06_ctx_t *ctx, uint8_t value); int32_t ft6x06_dev_mode_r(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : GEST_ID * Address : 0X01 * Bit Group Name: Gesture ID * Permission : R *******************************************************************************/ #define FT6X06_GEST_ID_BIT_MASK 0xFFU #define FT6X06_GEST_ID_BIT_POSITION 0U int32_t ft6x06_gest_id(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : TD_STATUS * Address : 0X02 * Bit Group Name: * Permission : R *******************************************************************************/ #define FT6X06_TD_STATUS_BIT_MASK 0x0FU #define FT6X06_TD_STATUS_BIT_POSITION 0U int32_t ft6x06_td_status(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P1_XH * Address : 0X03 * Bit Group Name: First Event Flag * Permission : R * Default value : 0xF0U *******************************************************************************/ #define FT6X06_P1_XH_EF_BIT_MASK 0xC0U #define FT6X06_P1_XH_EF_BIT_POSITION 6U int32_t ft6x06_p1_xh_ef(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P1_XH * Address : 0X03 * Bit Group Name: First Touch X Position * Permission : R * Default value : 0x0FU *******************************************************************************/ #define FT6X06_P1_XH_TP_BIT_MASK 0x0FU #define FT6X06_P1_XH_TP_BIT_POSITION 0U int32_t ft6x06_p1_xh_tp(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P1_XL * Address : 0X04 * Bit Group Name: First Touch X Position * Permission : R * Default value : 0xFFU *******************************************************************************/ #define FT6X06_P1_XL_TP_BIT_MASK 0xFFU #define FT6X06_P1_XL_TP_BIT_POSITION 0U int32_t ft6x06_p1_xl_tp(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P1_YH * Address : 0X05 * Bit Group Name: First Touch ID * Permission : R * Default value : 0xF0U *******************************************************************************/ #define FT6X06_P1_YH_TID_BIT_MASK 0xF0U #define FT6X06_P1_YH_TID_BIT_POSITION 4U int32_t ft6x06_p1_yh_tid(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P1_YH * Address : 0x06 * Bit Group Name: First Touch Y Position * Permission : R * Default value : 0x0FU *******************************************************************************/ #define FT6X06_P1_YH_TP_BIT_MASK 0x0FU #define FT6X06_P1_YH_TP_BIT_POSITION 0U int32_t ft6x06_p1_yh_tp(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P1_YL * Address : 0X06 * Bit Group Name: First Touch Y Position * Permission : R * Default value : 0xFFU *******************************************************************************/ #define FT6X06_P1_YL_TP_BIT_MASK 0xFFU #define FT6X06_P1_YL_TP_BIT_POSITION 0U int32_t ft6x06_p1_yl_tp(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P1_WEIGHT * Address : 0X07 * Bit Group Name: First Touch Weight(pressure) * Permission : R * Default value : 0xFFU *******************************************************************************/ #define FT6X06_P1_WEIGHT_BIT_MASK 0xFFU #define FT6X06_P1_WEIGHT_BIT_POSITION 0U int32_t ft6x06_p1_weight(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P1_MISC * Address : 0X08 * Bit Group Name: First Touch Area * Permission : R * Default value : 0xFFU *******************************************************************************/ #define FT6X06_P1_MISC_BIT_MASK 0xF0U #define FT6X06_P1_MISC_BIT_POSITION 4U int32_t ft6x06_p1_misc(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P2_XH * Address : 0X09 * Bit Group Name: Second Event Flag * Permission : R * Default value : 0xF0U *******************************************************************************/ #define FT6X06_P2_XH_EF_BIT_MASK 0xC0U #define FT6X06_P2_XH_EF_BIT_POSITION 6U int32_t ft6x06_p2_xh_ef(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P2_XH * Address : 0X09 * Bit Group Name: Second Touch X Position * Permission : R * Default value : 0x0FU *******************************************************************************/ #define FT6X06_P2_XH_TP_BIT_MASK 0x0FU #define FT6X06_P2_XH_TP_BIT_POSITION 0U int32_t ft6x06_p2_xh_tp(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P2_XL * Address : 0X0A * Bit Group Name: Second Touch X Position * Permission : R * Default value : 0xFFU *******************************************************************************/ #define FT6X06_P2_XL_TP_BIT_MASK 0xFFU #define FT6X06_P2_XL_TP_BIT_POSITION 0U int32_t ft6x06_p2_xl_tp(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P2_YH * Address : 0X0B * Bit Group Name: Second Touch ID * Permission : R * Default value : 0xF0U *******************************************************************************/ #define FT6X06_P2_YH_TID_BIT_MASK 0xF0U #define FT6X06_P2_YH_TID_BIT_POSITION 4U int32_t ft6x06_p2_yh_tid(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P2_YH * Address : 0x0B * Bit Group Name: Second Touch Y Position * Permission : R * Default value : 0x0FU *******************************************************************************/ #define FT6X06_P2_YH_TP_BIT_MASK 0x0FU #define FT6X06_P2_YH_TP_BIT_POSITION 0U int32_t ft6x06_p2_yh_tp(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P2_YL * Address : 0X0C * Bit Group Name: Second Touch Y Position * Permission : R * Default value : 0xFFU *******************************************************************************/ #define FT6X06_P2_YL_TP_BIT_MASK 0xFFU #define FT6X06_P2_YL_TP_BIT_POSITION 0U int32_t ft6x06_p2_yl_tp(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P2_WEIGHT * Address : 0X0D * Bit Group Name: Second Touch Weight(pressure) * Permission : R * Default value : 0xFFU *******************************************************************************/ #define FT6X06_P2_WEIGHT_BIT_MASK 0xFFU #define FT6X06_P2_WEIGHT_BIT_POSITION 0U int32_t ft6x06_p2_weight(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : P2_MISC * Address : 0X0E * Bit Group Name: Second Touch Area * Permission : R * Default value : 0xFFU *******************************************************************************/ #define FT6X06_P2_MISC_BIT_MASK 0xF0U #define FT6X06_P2_MISC_BIT_POSITION 4U int32_t ft6x06_p2_misc(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : TH_GROUP * Address : 0X80 * Bit Group Name: Threshold for touch detection * Permission : RW * Default value : None *******************************************************************************/ #define FT6X06_TH_GROUP_BIT_MASK 0xFFU #define FT6X06_TH_GROUP_BIT_POSITION 0U int32_t ft6x06_th_group(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : TH_DIFF * Address : 0X85 * Bit Group Name: Filter function coefficient * Permission : RW * Default value : None *******************************************************************************/ #define FT6X06_TH_DIFF_BIT_MASK 0xFFU #define FT6X06_TH_DIFF_BIT_POSITION 0U int32_t ft6x06_th_diff(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : CTRL * Address : 0X86 * Bit Group Name: * Permission : RW * Default value : 0x01 *******************************************************************************/ #define FT6X06_CTRL_BIT_MASK 0xFFU #define FT6X06_CTRL_BIT_POSITION 0U int32_t ft6x06_ctrl(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : TIMEENTERMONITOR * Address : 0X87 * Bit Group Name: * Permission : RW * Default value : 0x0A *******************************************************************************/ #define FT6X06_TIMEENTERMONITOR_BIT_MASK 0xFFU #define FT6X06_TIMEENTERMONITOR_BIT_POSITION 0U int32_t ft6x06_time_enter_monitor(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : PERIODACTIVE * Address : 0X88 * Bit Group Name: * Permission : RW * Default value : None *******************************************************************************/ #define FT6X06_PERIODACTIVE_BIT_MASK 0xFFU #define FT6X06_PERIODACTIVE_BIT_POSITION 0U int32_t ft6x06_period_active(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : PERIODMONITOR * Address : 0X89 * Bit Group Name: * Permission : RW * Default value : 0x28 *******************************************************************************/ #define FT6X06_PERIODMONITOR_BIT_MASK 0xFFU #define FT6X06_PERIODMONITOR_BIT_POSITION 0U int32_t ft6x06_period_monitor(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : RADIAN_VALUE * Address : 0X91 * Bit Group Name: * Permission : RW * Default value : 0x0A *******************************************************************************/ #define FT6X06_RADIAN_VALUE_BIT_MASK 0xFFU #define FT6X06_RADIAN_VALUE_BIT_POSITION 0U int32_t ft6x06_radian_value(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : OFFSET_LEFT_RIGHT * Address : 0X92 * Bit Group Name: * Permission : RW * Default value : 0x19 *******************************************************************************/ #define FT6X06_OFFSET_LR_BIT_MASK 0xFFU #define FT6X06_OFFSET_LR_BIT_POSITION 0U int32_t ft6x06_offset_left_right(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : OFFSET_UP_DOWN * Address : 0X93 * Bit Group Name: * Permission : RW * Default value : 0x19 *******************************************************************************/ #define FT6X06_OFFSET_UD_BIT_MASK 0xFFU #define FT6X06_OFFSET_UD_BIT_POSITION 0U int32_t ft6x06_offset_up_down(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : DISTANCE_LEFT_RIGHT * Address : 0X94 * Bit Group Name: * Permission : RW * Default value : 0x19 *******************************************************************************/ #define FT6X06_DISTANCE_LR_BIT_MASK 0xFFU #define FT6X06_DISTANCE_LR_BIT_POSITION 0U int32_t ft6x06_disatnce_left_right(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : DISTANCE_UP_DOWN * Address : 0X95 * Bit Group Name: * Permission : RW * Default value : 0x19 *******************************************************************************/ #define FT6X06_DISTANCE_UD_BIT_MASK 0xFFU #define FT6X06_DISTANCE_UD_BIT_POSITION 0U int32_t ft6x06_distance_up_down(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : DISTANCE_ZOOM * Address : 0X96 * Bit Group Name: * Permission : RW * Default value : 0x32 *******************************************************************************/ #define FT6X06_DISTANCE_ZOOM_BIT_MASK 0xFFU #define FT6X06_DISTANCE_ZOOM_BIT_POSITION 0U int32_t ft6x06_distance_zoom(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : LIB_VER_H * Address : 0XA1 * Bit Group Name: * Permission : R * Default value : None *******************************************************************************/ #define FT6X06_LIB_VER_H_BIT_MASK 0xFFU #define FT6X06_LIB_VER_H_BIT_POSITION 0U int32_t ft6x06_lib_ver_high(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : LIB_VER_L * Address : 0XA2 * Bit Group Name: * Permission : R * Default value : None *******************************************************************************/ #define FT6X06_LIB_VER_L_BIT_MASK 0xFFU #define FT6X06_LIB_VER_L_BIT_POSITION 0U int32_t ft6x06_lib_ver_low(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : CIPHER * Address : 0XA3 * Bit Group Name: * Permission : R * Default value : 0x06 *******************************************************************************/ #define FT6X06_CIPHER_BIT_MASK 0xFFU #define FT6X06_CIPHER_BIT_POSITION 0U int32_t ft6x06_cipher(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : G_MODE * Address : 0XA4 * Bit Group Name: * Permission : RW * Default value : 0x01 *******************************************************************************/ #define FT6X06_G_MODE_BIT_MASK 0xFFU #define FT6X06_G_MODE_BIT_POSITION 0U int32_t ft6x06_g_mode(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : PWR_MODE * Address : 0XA5 * Bit Group Name: * Permission : RW * Default value : 0x00 *******************************************************************************/ #define FT6X06_PWR_MODE_BIT_MASK 0xFFU #define FT6X06_PWR_MODE_BIT_POSITION 0U int32_t ft6x06_pwr_mode(ft6x06_ctx_t *ctx, uint8_t value); /******************************************************************************* * Register : FIRMID * Address : 0XA6 * Bit Group Name: * Permission : R * Default value : None *******************************************************************************/ #define FT6X06_FIRMID_BIT_MASK 0xFFU #define FT6X06_FIRMID_BIT_POSITION 0U int32_t ft6x06_firm_id(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : FOCALTECH_ID * Address : 0XA8 * Bit Group Name: * Permission : R * Default value : 0x11 *******************************************************************************/ #define FT6X06_CHIP_ID_BIT_MASK 0xFFU #define FT6X06_CHIP_ID_BIT_POSITION 0U int32_t ft6x06_chip_id(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : RELEASE_CODE_ID * Address : 0XAF * Bit Group Name: * Permission : R * Default value : 0x001 *******************************************************************************/ #define FT6X06_RC_ID_BIT_MASK 0xFFU #define FT6X06_RC_ID_BIT_POSITION 0U int32_t ft6x06_release_code_id(ft6x06_ctx_t *ctx, uint8_t *value); /******************************************************************************* * Register : STATE * Address : 0XBC * Bit Group Name: * Permission : RW * Default value : 0x01 *******************************************************************************/ #define FT6X06_STATE_BIT_MASK 0xFFU #define FT6X06_STATE_BIT_POSITION 0U int32_t ft6x06_state(ft6x06_ctx_t *ctx, uint8_t value); /** * @} */ #ifdef __cplusplus } #endif #endif /* FT6X06_REG_H */ /** * @} */ /** * @} */ /** * @} */ /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/