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;