diff --git a/firmware/p417_SWTR.X/nbproject/Makefile-genesis.properties b/firmware/p417_SWTR.X/nbproject/Makefile-genesis.properties index caee351..dcd9693 100644 --- a/firmware/p417_SWTR.X/nbproject/Makefile-genesis.properties +++ b/firmware/p417_SWTR.X/nbproject/Makefile-genesis.properties @@ -1,5 +1,5 @@ # -#Fri Nov 15 15:26:57 CST 2024 +#Mon Dec 02 16:25:50 CST 2024 mcal.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3 conf.ids=mcal mcal.languagetoolchain.version=4.10 diff --git a/firmware/p417_SWTR.X/nbproject/private/private.xml b/firmware/p417_SWTR.X/nbproject/private/private.xml index 361468e..5c68aa3 100644 --- a/firmware/p417_SWTR.X/nbproject/private/private.xml +++ b/firmware/p417_SWTR.X/nbproject/private/private.xml @@ -3,9 +3,8 @@ - file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/main.c file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/TouchPanel/TouchPanel.c - file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/DiagnosticR/Sys_Diag_Detect/SysDiagDetect.c + file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/main.c diff --git a/firmware/src/DiagnosticR/UDS/UDS_DIDNvm.c b/firmware/src/DiagnosticR/UDS/UDS_DIDNvm.c index 32b9a3c..15c9f31 100644 --- a/firmware/src/DiagnosticR/UDS/UDS_DIDNvm.c +++ b/firmware/src/DiagnosticR/UDS/UDS_DIDNvm.c @@ -78,8 +78,8 @@ typedef struct{ * Private variables */ const UI_8 NVM_DID_CD_VIN[DLC_DID_CD_VIN] = GAC_VIN_DEFAULT_VALUE; -const UI_8 NVM_Reprogramming_Date_App[DLC_DID_REPROGRAMMING_DATE] = {0x20,0x24,0x10,0x19}; -const UI_8 NVM_DID_CD_SUPPLIER_ID[DLC_SYSTEM_SUPPLIER_ID] = {'2','4','1','0','1','9'}; +const UI_8 NVM_Reprogramming_Date_App[DLC_DID_REPROGRAMMING_DATE] = {0x20,0x24,0x12,0x02}; +const UI_8 NVM_DID_CD_SUPPLIER_ID[DLC_SYSTEM_SUPPLIER_ID] = {'2','4','1','2','0','2'}; const UI_8 NVM_Repair_Shop_Code[DLC_REPAIR_SHOP_CODE] = GAC_ECU_REPAIR_SHOP_CODE; const UI_8 NVM_DID_CD_HW_VERSION[DLC_GAC_HW_VERSION] = {'H','W','0','6',0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}; static uint8 RAM_DID_CD_VIN[DLC_DID_CD_VIN]; diff --git a/firmware/src/RTE/RTE.c b/firmware/src/RTE/RTE.c index 803e7eb..22b10ae 100644 --- a/firmware/src/RTE/RTE.c +++ b/firmware/src/RTE/RTE.c @@ -577,6 +577,54 @@ uint8_t RTE_Get_TouchBoard_XY_Sts(void) // Not active,Touch,Touch and Press,inva return XY_Sts; } +//统计所有触发的通道数量 +uint8_t GetActiveChNum (uint16_t chdata[],uint16_t thdata[],uint8_t num) +{ + uint8_t i,count; + count = 0; + for (i = 0; i < num; i++) + { + if (chdata[i] > thdata[i]) + { + count++; + } + } + return count; +} + +//统计连续触发的通道数量 +uint8_t GetContinuousChNum(uint16_t chdata[],uint16_t thdata[],uint8_t num) +{ + uint8_t i,count,index; + count = 0; + index = 0; + for (i = 0; i < num; i++) + { + if (chdata[i] > thdata[i]) + { + //找到第一个触发的通道 + index = i; + break; + } + } + if (i == num) + { + //没有触发的通道 + return count; + } + + for (i = index; i < num; i++) + { + if (chdata[i] <= thdata[i]) + { + //找到第一个触发的通道之后第一个不触发的通道 + break; + } + } + count = i - index; + return count; +} + #if 1 uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true { @@ -611,8 +659,9 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true th_y[3] = qtlib_key_configs_set1[11].channel_threshold; th_y[4] = qtlib_key_configs_set1[10].channel_threshold; - - + Two_Finger_Y_count = GetActiveChNum(Two_Finger_Y_data,th_y,5U); + Y_count = GetContinuousChNum(Two_Finger_Y_data,th_y,5U); + /* Two_Finger_Y_count = 0; for (i = 0; i < 5; i++) { @@ -634,7 +683,11 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true else Y_count++; } + */ + Two_Finger_X_count = GetActiveChNum(Two_Finger_X_data,th_x,5U); + X_count = GetContinuousChNum(Two_Finger_X_data,th_x,5U); + /* Two_Finger_X_count = 0; for (m = 0; m < 5; m++) { @@ -655,6 +708,8 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true else X_count++; } + */ + // 触发的通道数量 //连续触发的通道数量 if ((Two_Finger_Y_count > 4 && Two_Finger_X_data[0]>th_x[0]) || Y_count != Two_Finger_Y_count || Two_Finger_X_count > 4 || X_count != Two_Finger_X_count) diff --git a/firmware/src/TLE9263/SBC_TLE926x.h b/firmware/src/TLE9263/SBC_TLE926x.h index 41b273f..b06d8b1 100644 --- a/firmware/src/TLE9263/SBC_TLE926x.h +++ b/firmware/src/TLE9263/SBC_TLE926x.h @@ -36,15 +36,15 @@ #define CW_BUS_CTRL_2 (0x0) /*decimal 0*/ -#define CW_GPIO_CTRL (0x0) /*decimal 0*/ +#define CW_GPIO_CTRL (0x24) /*decimal 36*/ #define CW_HS_CTRL1 (0x0) /*decimal 0*/ #define CW_HS_CTRL2 (0x0) /*decimal 0*/ -#define CW_HW_CTRL (0x80) /*decimal 128*/ +#define CW_HW_CTRL (0x9) /*decimal 9*/ -#define CW_M_S_CTRL (0x18) /*decimal 8*/ +#define CW_M_S_CTRL (0x1C) /*decimal 28*/ #define CW_PWM1_CTRL (0x0) /*decimal 0*/ @@ -92,15 +92,15 @@ #define CW_TIMER2_CTRL (0x0) /*decimal 0*/ -#define CW_WD_CTRL (0x4) /*decimal 4*/ +#define CW_WD_CTRL (0x84) /*decimal 132*/ #define CW_WK_CTRL_1 (0x0) /*decimal 0*/ -#define CW_WK_CTRL_2 (0x7) /*decimal 7*/ +#define CW_WK_CTRL_2 (0x0) /*decimal 0*/ #define CW_WK_FLT_CTRL (0x0) /*decimal 0*/ -#define CW_WK_PUPD_CTRL (0x3F) /*decimal 63*/ +#define CW_WK_PUPD_CTRL (0x0) /*decimal 0*/ #define LED_EXTENDED_ID (0x1) /*decimal 1*/ @@ -120,6 +120,6 @@ #define UI_SWK_MASK_IDx_CTRL 0x00000000 -#define UI_VARIANT (0x3) /*decimal 3*/ +#define UI_VARIANT (0x5) /*decimal 5*/ #endif /* SBC_TLE926X_H */ diff --git a/firmware/src/TLE9263/TLE926x.c b/firmware/src/TLE9263/TLE926x.c index 4f391fe..e223c1e 100644 --- a/firmware/src/TLE9263/TLE926x.c +++ b/firmware/src/TLE9263/TLE926x.c @@ -206,11 +206,14 @@ SBC_ErrorCode sbc_init(void) { /* Describes initialization sequence. init Sequence containing {reg_address, reg_value}*/ - uint8_t initSequence[4][2] = { + uint8_t initSequence[8][2] = { {SBC_WD_CTRL, WD_CTRL},//0x04 TimeOut; 200ms period {SBC_M_S_CTRL, CW_M_S_CTRL},//0x18 SBC normal;vcc3off;vcc2 on in normal; {SBC_BUS_CTRL_1, CW_BUS_CTRL_1},//0x03 lin off; can normal - + {SBC_WK_CTRL_2, CW_WK_CTRL_2}, + {SBC_HW_CTRL, CW_HW_CTRL}, + {SBC_GPIO_CTRL, CW_GPIO_CTRL}, + {SBC_WK_PUPD_CTRL, CW_WK_PUPD_CTRL}, /* End Configuration */ {0x00U, 0x00U} }; diff --git a/firmware/src/TLE9263/TLE926x_Main.c b/firmware/src/TLE9263/TLE926x_Main.c index 2e450e8..665ee72 100644 --- a/firmware/src/TLE9263/TLE926x_Main.c +++ b/firmware/src/TLE9263/TLE926x_Main.c @@ -39,7 +39,6 @@ void Tle9263_MainTask(void) { { return; } - if (timeref ++ > 5) { sbc_wd_trigger(); timeref = 0; diff --git a/firmware/src/TLE9263/sbc_tle9263.icwp b/firmware/src/TLE9263/sbc_tle9263.icwp index 8c20a27..39a9276 100644 --- a/firmware/src/TLE9263/sbc_tle9263.icwp +++ b/firmware/src/TLE9263/sbc_tle9263.icwp @@ -1,24 +1,14 @@ - 938a5187cdcc759f78b6bae262f689a50c384e539a95618defe57f554fa7fafd + b31f5011f3959a9e7cc2c9ca70f9a9d697b17587a54185c423e628478807656e TLE926x_Lib.xml V0.0.1 - - CW.M_S_CTRL[2] - 0 - 0 - CW.M_S_CTRL[1:0] 0 0 - - CW.HW_CTRL[3] - 0 - 0 - CW.HW_CTRL[1] 0 @@ -34,21 +24,11 @@ 0 0 - - CW.BUS_CTRL_1[5] - 1 - 1 - CW.BUS_CTRL_1[6] 0 0 - - CW.BUS_CTRL_1[7] - 0 - 0 - MATH.EN_PN 0 @@ -79,11 +59,6 @@ 0 0 - - CW.SWK_BTL2_CTRL[5:0] - 0 - 0 - CW.SWK_ID0_CTRL[0] 0 @@ -114,16 +89,6 @@ 0x00000000 0x00000000 - - CW.GPIO_CTRL[2:0] - 0 - 0 - - - CW.GPIO_CTRL[5:3] - 0 - 0 - CW.GPIO_CTRL[7:6] 0 @@ -134,11 +99,6 @@ 0 0 - - CW.HW_CTRL[0] - 0 - 0 - CW.HW_CTRL[5] 0 @@ -164,21 +124,6 @@ 0 0 - - CW.WK_CTRL_2[0] - 1 - 1 - - - CW.WK_CTRL_2[1] - 1 - 1 - - - CW.WK_CTRL_2[2] - 1 - 1 - CW.WK_FLT_CTRL[1:0] 0 @@ -279,50 +224,105 @@ 0 0 - - UI.VARIANT - 3 - 3 - - - CW.M_S_CTRL[4:3] - 1 - 1 - CW.BUS_CTRL_1[2:0] 3 3 - - CW.BUS_CTRL_1[4:3] - 3 - 3 - - - CW.WD_CTRL[2:0] - 6 - 6 - CW.HW_CTRL[7] 1 + 0 + + + CW.BUS_CTRL_1[4:3] + 0 + 0 + + + UI.VARIANT + 5 + 5 + + + CW.GPIO_CTRL[2:0] + 4 + 4 + + + CW.GPIO_CTRL[5:3] + 4 + 4 + + + CW.M_S_CTRL[2] + 1 + 1 + + + CW.M_S_CTRL[4:3] + 3 + 3 + + + CW.HW_CTRL[3] + 1 + 1 + + + CW.BUS_CTRL_1[5] + 0 + 0 + + + CW.BUS_CTRL_1[7] + 1 + 1 + + + CW.SWK_BTL2_CTRL[5:0] + 52 + 52 + + + CW.HW_CTRL[0] + 1 1 + + CW.WD_CTRL[2:0] + 4 + 4 + + + CW.WK_CTRL_2[0] + 0 + 0 + + + CW.WK_CTRL_2[1] + 0 + 0 + + + CW.WK_CTRL_2[2] + 0 + 0 + CW.WK_PUPD_CTRL[1:0] - 3 - 3 + 0 + 0 CW.WK_PUPD_CTRL[3:2] - 3 - 3 + 0 + 0 CW.WK_PUPD_CTRL[5:4] - 3 - 3 + 0 + 0 \ No newline at end of file diff --git a/firmware/src/TouchPanel/TouchPanel.c b/firmware/src/TouchPanel/TouchPanel.c index 9c57c80..fa1dee1 100644 --- a/firmware/src/TouchPanel/TouchPanel.c +++ b/firmware/src/TouchPanel/TouchPanel.c @@ -534,7 +534,7 @@ PanelPress_LevelType TouchPanel_PressLevelRead(void) boolean TouchSurface_is_TouchActive(void) { boolean ret = FALSE; - if (TouchPanel_SurfaceStatus & TOUCH_ACTIVE && CurrentPosition>0 && CurrentPosition<9) + if ((TouchPanel_SurfaceStatus & TOUCH_ACTIVE) && (CurrentPosition>0 && CurrentPosition<9)) { ret = TRUE; } @@ -557,7 +557,7 @@ boolean TouchButton_is_TouchActive(Buttons_ChType BtId) Buttons_SignalType TouchSurface_XY_StsRead(void) { Buttons_SignalType XY_Sts = BUTTON_RELEASE; - if (TouchPanel_SurfaceStatus & TOUCH_ACTIVE && CurrentPosition>0 && CurrentPosition<9) + if ((TouchPanel_SurfaceStatus & TOUCH_ACTIVE) && (CurrentPosition>0 && CurrentPosition<9)) { switch (TouchPanel_PressLevel) @@ -589,8 +589,8 @@ static PanelPress_LevelType TouchPanel_PressCheck(void) // static uint16 ForceMcount = 0; // static uint16 ForceLcount = 0; - static uint16 tempForcePress = 0xffff; - static uint16 tempForceRelease = 0xffff; + uint16 tempForcePress = 0xffff; + uint16 tempForceRelease = 0xffff; uint16 RawData = 0; uint16 temp_RawData = 0; diff --git a/firmware/src/main.c b/firmware/src/main.c index 899195b..ad4f2ba 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -154,8 +154,8 @@ uint8_t CanBufQueryDataByte(uint8_t hdl, uint8_t index) void CAN_Rx_FIFO0_CALLBACK(uint8_t numberOfMessage, uintptr_t context) { uint8_t MessageNumer = 0; - CAN1_MessageReceiveFifo(CAN_RX_FIFO_0, numberOfMessage, (CAN_RX_BUFFER *)canRxBuffer); - CanRxBuf_t = (CAN_RX_BUFFER *)canRxBuffer; + CAN1_MessageReceiveFifo(CAN_RX_FIFO_0, numberOfMessage, (CAN_RX_BUFFER *)(uintptr_t)canRxBuffer); + CanRxBuf_t = (CAN_RX_BUFFER *)(uintptr_t)canRxBuffer; for (; MessageNumer < numberOfMessage; MessageNumer++) { Received_buf[MessageNumer].id = READ_ID(CanRxBuf_t[MessageNumer].id); @@ -175,7 +175,7 @@ void CanTx(t_can_handler can_handler, bool notif, uint32_t idtp, uint16_t len, t uint8_t loop_count = 0; memset(canTxBuffer, 0x00, CAN1_TX_FIFO_BUFFER_ELEMENT_SIZE); - CanTxBuffer = (CAN_TX_BUFFER *)canTxBuffer; + CanTxBuffer = (CAN_TX_BUFFER *)(uintptr_t)canTxBuffer; CanTxBuffer->id = WRITE_ID(idtp); CanTxBuffer->dlc = len; for (loop_count = 0; loop_count < len; loop_count++)