OV-Watch/Software/OV_Watch_V2.3.1/BSP/TOUCH/CST816.h

112 lines
2.5 KiB
C

#ifndef __CST816_H
#define __CST816_H
#include "stdint.h"
#include "iic_hal.h"
#include "delay.h"
/* CST816 dev pin defination */
#define TOUCH_RST_PIN GPIO_PIN_15
#define TOUCH_INT_PIN GPIO_PIN_1
#define TOUCH_RST_PORT GPIOA
#define TOUCH_INT_PORT GPIOB
/* functions define */
#define TOUCH_RST_0 HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, GPIO_PIN_RESET)
#define TOUCH_RST_1 HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, GPIO_PIN_SET)
/* 设备地址 */
#define Device_Addr 0x15
/* 触摸屏寄存器 */
#define GestureID 0x01
#define FingerNum 0x02
#define XposH 0x03
#define XposL 0x04
#define YposH 0x05
#define YposL 0x06
#define ChipID 0xA7
#define SleepMode 0xE5
#define MotionMask 0xEC
#define IrqPluseWidth 0xED
#define NorScanPer 0xEE
#define MotionSlAngle 0xEF
#define LpAutoWakeTime 0xF4
#define LpScanTH 0xF5
#define LpScanWin 0xF6
#define LpScanFreq 0xF7
#define LpScanIdac 0xF8
#define AutoSleepTime 0xF9
#define IrqCtl 0xFA
#define AutoReset 0xFB
#define LongPressTime 0xFC
#define IOCtl 0xFD
#define DisAutoSleep 0xFE
/* 触摸屏坐标结构体 */
typedef struct
{
unsigned int X_Pos;
unsigned int Y_Pos;
} CST816_Info;
/* 手势ID识别选项 */
typedef enum
{
NOGESTURE = 0x00,
DOWNGLIDE = 0x01,
UPGLIDE = 0x02,
LEFTGLIDE = 0x03,
RIGHTGLIDE = 0x04,
CLICK = 0x05,
DOUBLECLICK = 0x0B,
LONGPRESS = 0x0C,
} GestureID_TypeDef;
/* 连续动作配置选项 */
typedef enum
{
M_DISABLE = 0x00,
EnConLR = 0x01,
EnConUD = 0x02,
EnDClick = 0x03,
M_ALLENABLE = 0x07,
} MotionMask_TypeDef;
/* 中断低脉冲发射方式选项 */
typedef enum
{
OnceWLP = 0x00,
EnMotion = 0x10,
EnChange = 0x20,
EnTouch = 0x40,
EnTest = 0x80,
} IrqCtl_TypeDef;
/* 触摸屏初始化相关函数 */
void CST816_GPIO_Init(void);
void CST816_RESET(void);
void CST816_Init(void);
/* 触摸屏操作函数 */
void CST816_Get_XY_AXIS(void);
uint8_t CST816_Get_ChipID(void);
uint8_t CST816_Get_FingerNum(void);
/* 触摸屏读写函数 */
void CST816_IIC_WriteREG(uint8_t addr, uint8_t dat);
uint8_t CST816_IIC_ReadREG(unsigned char addr);
/* 触摸屏有关参数配置函数 */
void CST816_Config_MotionMask(uint8_t mode);
void CST816_Config_AutoSleepTime(uint8_t time);
void CST816_Config_MotionSlAngle(uint8_t x_right_y_up_angle);
void CST816_Config_NorScanPer(uint8_t Period);
void CST816_Config_IrqPluseWidth(uint8_t Width);
void CST816_Config_LpScanTH(uint8_t TH);
void CST816_Wakeup(void);
void CST816_Sleep(void);
#endif