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