This commit is contained in:
moyuhai
2026-06-12 09:12:35 +08:00
commit 02f1638ef2
91 changed files with 38366 additions and 0 deletions
+177
View File
@@ -0,0 +1,177 @@
#ifndef _TS_API_H
#define _TS_API_H
#ifdef _TK_API_C_
/***************************************************************************************************************/
/***************************************************************************************************************/
TSState_T idata TS_State;
TYPE_SN idata PreKeysFlagSN;
TYPE_SN xdata KeysFlagSN;
#if TK_FREQ_JUMP_EN
unsigned char xdata NowTKFreqIndex;
#endif
unsigned int TS_Key;
unsigned int TS_LongKeyTimer;
unsigned char TK_State;
bit TS_CycleScanDoneFlag;
unsigned char idata TS_Cnt;
unsigned int xdata TS_RawData[OPENED_TS_COUNT+1];
unsigned int xdata TS_BaseLineData[OPENED_TS_COUNT];
unsigned int xdata TS_FirstAreaData[OPENED_TS_COUNT];
unsigned char xdata TS_AreaConfirmTimer[OPENED_TS_COUNT];
unsigned int xdata TS_PostData[OPENED_TS_COUNT+1];
#if TK_FREQ_JUMP_EN
unsigned int xdata TS_JumpFreqData[2][OPENED_TS_COUNT+1];
#endif
#if (TS_ACQ_TIMES > 1)
unsigned char xdata TS_Acq_Counter = 0;
unsigned int xdata TS_DataSum[OPENED_TS_COUNT+1];
#endif
#if SUPPORT_KEY
unsigned int xdata TSKey_FingerThd[KEY_CH_COUNT];
unsigned char xdata TSKey_LongTouchLimitTimer[KEY_CH_COUNT];
#if SUPPORT_ANTI_WATER_FUNCTION
bit KeyPressedFlag;
unsigned char xdata PressedKeyIndex;
#endif
#if TK_BASE_TRIM_WHILE_KEY_PRESSED
unsigned int xdata RefChDataBak[KEY_CH_COUNT];
unsigned int xdata TS_BaseLineDataBak[KEY_CH_COUNT];
#endif
#else
unsigned int xdata TSKey_FingerThd[1];
#endif
/***************************************************************************************************************/
/***************************************************************************************************************/
unsigned int xdata TS_FilterBuf[OPENED_TS_COUNT+1][FILTER_COUNT];
unsigned char xdata TS_FilterPosIdx[OPENED_TS_COUNT+1];
unsigned char xdata TS_Init_Step;
unsigned char idata TS_RefCHBaseLineAdjuTimer;
unsigned char TS_Index;
unsigned char idata TS_CH[OPENED_TS_COUNT];
unsigned char xdata EnterStopScanTimer;
unsigned char xdata MainLoopCnt1;
unsigned char xdata MainLoopCnt2;
#if SUPPORT_KEY
#if ANTI_SPEAKER_EN
#define REF_CH_DATA_BUF_SIZE 10
unsigned int xdata RefChDataBuf[REF_CH_DATA_BUF_SIZE];
unsigned char xdata RefChDataBufIdx;
unsigned char xdata RefChDataTimer;
#endif
#endif
bit TS_StableFlag;
#if SUPPORT_TOUCH_SLEEP_MODE
bit TS_SleepEn;
bit TS_SleepMode;
#endif
unsigned char xdata TS_HalfSecCnt;
#if SUPPORT_KEY
#if DEBUG
unsigned char xdata Key_Cnt_Debug;
TSState_T xdata TS_State_Debug;
unsigned char xdata TS_CH_Debug[OPENED_TS_COUNT];
unsigned int xdata TS_RefChBaseLineData;
unsigned int xdata TS_RefPostData;
unsigned int xdata KeysFlagSN_Debug;
#endif
#if SUPPORT_COVER_PANAL_AFTER_POWERON
unsigned char PanalCoverJudgeTimer;
bit PanalCoverJudgeFlag;
#endif
#endif
#if SUPPORT_WHEEL_SLIDER
unsigned char xdata TSWheelSlider_TouchConfirmTimer;
unsigned char xdata TSWheelSlider_LongTouchLimitTimer;
unsigned char xdata WheelSliderState;
unsigned char xdata WheelSliderTouchFlag;
int xdata WheelSliderPosition;
unsigned char xdata WheelSliderRefCh;
unsigned int xdata WheelSliderCapRateFilter;
unsigned char xdata WheelSliderMaxIdx;
bit W_S_RefChSet;
#else
unsigned char xdata WheelSliderRefCh;
unsigned int xdata WheelSliderCapRateFilter;
unsigned char xdata WheelSliderMaxIdx;
#endif
unsigned char TS_BaseCh;
unsigned char ActiveTouchType;
#else
/***************************************************************************************************************/
/***************************************************************************************************************/
extern TSState_T idata TS_State;
#ifndef TS_SERVICE_C
extern TYPE_SN idata PreKeysFlagSN;
extern TYPE_SN xdata KeysFlagSN;
#endif
extern unsigned int TS_Key;
extern unsigned int TS_LongKeyTimer;
extern unsigned char TK_State;
extern bit TS_CycleScanDoneFlag;
extern unsigned char idata TS_Cnt;
extern unsigned int xdata TS_RefChRawData;
extern unsigned int xdata TS_RawData[];
extern unsigned int xdata TS_BaseLineData[];
extern unsigned int xdata TS_FirstAreaData[];
extern unsigned char xdata TS_AreaConfirmTimer[];
extern unsigned int xdata TS_PostData[];
extern unsigned int xdata TSKey_FingerThd[];
extern unsigned char xdata TSKey_LongTouchLimitTimer[];
/***************************************************************************************************************/
/***************************************************************************************************************/
extern unsigned char xdata TS_Init_Step;
extern unsigned char idata TS_RefCHBaseLineAdjuTimer;
extern unsigned char TS_Index;
extern unsigned char idata TS_CH[];
extern unsigned char TS_AcqCnt;
extern unsigned char xdata EnterStopScanTimer;
extern code unsigned int TS_CH_INFO_SEQ[][2];
extern bit TS_StableFlag;
extern bit TS_SleepEn;
extern bit TS_SleepMode;
extern unsigned char xdata TSWheelSlider_TouchConfirmTimer;
extern unsigned char xdata TSWheelSlider_LongTouchLimitTimer;
extern unsigned char xdata WheelSliderState;
extern unsigned char xdata WheelSliderTouchFlag;
extern int xdata WheelSliderPosition;
extern unsigned int xdata WheelSliderCapRateFilter;
extern unsigned char TS_BaseCh;
extern unsigned char ActiveTouchType;
extern unsigned char xdata WheelSliderRefCh;
extern bit W_S_RefChSet;
extern unsigned char xdata WheelSliderMaxIdx;
extern code unsigned int TS_KEY_CH_INFO_SEQ[][2];
extern code unsigned char WHEEL_SLIDER0_MAX_MIN_TAB[];
extern code unsigned char AREA_CONFIRM_TIME_TAB[];
extern code unsigned int MASK_TAB[];
#endif
void TS_init(void);
void TS_Action(void);
void TS_GetKey(void);
void TS_EnterSleepMode(void);
void TS_ISR(void);
#endif
+278
View File
@@ -0,0 +1,278 @@
#ifndef _TS_CFG_H
#define _TS_CFG_H
//-------------------------------------------------------------------------------------------------------------------
#define DEBUG 0 //1:打开在线调试功能; 0:关闭在线调试功能
//注意:只有触摸键应用才支持在线调试,滑条应用不支持在线调试。
/********************************************************************************************************
说明:
触摸在线调试功能可在PC端显示当前触摸值、基准值、门限值,可在PC端设置触摸灵敏度,并导出配置文件,
此功能需配合仿真下载器及上位机工具CACHIPTOOL.exe才能使用。详细使用方法请参考相关文档说明。
********************************************************************************************************/
//-------------------------------------------------------------------------------------------------------------------
#define SUPPORT_KEY 1 //1:支持触摸按键; 0:不支持触摸按键
#define SUPPORT_WHEEL_SLIDER 1 //1:支持触摸触摸滑条或圆环;0:不支持触摸滑条或圆环
//-------------------------------------------------------------------------------------------------------------------
/***********触摸省电模式设置********************************************************************************************************/
#define SUPPORT_TOUCH_SLEEP_MODE 0 //1:支持 0:不支持
#if SUPPORT_TOUCH_SLEEP_MODE
#define ENTER_STOP_MODE_TIME 5 //进入触摸省电模式倒数时间,单位为0.5S,如定义为5,5*0.5=2.5秒,即2.5秒无触摸即进入省电模式。
#define SLEEP_MODE_SCAN_INTERVAL_TIME 100 //扫描触摸的间隔时间,单位约为1ms,注意:此时间越长,芯片待机功耗越低,但触摸响应速度越慢。
#define SLEEP_TOUTH_THD 4/*15*/ //触摸省电模式下门限值设置,当触摸数据变化量大于此数值将退出省电模式。
#define ENTER_SLEEP_PRINT_EN 0 //省电模式打印开关,主要是为了验证触摸是否正常进入省电模式。进入触摸省电模式时打印"sleep",退出省电模式时打印"exit"
//注意:使能触摸省电模式后,如在某些条件不需要进入省电模式,只需要把TS_SleepEn设为0,如需要进省电模式,把TS_SleepEn设为1。
#endif
//-------------------------------------------------------------------------------------------------------------------
#define TS_ACQ_TIMES 1 //该定义表示多少次采集数据相加进行运算
//-------------------------------------------------------------------------------------------------------------------
/********************触摸数据滤波设置*********************************************************/
#define FILTER_COUNT 5
//说明:此数值越大,数据越平滑,但是按键响应速度越慢
//-------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------
/*******************触摸充电和比较器基准选择***********************************************************************/
#define SOURCE_VDD 0
#define SOURCE_INNER 1
#define TK_CHARGE_REF_SELECT SOURCE_INNER //SOURCE_VDD: 触摸充电电源选择为VDD,比较器基准为VDD分压 SOURCE_INNER:触摸充电电源为内部运放,比较器基准为内部基准。
//注意:一般在芯片供电存在低频干扰时选择为SOURCE_INNER 当选择为SOURCE_INNER后, 芯片静态电流会增加1~2mA.
#if (TK_CHARGE_REF_SELECT == SOURCE_VDD)
#define VRS_VAL 2 //比较器阈值,取值范围为:0~7,数值越大,比较器阈值电压越低。
#elif (TK_CHARGE_REF_SELECT == SOURCE_INNER)
#define VDS_VAL 1 //触摸内部运放输出电压选择,可选范围:0~3,0:2V 12.5V 23V 34V
#define VIRS_VAL 1 //触摸比较器阈值电压选择,可选范围:0~3,0:1V 11.5V 22V 32.5V
#endif
#define TKDIV_VAL 0 //触摸充放电时钟分频系数,取值范围为:0~7,对应的时钟频率为:4M~500K,此数值越大,频率越低。
#define TKTMS_VAL 10 //放电时间定义,取值范围为:1~31,数值越大,放电时间越长。
/*
说明:
1. 当设置为内部运放及内部基准时(即TK_CHARGE_REF_SELECT==SOURCE_INNER),内部运放电压要大于比较器阈值电压,即VDS_VAL定义的电压要大于VIRS_VAL定义的电压。
2. 当设置为内部运放及内部基准时(即TK_CHARGE_REF_SELECT==SOURCE_INNER),内部运放电压要比芯片供电电压低0.5V以上,否则运放电压可能不稳定。
3. 当设置为内部运放及内部基准时(即TK_CHARGE_REF_SELECT==SOURCE_INNER),芯片供电至少要接10uF以上电容。
*/
//-------------------------------------------------------------------------------------------------------------------
#define POWER_ON_WAIT_TK_STABLE_EN 0 //上电后等待触摸稳定后再设置触摸环境值初值
//------------------------------------------------------------------------------------------------------------------------
#define SUPPORT_ANTI_WATER_FUNCTION 0 //防水补偿模式开关
#if SUPPORT_ANTI_WATER_FUNCTION
#define TK_PC_VAL 2
#else
#define TK_PC_VAL 1
#endif
/*
说明:
1. 此功能只能在触摸按键时打开,触摸滑条或圆环不支持。
2. 打开防水补偿模式时,触摸充电电源最好选择为VDD(即 TK_CHARGE_REF_SELECT == SOURCE_VDD)。
3. 在此模式下,触摸走线对地间的寄生电容必须大于触摸通道间的寄生电容,否则触摸充电无法达到比较器阈值电压,建议PCB多铺地,触摸走线的间距尽可能宽
4. 打开防水模式后,只能有一个按键响应(不支持复合键)。
*/
//---------------------------------------------------------------------------------------------------
#define TK_BASE_TRIM_WHILE_KEY_PRESSED 0 //在触摸按键按下时,该触摸通道仍以内部参考通道为参考实时更新环境值,此功能可解决某些应用中,因长时间连续快速触摸按键导致该触摸通道无法更新环境值,从而导致触摸按键无效或灵敏度发生改变的问题。
//注意: 如果TK_CAP引脚所接电容为普通电容(温度特性校差),触摸工作后长期快速按触摸键一段时间后,触摸键有可能会长期触发,打开此功能可解决这种情况。
//---------------------------------------------------------------------------------------------------
#define TK_FREQ_JUMP_EN 0 //跳频功能使能开关,打开跳频功能对于CS认证测试性能有较大提升,但会降低触摸采集速度,可能对触摸按键响应时间有一定影响
#if TK_FREQ_JUMP_EN
#if (TKDIV_VAL < 7)
#define TKDIV_VAL2 (TKDIV_VAL+1)
#else
#define TKDIV_VAL2 (TKDIV_VAL-1)
#endif
#endif
//-----------------触摸键应用设置--------------------------------------------------------------------------------------------------
#if SUPPORT_KEY
#define GENERATE_TS_KEY_EN 0 //根据KeysFlagSN状态产生触摸键消息TS_Key使能,如果不需要产生TS_Key,用户可直接根据KeysFlagSN来判断按键状态。
#if GENERATE_TS_KEY_EN
#define GENERATE_DOUBLE_KEY_EN 0 //产生复合键
#define PRINT_TS_KEY_EN 0 //打印触摸按键值开关
#endif
/***********上电再盖上触摸面板功能操作开关定义*******************************************************************************************************/
#define SUPPORT_COVER_PANAL_AFTER_POWERON 0 //1:支持上电再盖上触摸面板 0:不支持
#if SUPPORT_COVER_PANAL_AFTER_POWERON
#define PANAL_COVER_JUDGE_TIME 2 //单位为15.625ms
#define JUDGE_TK_NUM (KEY_CH_COUNT-2)
#endif
//说明:上电后再盖上触摸面板,一般情况下会有多个按键触摸数值变化量超过或接近触摸门限值,为了防止此类操作产生误动作,在检测到多个按键超过或接近触发门限值时,设置按键无效并重置触摸功能。
/*******************************************************************************************************************************/
//-------------------------------------------------------------------------------------------------------------------
/********触摸按键通道及触发门限值定义***********************************************************/
#define KEY_CH_COUNT 6 //触摸按键数量,必须正确填写 //50
/*
ch5:Brightness_IN+
ch4:Brightness_IN-
*/
#define KEY_SEQ \
{TS_CH4 , 50 }, \
{TS_CH5 , 50 }, \
{TS_CH7 , 80 }, \
{TS_CH9 , 50 }, \
{TS_CH10 , 50 }, \
{TS_CH12 , 50 }, \
/*
{TS_CH0 , 190 }, \
{TS_CH1 , 190 }, \
*/
/*********************************************************************
说明:
1 {TS_CHx, XX}
| |
| |
| ------------->对应触摸通道的门限值,当触摸数据变化量大于此数值时,按键触发。
--------------------->触摸通道序号。
2: 以上触摸门限值可在触摸在线调试模式下由上位机软件(CACHIPTOOL.exe)导出。
*********************************************************************/
/***********NOISE门限值定义************************************************************************************/
#define NOISE_THRESHOLD 30 //此门限值可设置为触摸按键门限值的1/4 ~ 1/2
/*************************************************************************************************************/
#define ANTI_SPEAKER_EN 0 //抗对讲机干扰使能开关,此功能主要是利用内部触摸参考通道来判断电源是否受对讲机干扰,如果是电源受对讲机干扰而误产生按键,则产生的按键丢弃。
#if ANTI_SPEAKER_EN
#define REF_CH_ABNORMAL_THD 8 //定义内部参考通道数值变化多少才认为是有对讲机干扰
#endif
//-------------------------------------------------------------------------------------------------------------------
#define TK_SHARE_LED_EN 0 //触摸引脚复用LED驱动引脚功能开关
#if TK_SHARE_LED_EN
/**************************************************************************************
重要提醒: 在此应用中,由于LED灯本身存在结电容,不同种类的LED灯的结电容存在较大差异,并且此结电容在LED灯亮与灭时
可能存在差异(尤其是白色LED比较明显),此结电容对触摸存在不良影响,所以在应用此功能时要严格挑选LED灯,并且量产后如
要更换LED灯要重新调试软件灵敏度。
***************************************************************************************/
//---------------------------------------------------------------------------------------
#define LED_DRV_CNT 2000 //此项参数可设置LED扫描占空比,数值越大,LED亮度越高,但触摸采集的速度越慢
//---------------------------------------------------------------------------------------
#define TK_SENSITIVE_AUTO_TRIM_EN 1 //见以下说明
/*
此功能选项用于解决生产过程中应用不同的LED灯造成灵敏度差异问题,
在应用时必须填写以下列表数值,数值的涵义是无按键时每个触摸通道的计数数值,
其顺序对应上面定义的KEY_SEQ列表,计数数值也对应KEY_SEQ中定义的门限值,
在应用时如果换上不同批次或不同颜色的LED灯,由于不同颜色的LED灯的结电容可能不同,
从而造成触摸计数数值也不同,程序会根据以下定义的参考计数值相应调整其门限值,从而使
应用不同的LED灯灵敏度基本一致,而不需要用户更改软件。
*/
#if TK_SENSITIVE_AUTO_TRIM_EN
#define TK_BASELINE_VALUE_SEQ \
1740, \
1872, \
1812, \
1830, \
1947, \
1779, \
1672, \
1960, \
1808, \
1710,
#endif
#else
#define TK_SENSITIVE_AUTO_TRIM_EN 0
#endif
//-------------------------------------------------------------------------------------------------------------------
/***********触摸按键消抖及按键输出时间定义************************************************************************************/
#define FINGER_TOUCH_CONFIRM_TIME 2 //触摸按键按下确认时间,单位为15.625ms
#define FINGER_TOUCH_RELEASE_CONFIRM_TIME 2 //触摸按键释放确认时间,单位为15.625ms
#define FINGER_LONG_TOUCH_TIME_LIMIT 0 //限制按键输出时间,单位为0.5s,若定义为0,则关闭此功能
//-------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------
/***********环境值更新速度设置********************************************************/
#define AREA_PNOISE_PLUS_CONFIRM_TIME 100 //单位为15.625ms
#define AREA_PNOISE_CONFIRM_TIME 80 //单位为15.625ms
#define AREA_NNOISE_CONFIRM_TIME 30 //单位为15.625ms
#define AREA_OVERLOW_CONFIRM_TIME 30 //单位为15.625ms
//说明:一般情况下,环境值更新速度设置用户不需要设置,保持默认值即可。
//-------------------------------------------------------------------------------------------------------------------
#else
#define KEY_CH_COUNT 0
#endif
//-----------------触摸滑条或圆环应用设置-------------------------------------------------------------------------------------------------
#if SUPPORT_WHEEL_SLIDER
//-----------------------------------------------------------------------------
#define PRINT_WHEEL_SLIDER_POSITION_EN 0 //打印触摸圆环或滑条位置开关
#define PRINT_WHEEL_SLIDER_DATA_EN 0 //打印触摸圆环或滑条触摸数据开关
#define PRINT_WHEEL_SLIDER_RATE_EN 0 //打印比率值
#define WHEEL_SLIDER_BASELINE_UPDATE_TIME 50 //单位为15.625ms
//-----------------------------------------------------------------------------
#define WHEEL_SLIDER_TOUCH_CONFIRM_TIME 2 //圆环或滑条按下确认时间,单位为15.625ms
#define WHEEL_SLIDER_TOUCH_RELEASE_CONFIRM_TIME 2 //圆环或滑条释放确认时间,单位为15.625ms
#define WHEEL_SLIDER_LONG_TOUCH_TIME_LIMIT 0 //限制圆环和滑条触发时间,单位为0.5s,若定义为0,则关闭此功能
//------------------------------------------------------------------------------------
#define WHEEL_OR_SLIDER_DEF0 WHEEL //是滑条还是圆环,如果是滑条,定义为SLIDER,如果是圆环,定义为WHEEL
#define WHEEL_SLIDER0_CH_COUNT 4 //第一个圆环或滑条通道数目,必须正确填写
#define WHEEL_SLIDER0_SEQ TS_CH11,TS_CH3,TS_CH6, TS_CH8 //通道列表,以顺时钟或从左到右的顺序填写27, 29, 21, 30,
#define WHEEL_SLIDER0_CH_MIN_RATE 27, 10, 21, 30, //手指触摸某通道中间位置时,邻近通道与该通道变化量的比率,该数值与上述通道定义一一对应。该数值可通过打开宏定义PRINT_WHEEL_SLIDER_RATE_EN通过UART打印。
//27, 10, 21, 30,
#define WHEEL_SLIDER0_TOUCH_THD 0x14
#define WHEEL_SLIDER0_NOISE_THD 0x08
#if !SUPPORT_KEY
#define NOISE_THRESHOLD WHEEL_SLIDER0_NOISE_THD
#endif
//------------------------------------------------------------------------------------
#else
#define WHEEL_SLIDER0_CH_COUNT 0
#endif
//-------------------------------------------------------------------------------------------------------------------
#define OPENED_TS_COUNT (KEY_CH_COUNT+WHEEL_SLIDER0_CH_COUNT)
#if (!SUPPORT_KEY)
#undef DEBUG
#define DEBUG 0
#endif
#if DEBUG
#define I2C_SELECT_P30_P31
// #define I2C_SELECT_P02_P03
#ifdef I2C_SELECT_P30_P31
#ifdef UART0_EN
//#error "请在ca51f5_config.h中关闭宏定义UART0_EN!"
#endif
#endif
#undef SUPPORT_TOUCH_SLEEP_MODE //省电模式不支持触摸在线调试,所以要关闭省电模式
#define SUPPORT_TOUCH_SLEEP_MODE 0
#endif
#define TK_Debug_UartPutChar Uart0_PutChar
#endif
//-------------------------------------------------------------------------------------------------------------------
+147
View File
@@ -0,0 +1,147 @@
//TKCON定义
#define TKST(N) (N<<7) //N=0-1
#define TKIE(N) (N<<6) //N=0-1
#define TMEN(N) (N<<5) //N=0-1 //RTC触发TKST
#define TWKE(N) (N<<4) //N=0-1 //省电自动唤醒 0TKST=0即产生TKIF, 1: TKST=0后满足比较条件后才产生TKIF
#define VRS(N) (N<<0) //N=0-7 //比较器参考电压选择
//TKCFG定义
#define TKDIV(N) (N<<5) //N=0-7 //时钟分频 分频系数 TKDIV+1),0:不分频
#define TKTMS(N) (N<<0) //N=0-31 //放电时间设置 放电时间: (TKTMS)*32*Ttk , TKTMS必须大于0,如果为0不放电
//TKxCHS定义 //x=0-5
#define MPOL(N) (N<<7) //N=0-1 //0- TKxMS < ATKxM; 1- TKxMS >= ATKxM
#define NPOL(N) (N<<6) //N=0-1 //0- TKxMS < ATKxN; 1- TKxMS >= ATKxN
#define TKPS(N) (N<<0) //N=0-14 0:不选 1-13对应TK0-TK12; 14对应TKCAP
//TKIF定义 //TKST=0后一起置位
#define TKIF5 (1<<5)
#define TKIF4 (1<<4)
#define TKIF3 (1<<3)
#define TKIF2 (1<<2)
#define TKIF1 (1<<1)
#define TKIF0 (1<<0)
//TKPWC定义
#define TKPC(N) (N<<6) //N=0-3
#define VDS(N) (N<<4) //N=0-3
#define VIRS(N) (N<<2) //N=0-3
#define TKPWS(N) (N<<1) //N=0-1
#define TKCVS(N) (N<<0) //N=0-1
//TLCON定义
#define TLEIE(N) (N<<7) //N=0-1
#define TLKIE(N) (N<<6) //N=0-1
#define TLLIE(N) (N<<5) //N=0-3
#define TLLVS(N) (N<<1) //N=0-3
#define TLPOL(N) (N<<0) //N=0-1
//TLFLG定义 //TKST=0后一起置位
#define TLERR (1<<7)
#define TLKOV (1<<6)
#define TLLOV (1<<5)
//TLCKS??
#define TLCKS(N) (N<<0) //N=0-7
//TLCKS??
#define TLCOMS(N) (N<<0) //N=0-7
typedef union
{
unsigned long int dwVal;
unsigned int wVal[2];
unsigned char bVal[4];
}
DWORD_UNION;
typedef union
{
unsigned int wVal;
unsigned char bVal[2];
}
WORD_UNION;
typedef enum
{
TS_INIT,
TS_DEAL
} TSState_T;
enum
{
AREA_FINGER_TOUCH,
AREA_PNOISE_PLUS,
AREA_PNOISE,
AREA_NNOISE,
AREA_OVER_LOW
};
enum
{
WHEEL_SLIDER_NO_TOUCH,
WHEEL_SLIDER_TOUCH,
};
#define WHEEL 0
#define SLIDER 1
enum
{
TS_CH0,
TS_CH1,
TS_CH2,
TS_CH3,
TS_CH4,
TS_CH5,
TS_CH6,
TS_CH7,
TS_CH8,
TS_CH9,
TS_CH10,
TS_CH11,
TS_CH12,
};
enum
{
LED_ON,
LED_OFF,
LED_ALL_OFF,
};
#ifndef TS_SERVICE_C
#if (KEY_CH_COUNT <= 8)
#define TYPE_SN unsigned char
#elif (KEY_CH_COUNT <= 16)
#define TYPE_SN unsigned int
#else
#define TYPE_SN unsigned long int
#endif
#endif
#define KEY_BREAK 0x1000 //短按抬起
#define KEY_LONG 0x2000 //长按
#define KEY_LONG_BREAK 0x3000 //长按抬起
#define KEY_LONG_START 0x4000 //长按开始
#define K1 0x0001
#define K2 0x0002
#define K3 0x0004
#define K4 0x0008
#define K5 0x0010
#define K6 0x0020
enum
{
TK_STATE_RELEASE,
TK_STATE_SINGLE_KEY_PRESS,
TK_STATE_DOUBLE_KEY_PRESS,
};
#define TS_LONG_START_TIME 250
#define TS_LONG_TIME 70
+20
View File
@@ -0,0 +1,20 @@
#ifndef _TS_SERVICE_H_
#define _TS_SERVICE_H_
void TS_IO_init(void);
void TS_ScanStart(void);
void TS_ScanContinue(void);
void TSKey_DataDeal(void);
void TS_RunInit(void);
void TS_CheckRefCh(void);
void TS_AreaConfirmTimerSet(unsigned char ts_ch, unsigned char area);
void TS_MS_ISR(void);
void TS_HS_ISR(void);
void TS_CfgPinFunc(unsigned char idx,unsigned char Func);
unsigned char TS_GetDataArea(unsigned char ts_ch,unsigned int ts_data,int noise_thd,bit key_pressed_flag);
unsigned char TS_AreaDeviateDetection(unsigned int cmp_data,unsigned int real_data,int range);
void TS_BaseLineForceUpdate(void);
void SetWheelSliderRefCh(unsigned char SliderNum);
int WheelTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V);
int SliderTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V);
#endif