Files
r3_delay_3/TS_Lib/Includes/ts_configuration.h
T
2025-07-07 10:41:49 +08:00

289 lines
14 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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 1 //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,注意:此时间越长,芯片待机功耗越低,但触摸响应速度越慢。demo值100
#define SLEEP_TOUTH_THD 9/*15*/ //触摸省电模式下门限值设置,当触摸数据变化量大于此数值将退出省电模式。
#define ENTER_SLEEP_PRINT_EN 1 //省电模式打印开关,主要是为了验证触摸是否正常进入省电模式。进入触摸省电模式时打印"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 8 //触摸按键数量,必须正确填写
//
// #define KEY_SEQ \
// {TS_CH0 , 300 }, \
// {TS_CH1 , 300 }, \
// {TS_CH2 , 500 }, \
// {TS_CH3 , 500 }, \
// {TS_CH4 , 300 }, \
// {TS_CH5 , 400 }, \
// {TS_CH6 , 600 }, \
// {TS_CH7 , 500 }, \
#define KEY_SEQ \
{TS_CH0 , 100 }, \
{TS_CH1 , 100 }, \
{TS_CH2 , 200 }, \
{TS_CH3 , 90 }, \
{TS_CH4 , 90 }, \
{TS_CH5 , 100 }, \
{TS_CH6 , 250 }, \
{TS_CH7 , 300 }, \
/*
{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 0 //见以下说明
/*
此功能选项用于解决生产过程中应用不同的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_CH8,TS_CH11,TS_CH10,TS_CH9 //通道列表,以顺时钟或从左到右的顺序填写
#define WHEEL_SLIDER0_CH_MIN_RATE 70, 40, 40, 70 //手指触摸某通道中间位置时,邻近通道与该通道变化量的比率,该数值与上述通道定义一一对应。该数值可通过打开宏定义PRINT_WHEEL_SLIDER_RATE_EN通过UART打印。
#define WHEEL_SLIDER0_TOUCH_THD 0x4a //圆环或者滑条灵敏度设置,该值越小越灵敏
#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
//-------------------------------------------------------------------------------------------------------------------