diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/.project b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/.project index 72cec3b7b52d258e8bbd2d8896de2da5c871beb2..37c9415df8257f3763f3420ece964b0ec402cc99 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/.project +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/.project @@ -17,9 +17,13 @@ org.eclipse.cdt.make.core.append_environment true + + org.eclipse.cdt.make.core.autoBuildTarget + all + org.eclipse.cdt.make.core.buildArguments - -k + -k -j8 org.eclipse.cdt.make.core.buildCommand @@ -29,6 +33,10 @@ org.eclipse.cdt.make.core.buildLocation ${workspace_loc:/KF8A100_Touch_V0.1/Release} + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + org.eclipse.cdt.make.core.contents org.eclipse.cdt.make.core.activeConfigSettings @@ -45,9 +53,13 @@ org.eclipse.cdt.make.core.enableFullBuild true + + org.eclipse.cdt.make.core.fullBuildTarget + all + org.eclipse.cdt.make.core.stopOnError - true + false org.eclipse.cdt.make.core.useDefaultBuildCmd diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/.settings/com.chipon.chiponide.core.prefs b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/.settings/com.chipon.chiponide.core.prefs index 10ebf2aa600eb6f300663ec21d417528c4032ed7..6cc70e52a06f94cc9db87f8afe5c1fe81983190c 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/.settings/com.chipon.chiponide.core.prefs +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/.settings/com.chipon.chiponide.core.prefs @@ -1,12 +1,12 @@ -#Fri May 12 15:27:15 CST 2023 +#Sat Jan 18 15:33:04 CST 2025 avrtarget/ChipBoden=1 avrtarget/ChipCp=1 avrtarget/ChipMclre=1 avrtarget/ChipPower=5 -avrtarget/ChipPwrt=1 +avrtarget/ChipPwrt=0 avrtarget/ChipSwrten=0 avrtarget/ChipType=KF8A100ENG -avrtarget/ChipWdte=0 +avrtarget/ChipWdte=1 avrtarget/EE= avrtarget/SetEE=false avrtarget/SetinCode=false diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/CTouch.c b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/CTouch.c index cab00697b4558b285b1688d807a475e9e800e62c..9ff6d0de4b28ab3be5847c90fe70e028dd910d3a 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/CTouch.c +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/CTouch.c @@ -9,34 +9,33 @@ /*通道号设定*/ const unsigned char CTouch_Channel_Tab[] = {8, 7, 6, 5, 10}; - /*通道信号阈值设定*/ - const unsigned int CTouch_Threshold_Tab[] = {80, 80, 80, 80, 200}; -//const unsigned int CTouch_Threshold_Tab[] = {500,500,500,500,500}; -/*通道信号第二按键阈值增加设定*/ -const unsigned int CTouch_Second_Key_Threshold_Tab[] = {100, 100, 175, 108, 100}; + const unsigned int CTouch_Threshold_Tab[] = {100, 100, 100, 100, 100}; + +/*通道信号第二按键阈值增加设定(如果有多按键按下需求,必须全部设置为0)*/ +const unsigned int CTouch_Second_Key_Threshold_Tab[] = {0, 0, 0, 0, 0}; /*通道信号迟滞设定*/ -const unsigned char CTouch_Single_Hysteresis_Tab[] = {13, 14, 12, 15, 10}; +const unsigned char CTouch_Single_Hysteresis_Tab[] = {10, 10, 10, 10, 10}; /*通道噪声阈值设定*/ -const unsigned char CTouch_Noise_threshold_Tab[] = {46, 50, 40, 50, 90}; -//const unsigned char CTouch_Noise_threshold_Tab[] = {250, 250, 250, 250, 90}; +const unsigned char CTouch_Noise_threshold_Tab[] = {40, 40, 40, 40, 40}; + /*通道负噪声阈值设定*/ // -const unsigned char CTouch_Negative_Noise_threshold_Tab[] = {50, 60, 45, 50, 90}; -//const unsigned char CTouch_Negative_Noise_threshold_Tab[] = {250, 250, 250, 250, 90}; +const unsigned char CTouch_Negative_Noise_threshold_Tab[] = {40, 40, 40, 40, 40}; + /*通道最大阈值设定*/ -const unsigned int CTouch_Max_Threshold_Tab[] = {550, 420, 470, 420, 400}; -//const unsigned int CTouch_Max_Threshold_Tab[] = {700,700,700,700,700}; +const unsigned int CTouch_Max_Threshold_Tab[] = {550, 550, 550, 550, 550}; + /*通道信号异常阈值设定 */ -const unsigned int CTouch_Disturb_Noise_threshold_Tab[] = {78, 82, 90, 80, 100}; +const unsigned int CTouch_Disturb_Noise_threshold_Tab[] = {40, 40, 40, 40, 40}; /*通道稳定噪声阈值设置*/ -const unsigned unsigned char CTouch_Steady_Noise_threshold_Tab[] = {40, 30, 30, 40, 24}; +const unsigned unsigned char CTouch_Steady_Noise_threshold_Tab[] = {40, 40, 40, 40, 40}; // 电压参考值VDAC:raw尽量在5000 -const unsigned char CTOUCH_VDAC_Tab[] = {0x80, 0x90, 0x90, 0x90, 0x60}; +const unsigned char CTOUCH_VDAC_Tab[] = {0x60, 0x60, 0x60, 0x60, 0x60}; const unsigned char DEF_NUM_CHANNELS = sizeof(CTouch_Channel_Tab); diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/CTouch.h b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/CTouch.h index 7a44f11f586665a0842a7085a336df620765c3bf..867c3abd0a9f362761c25fedf5a5d5956d97cd96 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/CTouch.h +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/CTouch.h @@ -13,6 +13,12 @@ extern const unsigned char CTouch_Channel_Tab[]; extern const unsigned int CTouch_Threshold_Tab[]; extern const unsigned int CTouch_Second_Key_Threshold_Tab[]; + +//extern unsigned char CTouch_Channel_Tab[]; +//extern unsigned int CTouch_Threshold_Tab[]; +//extern unsigned int CTouch_Second_Key_Threshold_Tab[]; + + extern const unsigned char CTouch_Single_Hysteresis_Tab[]; extern const unsigned char CTouch_Noise_threshold_Tab[]; extern const unsigned char CTouch_Negative_Noise_threshold_Tab[]; @@ -116,15 +122,15 @@ extern void _CTouch_Datastreamer_Output_(void); #define DEF_TOUCH_ON_DEBOUNCE 3u #define DEF_TOUCH_ON_BASELINE_UPDATA_EN 1 //按键按下时基准线更新使能 -#define DEF_PRESS_ON_MAX_TIME_CNT_EN 1 //1为DEF_PRESS_ON_MAX_TIME,0为DEF_PRESS_ON_MAX_CNT -#define DEF_PRESS_ON_MAX_TIME 200 //0为长按有效 -#define DEF_PRESS_ON_MAX_CNT 1000 //0为长按有效 -#define DEF_DATA_CHANGE_DISTURB_MAX_CHANNEL 3u -#define DEF_PROTECT_MODE_RELEASE_CYCLE 30 -#define DEF_BASELINE_UPDATE_CNT 10 -#define DEF_MAX_KEY_CNT 2 -#define DEF_REFERENCE_CHANNEL_ENABLE 1u +#define DEF_PRESS_ON_MAX_TIME_CNT_EN 1 //1为DEF_PRESS_ON_MAX_TIME(精准计时)单位为Timer1的溢出时间,0为DEF_PRESS_ON_MAX_CNT(单位为_CTouch_Scan_Process_的执行次数) +#define DEF_PRESS_ON_MAX_TIME 200 //0为长按有效 (按键按下时间大于此参数的2倍时强制更新基准线和原始值一致) +#define DEF_PRESS_ON_MAX_CNT 1000 //0为长按有效 (按键按下时间大于_CTouch_Scan_Process_函数执行(DEF_PRESS_ON_MAX_CNT*2)次时强制更新基准线到和原始值一致) +#define DEF_DATA_CHANGE_DISTURB_MAX_CHANNEL 3u //多通道干扰保护,3个通道信号值大于CTouch_Disturb_Noise_threshold_Tab[]阈值时,进入保护 +#define DEF_PROTECT_MODE_RELEASE_CYCLE 30 //保护模式退出时间,重复保护时会刷新计数,单位为_CTouch_Scan_Process_()的执行次数 +#define DEF_BASELINE_UPDATE_CNT 50 //基准线更新速度,单位为_CTouch_Scan_Process_()的执行次数 +#define DEF_MAX_KEY_CNT 2 //允许按键按下的个数,超过此值进入保护 +#define DEF_REFERENCE_CHANNEL_ENABLE 1u // 参考通道保护 1:使能 0 关闭(以CTouch_Channel_Tab[]最后一个通道作为参考通道) #define DEF_LOW_POWER_CHANNEL_NUM 2u //触摸通道从前往后,不启用低功耗功能时需置0 -#define DEF_LOW_POWER_IND_CHANNEL_BASELINE_UPDATE_EN 1u +#define DEF_LOW_POWER_IND_CHANNEL_BASELINE_UPDATE_EN 1u //低功耗扫描函数_CTouch_LowPower_Scan_Process_()中非低功耗通道基准线更新使能位 #endif /* CTOUCH_H_ */ diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/PowerMan.c b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/PowerMan.c index 03027fb8e7f11978caf39942dea73ecc6aac7538..ff97e2a93ed198061dc69ba1a07dd0ff04f64e6a 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/PowerMan.c +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/PowerMan.c @@ -63,12 +63,6 @@ void System_Goto_Sleep(void) _IDLE(); //Sleep _NOP(); //Wakeup from here - -// WDTPS = 0x06; //Sleep for about 64ms -// _CWDT(); -// _IDLE(); //Sleep -// _NOP(); //Wakeup from here - WDTPS = 0x07; //Set usual time out Touch_GPIO_Config(); SLVREN = 1; //Enable Low Voltage Detect diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/config_set.c b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/config_set.c index 76f194b34a88a39556bcc5d803be87040c7bb76a..44f21427fab1a26287749e94fd83bed7212462a2 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/config_set.c +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/config_set.c @@ -1 +1 @@ -__sfr __at(0x2007) CONFIG =0x05f4; +unsigned int __at(0x2007) CONFIG =0x05c4; diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/init_mcu.c b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/init_mcu.c index d08ec7ababfa76e68e93c3bdf55774a2294e3497..0ffc175dbcdd717c7b9a3e4dfafdd491de17d3b9 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/init_mcu.c +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/init_mcu.c @@ -44,7 +44,8 @@ void Init_Touch(void) __asm ;;VDACS=0x40; MOVB #0x00 - MOV R0,#0x40 + ;; MOV R0,#0x40 + MOV R0,#0x00 ORL 0x1A,R0 __endasm; VDAC=0xC0; @@ -61,8 +62,8 @@ void Init_Touch(void) void Init_Touch_GPIO(void) { /* 端口初始化,设置触摸通道为输入 */ - TR0 = 0b00010111; - TR1 = 0b11111110; + TR0 = 0b00011111; + TR1 = 0b11111111; TR2 = 0b00001000; P2LR0 = 1; //LED3 @@ -132,21 +133,21 @@ void Init_I2C_S() ******************************************************************************/ void Init_Usart() { -#if 0 //选择P0.0 和 P0.1作为串口IO +#if 1 //选择P0.0 和 P0.1作为串口IO /***Usart相关寄存器初始化****/ BRCTL = 0x44; // 接收空闲 使用8位计数器,不考虑唤醒是使能和自动波特率检测 - EUBRGH = 0x00; // 波特率公式=SCLK/(m*y+1),其中SCLK系统时钟,如这里8M,m为倍频数,见手册,y为8位或16位波特率计数值 + EUBRGH = 0x00; // 波特率公式=SCLK/(m*y+1),其中SCLK系统时钟,如这里16M,m为倍频数,见手册,y为8位或16位波特率计数值 EUBRGL = 0x08; // SYNC=0(全双工异步模式),BRG16=0(使用8位波特率发生器),HBRG=1(高速) - TSCTL = 0x26; // 8位 发送,使能发送,全双工异步模式SYNC=0,低速模式HBRG=1,发送移位空,不发送同步间隔符 + TSCTL = 0x26; // 8位 发送,使能发送,全双工异步模式SYNC=0,高速模式HBRG=1,发送移位空,不发送同步间隔符 RSCTL = 0x90; // 串口使能(配置引脚为串行口引脚),8位接收,接收使能,无帧错误,溢出错误,不考虑地址识别和第9位 #else //选择P1.3 和 P2.3作为串口IO /***Usart相关寄存器初始化****/ - BRCTL = 0x40; // 接收空闲 使用8位计数器,不考虑唤醒是使能和自动波特率检测 + BRCTL = 0x40; // 接收空闲 使用8位计数器,BRG16 =0,不考虑唤醒是使能和自动波特率检测 - EUBRGH = 0x00; // 波特率公式=SCLK/(m*y+1),其中SCLK系统时钟,如这里8M,m为倍频数,见手册,y为8位或16位波特率计数值 - EUBRGL = 0x08; // SYNC=0(全双工异步模式),BRG16=0(使用8位波特率发生器),HBRG=1(高速) - TSCTL = 0x26; // 8位 发送,使能发送,全双工异步模式SYNC=0,低速模式HBRG=1,发送移位空,不发送同步间隔符 + EUBRGH = 0x00; // 波特率公式=SCLK/(m*y+1),其中SCLK系统时钟16M,m为倍频数,见手册,y为8位或16位波特率计数值 + EUBRGL = 0x08; // SYNC=0(全双工异步模式),BRG16=0(使用8位波特率发生器) + TSCTL = 0x26; // 8位 发送,使能发送,全双工异步模式SYNC=0,高速模式HBRG=1,发送移位空TXSRS =1,不发送同步间隔符 RSCTL = 0x90; // 串口使能(配置引脚为串行口引脚),8位接收,接收使能,无帧错误,溢出错误,不考虑地址识别和第9位 #endif } @@ -163,9 +164,9 @@ void Init_Lin(void) /***Usart相关寄存器初始化****/ BRCTL = 0x40; // 接收空闲 使用8位计数器,不考虑唤醒是使能和自动波特率检测 - EUBRGH = 0x00; // 波特率公式=SCLK/(m*y+1),其中SCLK系统时钟,如这里8M,m为倍频数,见手册,y为8位或16位波特率计数值 + EUBRGH = 0x00; // 波特率公式=SCLK/(m*y+1),其中SCLK系统时钟,如这里16M,m为倍频数,见手册,y为8位或16位波特率计数值 EUBRGL = 0x0C; // SYNC=0(全双工异步模式),BRG16=0(使用8位波特率发生器),HBRG=0(低速) - TSCTL = 0x22; // 8位 发送,使能发送,全双工异步模式SYNC=0,低速模式,发送移位空,不发送同步间隔符 + TSCTL = 0x22; // 8位 发送TX9 =0,使能发送TXEN =1,全双工异步模式SYNC=0,低速模式HBRG =0,发送移位空,不发送同步间隔符 RSCTL = 0x90; // 串口使能(配置引脚为串行口引脚),8位接收,接收使能,无帧错误,溢出错误,不考虑地址识别和第9位 } @@ -183,7 +184,9 @@ void UART_SendBuf(unsigned char SendTemp) void WatchDog_Init(void) { - PSA = 0; - WDTPS = 0x09; + _CWDT(); + PSA = 0; //预分频器用于T0 操作PSA前后必须喂狗,因为PSA =0将预分频器切换到T0后,此时看门狗溢出时间缩短,不喂狗可能会造成溢出复位 + _CWDT(); + WDTPS = 0x09; //0B 0000 1001 PSA =0条件下 512mS溢出时间 SWDTEN = 1; } diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/init_mcu.h b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/init_mcu.h index 7a222fb4e0a0ec01d8a86bdc1a42a6e70b8383d3..ddeca347facfb422fc7ca45a2487f543ddb90286 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/init_mcu.h +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/init_mcu.h @@ -12,7 +12,7 @@ #define I2C_SLAVE_ENABLE 0 #define I2C_SLAVE_ADDR 0x10 -#define USART_DEBUG_EN 1 +#define USART_DEBUG_EN 0 //函数的声明 extern void Init_MCU(); diff --git a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/main.c b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/main.c index 142013b0f1a238a6de57e8eeac7e59469085a172..955d151b6221bb818c77f7c90421249ccf1808bf 100644 --- a/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/main.c +++ b/KF8-Touch/KF8A-series/KF8A100_LP_Touch_V1.1A_Lib/main.c @@ -1,11 +1,11 @@ /************************************************************************************* * 项目名: KF8A100ENG TOUCH KEY * 开发环境:ChipON IDE -* 软件版本:2021-03-07 +* 软件版本:2025-01-18 * 硬件: * 使用芯片:KF8A100ENG -* 作者: TIM WANG -* 功能简述: +* 作者: AE/FAE +* 功能简述: 触摸系统无按键按下时5s进入休眠,定时256ms唤醒,检测到触摸按键按下时运行主程序,若无按键按下直接再次休眠 *************************************************************************************/ #include "init_mcu.h" @@ -72,17 +72,17 @@ void Sys_Run_Mode(void) { P2LR2 = P2LR1 = P2LR0 = P1LR0 = 1; } - -// _CTouch_Datastreamer_Output_(); - - /* 串口调试,只查看错误代码和键值 */ -#if 0 - - UART_SendBuf(0x55); - UART_SendBuf(Key_Error_Code); - UART_SendBuf(Key_Code >> 8); - UART_SendBuf(Key_Code&0xff); - +/* 串口调试,查看触摸数据(信号量,原始值,基准线等)*/ +#if (USART_DEBUG_EN == 1) +#if 1 + _CTouch_Datastreamer_Output_(); +#else + // /* 串口调试,只查看错误代码和键值 */ + UART_SendBuf(0x55); + UART_SendBuf(Key_Error_Code); + UART_SendBuf(Key_Code >> 8); + UART_SendBuf(Key_Code&0xff); +#endif #endif } diff --git a/KF8-Touch/KF8TS-series/KF8TS_General_Touch_ASM_Demo_2516_V2.5/config_set.asm b/KF8-Touch/KF8TS-series/KF8TS_General_Touch_ASM_Demo_2516_V2.5/config_set.asm index 43747379a6743fff425b6ff7c164797dda5a1321..64ee3add55293f466c2391ae3c0eeef4510bf3a0 100644 --- a/KF8-Touch/KF8TS-series/KF8TS_General_Touch_ASM_Demo_2516_V2.5/config_set.asm +++ b/KF8-Touch/KF8TS-series/KF8TS_General_Touch_ASM_Demo_2516_V2.5/config_set.asm @@ -1,2 +1,2 @@ - __config 0x2007,0x0594 + __config 0x2007 ,0x05c4 .end \ No newline at end of file