diff --git a/cva_asw_m0146/settings/cva_asw_m0146.dnx b/cva_asw_m0146/settings/cva_asw_m0146.dnx
index e4ef483..1ea9ab8 100644
--- a/cva_asw_m0146/settings/cva_asw_m0146.dnx
+++ b/cva_asw_m0146/settings/cva_asw_m0146.dnx
@@ -25,8 +25,8 @@
D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\config\debugger\CVAChip\CVM0144.ddf
- 0
1
+ 0
1315671368
diff --git a/cva_asw_m0146/src/CANmatrix/dbc/DMK-RP-01_CAN_V0.1.dbc b/cva_asw_m0146/src/CANmatrix/dbc/DMK-RP-01_CAN_V0.1.dbc
index 156a7ae..bf23e19 100644
--- a/cva_asw_m0146/src/CANmatrix/dbc/DMK-RP-01_CAN_V0.1.dbc
+++ b/cva_asw_m0146/src/CANmatrix/dbc/DMK-RP-01_CAN_V0.1.dbc
@@ -120,6 +120,14 @@ BO_ 769 SCM_STATE: 8 SCM
SG_ MOTOR_HG_STATE : 0|2@1+ (1,0) [0|0] "" PANEL
BO_ 513 Panel_Key: 8 PANEL
+ SG_ KEY_TJ_ZD_R_PLUS : 46|1@1+ (1,0) [0|0] "" SCM
+ SG_ KEY_TJ_ZD_R_MINUS : 47|1@1+ (1,0) [0|0] "" SCM
+ SG_ KEY_TJ_ZD_L_PLUS : 44|1@1+ (1,0) [0|0] "" SCM
+ SG_ KEY_TJ_ZD_L_MINUS : 45|1@1+ (1,0) [0|0] "" SCM
+ SG_ KEY_TJ_KB_U_PLUS : 40|1@1+ (1,0) [0|0] "" SCM
+ SG_ KEY_TJ_KB_U_MINUS : 41|1@1+ (1,0) [0|0] "" SCM
+ SG_ KEY_TJ_KB_D_PLUS : 42|1@1+ (1,0) [0|0] "" SCM
+ SG_ KEY_TJ_KB_D_MINUS : 43|1@1+ (1,0) [0|0] "" SCM
SG_ KEY_ZY_U : 1|1@1+ (1,0) [0|0] "" SCM
SG_ KEY_ZY_MSSG : 20|1@1+ (1,0) [0|0] "" SCM
SG_ KEY_ZY_HEAT : 17|1@1+ (1,0) [0|0] "" SCM
@@ -248,6 +256,14 @@ VAL_ 769 MOTOR_TZ_STATE 3 "FAULT" 2 "ACT_CCW" 1 "ACT_CW" 0 "NO_ACT" ;
VAL_ 769 MOTOR_TT_STATE 3 "FAULT" 2 "ACT_CCW" 1 "ACT_CW" 0 "NO_ACT" ;
VAL_ 769 MOTOR_KB_STATE 3 "FAULT" 2 "ACT_CCW" 1 "ACT_CW" 0 "NO_ACT" ;
VAL_ 769 MOTOR_HG_STATE 3 "FAULT" 2 "ACT_CCW" 1 "ACT_CW" 0 "NO_ACT" ;
+VAL_ 513 KEY_TJ_ZD_R_PLUS 1 "PRESSED" 0 "NOT_PRESS" ;
+VAL_ 513 KEY_TJ_ZD_R_MINUS 1 "PRESSED" 0 "NOT_PRESS" ;
+VAL_ 513 KEY_TJ_ZD_L_PLUS 1 "PRESSED" 0 "NOT_PRESS" ;
+VAL_ 513 KEY_TJ_ZD_L_MINUS 1 "PRESSED" 0 "NOT_PRESS" ;
+VAL_ 513 KEY_TJ_KB_U_PLUS 1 "PRESSED" 0 "NOT_PRESS" ;
+VAL_ 513 KEY_TJ_KB_U_MINUS 1 "PRESSED" 0 "NOT_PRESS" ;
+VAL_ 513 KEY_TJ_KB_D_PLUS 1 "PRESSED" 0 "NOT_PRESS" ;
+VAL_ 513 KEY_TJ_KB_D_MINUS 1 "PRESSED" 0 "NOT_PRESS" ;
VAL_ 513 KEY_ZY_U 1 "PRESSED" 0 "NOT_PRESS" ;
VAL_ 513 KEY_ZY_MSSG 1 "PRESSED" 0 "NOT_PRESS" ;
VAL_ 513 KEY_ZY_HEAT 1 "PRESSED" 0 "NOT_PRESS" ;
diff --git a/cva_asw_m0146/src/CANmatrix/lib/canmatrix-fmon.h b/cva_asw_m0146/src/CANmatrix/lib/canmatrix-fmon.h
index 8a35505..4f1f13b 100644
--- a/cva_asw_m0146/src/CANmatrix/lib/canmatrix-fmon.h
+++ b/cva_asw_m0146/src/CANmatrix/lib/canmatrix-fmon.h
@@ -1,5 +1,5 @@
// Generator version : v3.1
-// Generation time : 2024.12.17 14:33:44
+// Generation time : 2025.04.01 15:44:06
// DBC filename : DMK-RP-01_CAN_V0.1.dbc
#pragma once
diff --git a/cva_asw_m0146/src/CANmatrix/lib/canmatrix.c b/cva_asw_m0146/src/CANmatrix/lib/canmatrix.c
index b76189b..7a5c7f1 100644
--- a/cva_asw_m0146/src/CANmatrix/lib/canmatrix.c
+++ b/cva_asw_m0146/src/CANmatrix/lib/canmatrix.c
@@ -71,6 +71,14 @@ uint32_t Unpack_Panel_Key_CANmatrix(Panel_Key_t* _m, const uint8_t* _d, uint8_t
_m->KEY_MEMORY_SET = (uint8_t) ( ((_d[3] >> 3U) & (0x01U)) );
_m->KEY_ZY_FLAT = (uint8_t) ( (_d[4] & (0x01U)) );
_m->KEY_RESET = (uint8_t) ( ((_d[4] >> 1U) & (0x01U)) );
+ _m->KEY_TJ_KB_U_PLUS = (uint8_t) ( (_d[5] & (0x01U)) );
+ _m->KEY_TJ_KB_U_MINUS = (uint8_t) ( ((_d[5] >> 1U) & (0x01U)) );
+ _m->KEY_TJ_KB_D_PLUS = (uint8_t) ( ((_d[5] >> 2U) & (0x01U)) );
+ _m->KEY_TJ_KB_D_MINUS = (uint8_t) ( ((_d[5] >> 3U) & (0x01U)) );
+ _m->KEY_TJ_ZD_L_PLUS = (uint8_t) ( ((_d[5] >> 4U) & (0x01U)) );
+ _m->KEY_TJ_ZD_L_MINUS = (uint8_t) ( ((_d[5] >> 5U) & (0x01U)) );
+ _m->KEY_TJ_ZD_R_PLUS = (uint8_t) ( ((_d[5] >> 6U) & (0x01U)) );
+ _m->KEY_TJ_ZD_R_MINUS = (uint8_t) ( ((_d[5] >> 7U) & (0x01U)) );
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < Panel_Key_DLC);
@@ -94,6 +102,7 @@ uint32_t Pack_Panel_Key_CANmatrix(Panel_Key_t* _m, __CoderDbcCanFrame_t__* cfram
cframe->Data[2] |= (uint8_t) ( (_m->KEY_ZY_FAN & (0x01U)) | ((_m->KEY_ZY_HEAT & (0x01U)) << 1U) | ((_m->KEY_ZY_MSSG & (0x01U)) << 4U) );
cframe->Data[3] |= (uint8_t) ( (_m->KEY_MEMORY_3 & (0x01U)) | ((_m->KEY_MEMORY_2 & (0x01U)) << 1U) | ((_m->KEY_MEMORY_1 & (0x01U)) << 2U) | ((_m->KEY_MEMORY_SET & (0x01U)) << 3U) );
cframe->Data[4] |= (uint8_t) ( (_m->KEY_ZY_FLAT & (0x01U)) | ((_m->KEY_RESET & (0x01U)) << 1U) );
+ cframe->Data[5] |= (uint8_t) ( (_m->KEY_TJ_KB_U_PLUS & (0x01U)) | ((_m->KEY_TJ_KB_U_MINUS & (0x01U)) << 1U) | ((_m->KEY_TJ_KB_D_PLUS & (0x01U)) << 2U) | ((_m->KEY_TJ_KB_D_MINUS & (0x01U)) << 3U) | ((_m->KEY_TJ_ZD_L_PLUS & (0x01U)) << 4U) | ((_m->KEY_TJ_ZD_L_MINUS & (0x01U)) << 5U) | ((_m->KEY_TJ_ZD_R_PLUS & (0x01U)) << 6U) | ((_m->KEY_TJ_ZD_R_MINUS & (0x01U)) << 7U) );
cframe->MsgId = (uint32_t) Panel_Key_CANID;
cframe->DLC = (uint8_t) Panel_Key_DLC;
@@ -112,6 +121,7 @@ uint32_t Pack_Panel_Key_CANmatrix(Panel_Key_t* _m, uint8_t* _d, uint8_t* _len, u
_d[2] |= (uint8_t) ( (_m->KEY_ZY_FAN & (0x01U)) | ((_m->KEY_ZY_HEAT & (0x01U)) << 1U) | ((_m->KEY_ZY_MSSG & (0x01U)) << 4U) );
_d[3] |= (uint8_t) ( (_m->KEY_MEMORY_3 & (0x01U)) | ((_m->KEY_MEMORY_2 & (0x01U)) << 1U) | ((_m->KEY_MEMORY_1 & (0x01U)) << 2U) | ((_m->KEY_MEMORY_SET & (0x01U)) << 3U) );
_d[4] |= (uint8_t) ( (_m->KEY_ZY_FLAT & (0x01U)) | ((_m->KEY_RESET & (0x01U)) << 1U) );
+ _d[5] |= (uint8_t) ( (_m->KEY_TJ_KB_U_PLUS & (0x01U)) | ((_m->KEY_TJ_KB_U_MINUS & (0x01U)) << 1U) | ((_m->KEY_TJ_KB_D_PLUS & (0x01U)) << 2U) | ((_m->KEY_TJ_KB_D_MINUS & (0x01U)) << 3U) | ((_m->KEY_TJ_ZD_L_PLUS & (0x01U)) << 4U) | ((_m->KEY_TJ_ZD_L_MINUS & (0x01U)) << 5U) | ((_m->KEY_TJ_ZD_R_PLUS & (0x01U)) << 6U) | ((_m->KEY_TJ_ZD_R_MINUS & (0x01U)) << 7U) );
*_len = (uint8_t) Panel_Key_DLC;
*_ide = (uint8_t) Panel_Key_IDE;
diff --git a/cva_asw_m0146/src/CANmatrix/lib/canmatrix.h b/cva_asw_m0146/src/CANmatrix/lib/canmatrix.h
index b9c0d63..8884e02 100644
--- a/cva_asw_m0146/src/CANmatrix/lib/canmatrix.h
+++ b/cva_asw_m0146/src/CANmatrix/lib/canmatrix.h
@@ -281,6 +281,94 @@ extern "C" {
#endif
+// Value tables for @KEY_TJ_KB_U_PLUS signal
+
+#ifndef KEY_TJ_KB_U_PLUS_Panel_Key_PRESSED
+#define KEY_TJ_KB_U_PLUS_Panel_Key_PRESSED (1)
+#endif
+
+#ifndef KEY_TJ_KB_U_PLUS_Panel_Key_NOT_PRESS
+#define KEY_TJ_KB_U_PLUS_Panel_Key_NOT_PRESS (0)
+#endif
+
+
+// Value tables for @KEY_TJ_KB_U_MINUS signal
+
+#ifndef KEY_TJ_KB_U_MINUS_Panel_Key_PRESSED
+#define KEY_TJ_KB_U_MINUS_Panel_Key_PRESSED (1)
+#endif
+
+#ifndef KEY_TJ_KB_U_MINUS_Panel_Key_NOT_PRESS
+#define KEY_TJ_KB_U_MINUS_Panel_Key_NOT_PRESS (0)
+#endif
+
+
+// Value tables for @KEY_TJ_KB_D_PLUS signal
+
+#ifndef KEY_TJ_KB_D_PLUS_Panel_Key_PRESSED
+#define KEY_TJ_KB_D_PLUS_Panel_Key_PRESSED (1)
+#endif
+
+#ifndef KEY_TJ_KB_D_PLUS_Panel_Key_NOT_PRESS
+#define KEY_TJ_KB_D_PLUS_Panel_Key_NOT_PRESS (0)
+#endif
+
+
+// Value tables for @KEY_TJ_KB_D_MINUS signal
+
+#ifndef KEY_TJ_KB_D_MINUS_Panel_Key_PRESSED
+#define KEY_TJ_KB_D_MINUS_Panel_Key_PRESSED (1)
+#endif
+
+#ifndef KEY_TJ_KB_D_MINUS_Panel_Key_NOT_PRESS
+#define KEY_TJ_KB_D_MINUS_Panel_Key_NOT_PRESS (0)
+#endif
+
+
+// Value tables for @KEY_TJ_ZD_L_PLUS signal
+
+#ifndef KEY_TJ_ZD_L_PLUS_Panel_Key_PRESSED
+#define KEY_TJ_ZD_L_PLUS_Panel_Key_PRESSED (1)
+#endif
+
+#ifndef KEY_TJ_ZD_L_PLUS_Panel_Key_NOT_PRESS
+#define KEY_TJ_ZD_L_PLUS_Panel_Key_NOT_PRESS (0)
+#endif
+
+
+// Value tables for @KEY_TJ_ZD_L_MINUS signal
+
+#ifndef KEY_TJ_ZD_L_MINUS_Panel_Key_PRESSED
+#define KEY_TJ_ZD_L_MINUS_Panel_Key_PRESSED (1)
+#endif
+
+#ifndef KEY_TJ_ZD_L_MINUS_Panel_Key_NOT_PRESS
+#define KEY_TJ_ZD_L_MINUS_Panel_Key_NOT_PRESS (0)
+#endif
+
+
+// Value tables for @KEY_TJ_ZD_R_PLUS signal
+
+#ifndef KEY_TJ_ZD_R_PLUS_Panel_Key_PRESSED
+#define KEY_TJ_ZD_R_PLUS_Panel_Key_PRESSED (1)
+#endif
+
+#ifndef KEY_TJ_ZD_R_PLUS_Panel_Key_NOT_PRESS
+#define KEY_TJ_ZD_R_PLUS_Panel_Key_NOT_PRESS (0)
+#endif
+
+
+// Value tables for @KEY_TJ_ZD_R_MINUS signal
+
+#ifndef KEY_TJ_ZD_R_MINUS_Panel_Key_PRESSED
+#define KEY_TJ_ZD_R_MINUS_Panel_Key_PRESSED (1)
+#endif
+
+#ifndef KEY_TJ_ZD_R_MINUS_Panel_Key_NOT_PRESS
+#define KEY_TJ_ZD_R_MINUS_Panel_Key_NOT_PRESS (0)
+#endif
+
+
typedef struct
{
#ifdef CANMATRIX_USE_BITS_SIGNAL
@@ -369,6 +457,38 @@ typedef struct
// 0 : "NOT_PRESS"
uint8_t KEY_RESET : 1; // Bits= 1
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_KB_U_PLUS : 1; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_KB_U_MINUS : 1; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_KB_D_PLUS : 1; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_KB_D_MINUS : 1; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_ZD_L_PLUS : 1; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_ZD_L_MINUS : 1; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_ZD_R_PLUS : 1; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_ZD_R_MINUS : 1; // Bits= 1
+
#else
// 1 : "PRESSED"
@@ -455,6 +575,38 @@ typedef struct
// 0 : "NOT_PRESS"
uint8_t KEY_RESET; // Bits= 1
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_KB_U_PLUS; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_KB_U_MINUS; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_KB_D_PLUS; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_KB_D_MINUS; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_ZD_L_PLUS; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_ZD_L_MINUS; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_ZD_R_PLUS; // Bits= 1
+
+ // 1 : "PRESSED"
+ // 0 : "NOT_PRESS"
+ uint8_t KEY_TJ_ZD_R_MINUS; // Bits= 1
+
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_DIAG_MONITORS
diff --git a/cva_asw_m0146/src/CANmatrix/usr/canmatrix-fmon.c b/cva_asw_m0146/src/CANmatrix/usr/canmatrix-fmon.c
index 1a0506f..da1325a 100644
--- a/cva_asw_m0146/src/CANmatrix/usr/canmatrix-fmon.c
+++ b/cva_asw_m0146/src/CANmatrix/usr/canmatrix-fmon.c
@@ -1,6 +1,6 @@
// Generator version : v3.1
-// Generation time : 2024.12.07 08:59:44
-// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
+// Generation time : 2025.04.01 15:44:06
+// DBC filename : DMK-RP-01_CAN_V0.1.dbc
#include "canmatrix-fmon.h"
#ifdef CANMATRIX_USE_DIAG_MONITORS
diff --git a/cva_asw_m0146/src/FanHeat.c b/cva_asw_m0146/src/FanHeat.c
index 0765dc4..49744f1 100644
--- a/cva_asw_m0146/src/FanHeat.c
+++ b/cva_asw_m0146/src/FanHeat.c
@@ -43,7 +43,7 @@ void FanHeatInit(void)
HeatDutyCounter = 0;
}
-void FanHeatMainTaks(void)//10ms
+void FanHeatMainTask(void)//10ms
{
if (getKeyPressFlag(KEY_HEAT) == KEY_PRESSED)
{
diff --git a/cva_asw_m0146/src/FanHeat.h b/cva_asw_m0146/src/FanHeat.h
index 136a41c..b5208b8 100644
--- a/cva_asw_m0146/src/FanHeat.h
+++ b/cva_asw_m0146/src/FanHeat.h
@@ -26,7 +26,7 @@
/*******************************************************************************
* the functions
******************************************************************************/
-void FanHeatMainTaks(void);
+void FanHeatMainTask(void);
void FanHeatInit(void);
diff --git a/cva_asw_m0146/src/LIN_Master/LIN_Master.c b/cva_asw_m0146/src/LIN_Master/LIN_Master.c
index 9f5020f..458edb9 100644
--- a/cva_asw_m0146/src/LIN_Master/LIN_Master.c
+++ b/cva_asw_m0146/src/LIN_Master/LIN_Master.c
@@ -95,7 +95,7 @@ static uint8_t linFrameData[LIN_FRAME_NUM][LIN_DATA_SIZE];
static uint8_t linFrameDataBackup[LIN_DATA_SIZE];
static Lin_FrameInfoType linFrameInfoTab[LIN_FRAME_NUM] = {
- {0x10, LIN_FRM_UNCD, 2, LIN_RES_PUB, &linFrameData[0][0], 0x00},
+ {0x10, LIN_FRM_UNCD, 4, LIN_RES_PUB, &linFrameData[0][0], 0x00},
{0x20, LIN_FRM_UNCD, 8, LIN_RES_SUB, &linFrameData[1][0], 0x00},
{0x21, LIN_FRM_UNCD, 8, LIN_RES_SUB, &linFrameData[2][0], 0x00},
{0x30, LIN_FRM_UNCD, 8, LIN_RES_SUB, &linFrameData[3][0], 0x00},
@@ -371,7 +371,7 @@ void LinMasterRxIsrRoutine(void)
{
UartDrv_TxData(&mcu.uartDrv0, linTxData.data[linTxDataCnt]);
linTxDataCnt++;
- if(linTxDataCnt >= linFrameInfoTab[gCurFrameIdx].frameLen)
+ if(linTxDataCnt >= linFrameInfoTab[gCurFrameIdx].frameLen && (linTxDataCnt < 4))
{
UartDrv_TxData(&mcu.uartDrv0, linTxData.checkSum);
linState = LIN_STATE_CHECKSUM;
diff --git a/cva_asw_m0146/src/LIN_Master/SeatMassage.c b/cva_asw_m0146/src/LIN_Master/SeatMassage.c
index a381575..12b6506 100644
--- a/cva_asw_m0146/src/LIN_Master/SeatMassage.c
+++ b/cva_asw_m0146/src/LIN_Master/SeatMassage.c
@@ -15,32 +15,51 @@
******************************************************************************/
typedef struct
{
- // Solenoid Valve 电磁阀
- uint8_t SV1:1;
- uint8_t SV2:1;
- uint8_t SV3:1;
- uint8_t SV4:1;
- uint8_t SV5:1;
- uint8_t SV6:1;
- uint8_t SV7:1;
- uint8_t SV8:1;
+ //坐垫
+ uint8_t ZD_R_MINUS:1;
+ uint8_t ZD_L0:1;
+ uint8_t ZD_L1:1;
+ uint8_t ZD_L2:1;
+ uint8_t ZD_R2:1;
+ uint8_t ZD_R_PLUS:1;
+ uint8_t ZD_L_PLUS:1;
+ uint8_t ZD_L_MINUS:1;
- uint8_t SV9:1;
- uint8_t SV10:1;
- uint8_t SV11:1;
- uint8_t SV12:1;
- uint8_t SV13:1;
- uint8_t SV14:1;
+ uint8_t ZD_R0:1;
+ uint8_t ZD_R1:1;
+ uint8_t ZD_REV1:1;
+ uint8_t ZD_REV2:1;
+ uint8_t ZD_REV3:1;
+ uint8_t ZD_REV4:1;
- uint8_t AP:1;
- uint8_t V2_12V:1;
+ uint8_t ZD_AP:1;
+ uint8_t ZD_V2_12V:1;
+
+ //靠背
+ uint8_t KB_D_PLUS:1;
+ uint8_t KB_U_PLUS:1;
+ uint8_t KB_D_MINUS:1;
+ uint8_t KB_U_MINUS:1;
+ uint8_t KB_L1:1;
+ uint8_t KB_L2:1;
+ uint8_t KB_L3:1;
+ uint8_t KB_L4:1;
+
+ uint8_t KB_R2:1;
+ uint8_t KB_R3:1;
+ uint8_t KB_R4:1;
+ uint8_t KB_L0:1;
+ uint8_t KB_R0:1;
+ uint8_t KB_R1:1;
+
+ uint8_t KB_REV1:1;
+ uint8_t KB_V2_12V:1;
}SM_CTRL_Type;
typedef union
{
- uint8_t rawdata[2];
+ uint8_t rawdata[4];
SM_CTRL_Type msg;
-
}SM_CTRL_Data_Type;
typedef enum
@@ -59,7 +78,8 @@ typedef enum
******************************************************************************/
SM_CTRL_Data_Type SM_CTRL_data;
static SM_state_Type SM_state,SM_last_state;
-
+static uint8_t ZD_DATA_L[3]={0},ZD_DATA_R[3]={0},KB_DATA_L[5]={0},KB_DATA_R[5]={0};
+static uint8_t SM_TJ_Req[4]={0};
/*******************************************************************************
* the const
******************************************************************************/
@@ -74,158 +94,162 @@ static void UpdateLinMsg(SM_CTRL_Data_Type* data)
{
LIN_UpdateTxData(0,0,data->rawdata[0]);
LIN_UpdateTxData(0,1,data->rawdata[1]);
+ LIN_UpdateTxData(0,2,data->rawdata[2]);
+ LIN_UpdateTxData(0,3,data->rawdata[3]);
}
static void SM_OFF_task(void)
{
SM_CTRL_data.rawdata[0] = 0;
SM_CTRL_data.rawdata[1] = 0;
+ SM_CTRL_data.rawdata[2] = 0;
+ SM_CTRL_data.rawdata[3] = 0;
+ for (uint8_t i = 0; i < 4; i++)
+ {
+ if (SM_TJ_Req[i] == SM_TJ_ACT_Plus)
+ {
+ SM_CTRL_data.msg.ZD_AP = 1;
+ break;
+ }
+ }
+ if (SM_TJ_Req[SM_TJ_ZD_L]!=0 || SM_TJ_Req[SM_TJ_ZD_R]!=0 )
+ {
+ SM_CTRL_data.msg.ZD_V2_12V = 1;
+ }
+ else
+ {
+ SM_CTRL_data.msg.ZD_V2_12V = 0;
+ }
+ if (SM_TJ_Req[SM_TJ_KB_U]!=0 || SM_TJ_Req[SM_TJ_KB_D]!=0 )
+ {
+ SM_CTRL_data.msg.KB_V2_12V = 1;
+ }
+ else
+ {
+ SM_CTRL_data.msg.KB_V2_12V = 0;
+ }
+ SM_CTRL_data.msg.KB_U_PLUS = (SM_TJ_Req[SM_TJ_KB_U]==SM_TJ_ACT_Plus?1:0);
+ SM_CTRL_data.msg.KB_U_MINUS = (SM_TJ_Req[SM_TJ_KB_U]==SM_TJ_ACT_Minus?1:0);
+
+ SM_CTRL_data.msg.KB_D_PLUS = (SM_TJ_Req[SM_TJ_KB_D]==SM_TJ_ACT_Plus?1:0);
+ SM_CTRL_data.msg.KB_D_MINUS = (SM_TJ_Req[SM_TJ_KB_D]==SM_TJ_ACT_Minus?1:0);
+
+ SM_CTRL_data.msg.ZD_L_PLUS = (SM_TJ_Req[SM_TJ_ZD_L]==SM_TJ_ACT_Plus?1:0);
+ SM_CTRL_data.msg.ZD_L_MINUS = (SM_TJ_Req[SM_TJ_ZD_L]==SM_TJ_ACT_Minus?1:0);
+
+ SM_CTRL_data.msg.ZD_R_PLUS = (SM_TJ_Req[SM_TJ_ZD_R]==SM_TJ_ACT_Plus?1:0);
+ SM_CTRL_data.msg.ZD_R_MINUS = (SM_TJ_Req[SM_TJ_ZD_R]==SM_TJ_ACT_Minus?1:0);
+
UpdateLinMsg(&SM_CTRL_data);
SM_last_state=SM_state;
}
static void SM_RUN1_task(void)//50ms
{
static uint16_t run_counter;
- static uint8_t runstate;
+ static uint8_t runstate,zd_run_state,kb_run_state;
if(SM_last_state!=SM_state)
{
runstate = 0;
run_counter = 0;
SM_last_state=SM_state;
+ zd_run_state = 0;
+ kb_run_state = 0;
}
- switch (runstate)
+ run_counter++;
+ if (run_counter >= 100)
{
- case 0:
- SM_CTRL_data.rawdata[0] = 0x01;
- SM_CTRL_data.rawdata[1] = 0x00;
- run_counter++;
- if (run_counter > 60)
+ run_counter = 0;
+ zd_run_state++;
+ if (zd_run_state >= 3)
{
- run_counter = 0;
- runstate++;
+ zd_run_state = 0;
}
- break;
- case 1:
- SM_CTRL_data.rawdata[0] = 0x02;
- SM_CTRL_data.rawdata[1] = 0x00;
- run_counter++;
- if (run_counter > 60)
+
+ kb_run_state++;
+ if (kb_run_state >= 5)
{
- run_counter = 0;
- runstate++;
+ kb_run_state = 0;
}
- break;
- case 2:
- SM_CTRL_data.rawdata[0] = 0x04;
- SM_CTRL_data.rawdata[1] = 0x00;
- run_counter++;
- if (run_counter > 60)
- {
- run_counter = 0;
- runstate++;
- }
- break;
- case 3:
- SM_CTRL_data.rawdata[0] = 0x08;
- SM_CTRL_data.rawdata[1] = 0x00;
- run_counter++;
- if (run_counter > 60)
- {
- run_counter = 0;
- runstate++;
- }
- break;
- case 4:
- SM_CTRL_data.rawdata[0] = 0x10;
- SM_CTRL_data.rawdata[1] = 0x00;
- run_counter++;
- if (run_counter > 60)
- {
- run_counter = 0;
- runstate++;
- }
- break;
- case 5:
- SM_CTRL_data.rawdata[0] = 0x20;
- SM_CTRL_data.rawdata[1] = 0x00;
- run_counter++;
- if (run_counter > 60)
- {
- run_counter = 0;
- runstate++;
- }
- break;
- case 6:
- SM_CTRL_data.rawdata[0] = 0x40;
- SM_CTRL_data.rawdata[1] = 0x00;
- run_counter++;
- if (run_counter > 60)
- {
- run_counter = 0;
- runstate++;
- }
- break;
- case 7:
- SM_CTRL_data.rawdata[0] = 0x80;
- SM_CTRL_data.rawdata[1] = 0x00;
- run_counter++;
- if (run_counter > 60)
- {
- run_counter = 0;
- runstate++;
- }
- break;
- case 8:
- SM_CTRL_data.rawdata[0] = 0x00;
- SM_CTRL_data.rawdata[1] = 0x01;
- run_counter++;
- if (run_counter > 60)
- {
- run_counter = 0;
- runstate++;
- }
- break;
- case 9:
- SM_CTRL_data.rawdata[0] = 0x00;
- SM_CTRL_data.rawdata[1] = 0x02;
- run_counter++;
- if (run_counter > 60)
- {
- run_counter = 0;
- runstate++;
- }
- break;
- default:
- runstate = 0;
- break;
}
- SM_CTRL_data.msg.V2_12V = 1;
- SM_CTRL_data.msg.AP = 1;
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ if (i == zd_run_state)
+ {
+ ZD_DATA_L[i] = 1;
+ ZD_DATA_R[i] = 1;
+ }
+ else
+ {
+ ZD_DATA_L[i] = 0;
+ ZD_DATA_R[i] = 0;
+ }
+ }
+ for (uint8_t i = 0; i < 5; i++)
+ {
+ if (i == kb_run_state)
+ {
+ KB_DATA_L[i] = 1;
+ KB_DATA_R[i] = 1;
+ }
+ else
+ {
+ KB_DATA_L[i] = 0;
+ KB_DATA_R[i] = 0;
+ }
+ }
+#if 0
+ SM_CTRL_data.msg.ZD_L0 = ZD_DATA_L[0];
+ SM_CTRL_data.msg.ZD_L1 = ZD_DATA_L[1];
+ SM_CTRL_data.msg.ZD_L2 = ZD_DATA_L[2];
+ SM_CTRL_data.msg.ZD_R0 = ZD_DATA_R[0];
+ SM_CTRL_data.msg.ZD_R1 = ZD_DATA_R[1];
+ SM_CTRL_data.msg.ZD_R2 = ZD_DATA_R[2];
+#endif
+#if 1
+ SM_CTRL_data.msg.KB_L0 = KB_DATA_L[0];
+ SM_CTRL_data.msg.KB_L1 = KB_DATA_L[1];
+ SM_CTRL_data.msg.KB_L2 = KB_DATA_L[2];
+ SM_CTRL_data.msg.KB_L3 = KB_DATA_L[3];
+ SM_CTRL_data.msg.KB_L4 = KB_DATA_L[4];
+ SM_CTRL_data.msg.KB_R0 = KB_DATA_R[0];
+ SM_CTRL_data.msg.KB_R1 = KB_DATA_R[1];
+ SM_CTRL_data.msg.KB_R2 = KB_DATA_R[2];
+ SM_CTRL_data.msg.KB_R3 = KB_DATA_R[3];
+ SM_CTRL_data.msg.KB_R4 = KB_DATA_R[4];
+ SM_CTRL_data.msg.KB_V2_12V = 1;
+#endif
+ SM_CTRL_data.msg.ZD_V2_12V = 1;
+ SM_CTRL_data.msg.ZD_AP = 1;
+
UpdateLinMsg(&SM_CTRL_data);
}
static void SM_RUN2_task(void)
{
static uint16_t run_counter;
static uint8_t runstate;
- SM_CTRL_data.msg.V2_12V = 1;
- SM_CTRL_data.msg.AP = 1;
+ //SM_CTRL_data.msg.V2_12V = 1;
+ //SM_CTRL_data.msg.AP = 1;
UpdateLinMsg(&SM_CTRL_data);
}
static void SM_RUN3_task(void)
{
static uint16_t run_counter;
static uint8_t runstate;
- SM_CTRL_data.msg.V2_12V = 1;
- SM_CTRL_data.msg.AP = 1;
+ //SM_CTRL_data.msg.V2_12V = 1;
+ //SM_CTRL_data.msg.AP = 1;
UpdateLinMsg(&SM_CTRL_data);
}
void SeatMassage_Init(void)
{
- SM_CTRL_data.msg.SV1 = 1;
- SM_CTRL_data.msg.AP = 1;
+ for (uint8_t i = 0; i < 4; i++)
+ {
+ SM_CTRL_data.rawdata[i] = 0;
+ }
+
UpdateLinMsg(&SM_CTRL_data);
+
}
void SeatMassage_task(void)
@@ -286,6 +310,14 @@ void SeatMassage_ReqNext(void)
{
SM_state = SM_OFF;
}
-
-
-}
\ No newline at end of file
+}
+
+void SeatMassage_TJ_Req(SM_TJ_ITEM_Type item,SM_TJ_ACT_Type act)
+{
+ if (item >= SM_TJ_ITEM_NUM || act >= SM_TJ_ACT_NUM)
+ {
+ return;//error
+ }
+
+ SM_TJ_Req[item] = act;
+}
diff --git a/cva_asw_m0146/src/LIN_Master/SeatMassage.h b/cva_asw_m0146/src/LIN_Master/SeatMassage.h
index d9534ac..2898441 100644
--- a/cva_asw_m0146/src/LIN_Master/SeatMassage.h
+++ b/cva_asw_m0146/src/LIN_Master/SeatMassage.h
@@ -15,8 +15,22 @@
/*******************************************************************************
* the typedefs
******************************************************************************/
+typedef enum
+{
+ SM_TJ_KB_U,
+ SM_TJ_KB_D,
+ SM_TJ_ZD_L,
+ SM_TJ_ZD_R,
+ SM_TJ_ITEM_NUM,
+}SM_TJ_ITEM_Type;
+typedef enum
+{
+ SM_TJ_ACT_None,
+ SM_TJ_ACT_Plus,
+ SM_TJ_ACT_Minus,
-
+ SM_TJ_ACT_NUM,
+}SM_TJ_ACT_Type;
/*******************************************************************************
* the globals
@@ -32,6 +46,8 @@ void SeatMassage_ReqOFF(void);
void SeatMassage_ReqRun(uint8_t state);
void SeatMassage_task(void);
void SeatMassage_ReqNext(void);
+void SeatMassage_TJ_Req(SM_TJ_ITEM_Type item,SM_TJ_ACT_Type act);
+
#endif
diff --git a/cva_asw_m0146/src/MotorCtrl.c b/cva_asw_m0146/src/MotorCtrl.c
index be813cd..2f7782c 100644
--- a/cva_asw_m0146/src/MotorCtrl.c
+++ b/cva_asw_m0146/src/MotorCtrl.c
@@ -746,7 +746,7 @@ static uint16_t getOverCurrentTh(uint8_t ch)
return th;
}
-void HallDetecte(void)
+void HallDetect(void)
{
static uint8_t HallLastState[6],HallDelay[6];
uint8_t i,hallstate;
diff --git a/cva_asw_m0146/src/MotorCtrl.h b/cva_asw_m0146/src/MotorCtrl.h
index 209dc93..f1ed9b8 100644
--- a/cva_asw_m0146/src/MotorCtrl.h
+++ b/cva_asw_m0146/src/MotorCtrl.h
@@ -40,7 +40,7 @@ void setMotorTarget(uint8_t motorid,uint16_t target);
void StartAutoCal(void);
void StopAutoCal(void);
void CurrentDetect(void);
-void HallDetecte(void);
+void HallDetect(void);
void MotorMemoryGet(MOTOR_MEMORY_Type id);
void MotorMemorySet(MOTOR_MEMORY_Type id);
diff --git a/cva_asw_m0146/src/appTask.c b/cva_asw_m0146/src/appTask.c
index bbd5719..cfa23a0 100644
--- a/cva_asw_m0146/src/appTask.c
+++ b/cva_asw_m0146/src/appTask.c
@@ -111,7 +111,7 @@ void appTask(void)
gSysTick1sCnt++;
MsgTask(&udsObj);
CurrentDetect();
- HallDetecte();
+ HallDetect();
if (gSystick1msCnt % 5 == 0)
{
KeyScanTask();
@@ -123,7 +123,7 @@ void appTask(void)
{
LIN_Master_task();
MotorCtrl_Maintask();
- FanHeatMainTaks();
+ FanHeatMainTask();
}
if (gSystick1msCnt % 50 == 0)
diff --git a/cva_asw_m0146/src/extern.c b/cva_asw_m0146/src/extern.c
index d9c20c8..d67b72e 100644
--- a/cva_asw_m0146/src/extern.c
+++ b/cva_asw_m0146/src/extern.c
@@ -51,7 +51,7 @@ __root const app_CfgInfoType app_info = {
.sAswHeader = ASW_HEAD_MASK,//0x00010400
.appBuildTime = __TIME__,//0x00010404
.appBuildDate = __DATE__,//0x00010410
- .appSW_VERSION = "SW0101_20241220",
+ .appSW_VERSION = "SW0101_20250401",
.appSW_Debug = 0xff,//0x55为量产模式,其它为debug模式
};
diff --git a/cva_asw_m0146/src/key.c b/cva_asw_m0146/src/key.c
index 471d557..2c724fa 100644
--- a/cva_asw_m0146/src/key.c
+++ b/cva_asw_m0146/src/key.c
@@ -130,6 +130,22 @@ static uint8_t GetSigState(KEY_ID_type key_id)
return scm_canmatrix_rx.Panel_Key.KEY_RESET;
case KEY_SM:
return scm_canmatrix_rx.Panel_Key.KEY_ZY_MSSG;
+ case KEY_TJ_KB_U_PLUS:
+ return scm_canmatrix_rx.Panel_Key.KEY_TJ_KB_U_PLUS;
+ case KEY_TJ_KB_U_MINUS:
+ return scm_canmatrix_rx.Panel_Key.KEY_TJ_KB_U_MINUS;
+ case KEY_TJ_KB_D_PLUS:
+ return scm_canmatrix_rx.Panel_Key.KEY_TJ_KB_D_PLUS;
+ case KEY_TJ_KB_D_MINUS:
+ return scm_canmatrix_rx.Panel_Key.KEY_TJ_KB_D_MINUS;
+ case KEY_TJ_ZD_L_PLUS:
+ return scm_canmatrix_rx.Panel_Key.KEY_TJ_ZD_L_PLUS;
+ case KEY_TJ_ZD_L_MINUS:
+ return scm_canmatrix_rx.Panel_Key.KEY_TJ_ZD_L_MINUS;
+ case KEY_TJ_ZD_R_PLUS:
+ return scm_canmatrix_rx.Panel_Key.KEY_TJ_ZD_R_PLUS;
+ case KEY_TJ_ZD_R_MINUS:
+ return scm_canmatrix_rx.Panel_Key.KEY_TJ_ZD_R_MINUS;
default:
return 0;
}
@@ -268,8 +284,60 @@ void KeyProTask(void)//5ms
{
SeatMassage_ReqNext();
}
+
+ //座椅气垫调节
+ if (getKeyPressFlag(KEY_TJ_KB_U_PLUS) == KEY_PRESSED)
+ {
+ SeatMassage_TJ_Req(SM_TJ_KB_U,SM_TJ_ACT_Plus);
+ }
+ if (getKeyPressFlag(KEY_TJ_KB_U_MINUS) == KEY_PRESSED)
+ {
+ SeatMassage_TJ_Req(SM_TJ_KB_U,SM_TJ_ACT_Minus);
+ }
+
+ if (getKeyPressFlag(KEY_TJ_KB_D_PLUS) == KEY_PRESSED)
+ {
+ SeatMassage_TJ_Req(SM_TJ_KB_D,SM_TJ_ACT_Plus);
+ }
+ if (getKeyPressFlag(KEY_TJ_KB_D_MINUS) == KEY_PRESSED)
+ {
+ SeatMassage_TJ_Req(SM_TJ_KB_D,SM_TJ_ACT_Minus);
+ }
+ if (getKeyPressFlag(KEY_TJ_ZD_L_PLUS) == KEY_PRESSED)
+ {
+ SeatMassage_TJ_Req(SM_TJ_ZD_L,SM_TJ_ACT_Plus);
+ }
+ if (getKeyPressFlag(KEY_TJ_ZD_L_MINUS) == KEY_PRESSED)
+ {
+ SeatMassage_TJ_Req(SM_TJ_ZD_L,SM_TJ_ACT_Minus);
+ }
+ if (getKeyPressFlag(KEY_TJ_ZD_R_PLUS) == KEY_PRESSED)
+ {
+ SeatMassage_TJ_Req(SM_TJ_ZD_R,SM_TJ_ACT_Plus);
+ }
+ if (getKeyPressFlag(KEY_TJ_ZD_R_MINUS) == KEY_PRESSED)
+ {
+ SeatMassage_TJ_Req(SM_TJ_ZD_R,SM_TJ_ACT_Minus);
+ }
+
+ if (getKeyReleaseFlag(KEY_TJ_KB_U_PLUS)==KEY_PRESSED || getKeyReleaseFlag(KEY_TJ_KB_U_MINUS)==KEY_PRESSED )
+ {
+ SeatMassage_TJ_Req(SM_TJ_KB_U,SM_TJ_ACT_None);
+ }
+ if (getKeyReleaseFlag(KEY_TJ_KB_D_PLUS)==KEY_PRESSED || getKeyReleaseFlag(KEY_TJ_KB_D_MINUS)==KEY_PRESSED )
+ {
+ SeatMassage_TJ_Req(SM_TJ_KB_D,SM_TJ_ACT_None);
+ }
+ if (getKeyReleaseFlag(KEY_TJ_ZD_L_PLUS)==KEY_PRESSED || getKeyReleaseFlag(KEY_TJ_ZD_L_MINUS)==KEY_PRESSED )
+ {
+ SeatMassage_TJ_Req(SM_TJ_ZD_L,SM_TJ_ACT_None);
+ }
+ if (getKeyReleaseFlag(KEY_TJ_ZD_R_PLUS)==KEY_PRESSED || getKeyReleaseFlag(KEY_TJ_ZD_R_MINUS)==KEY_PRESSED )
+ {
+ SeatMassage_TJ_Req(SM_TJ_ZD_R,SM_TJ_ACT_None);
+ }
}
diff --git a/cva_asw_m0146/src/key.h b/cva_asw_m0146/src/key.h
index 9586c75..4a18546 100644
--- a/cva_asw_m0146/src/key.h
+++ b/cva_asw_m0146/src/key.h
@@ -27,6 +27,14 @@ typedef enum
KEY_MEMORY_3,
KEY_RESET,
KEY_SM,//seat massage
+ KEY_TJ_KB_U_PLUS,
+ KEY_TJ_KB_U_MINUS,
+ KEY_TJ_KB_D_PLUS,
+ KEY_TJ_KB_D_MINUS,
+ KEY_TJ_ZD_L_PLUS,
+ KEY_TJ_ZD_L_MINUS,
+ KEY_TJ_ZD_R_PLUS,
+ KEY_TJ_ZD_R_MINUS,
KEY_NUM,
}KEY_ID_type;