diff --git a/cva_asw_m0146/.vscode/settings.json b/cva_asw_m0146/.vscode/settings.json index 4bae4d8..25a3af5 100644 --- a/cva_asw_m0146/.vscode/settings.json +++ b/cva_asw_m0146/.vscode/settings.json @@ -56,5 +56,8 @@ } ], "Codegeex.CompletionDelay": 0.5, - "Codegeex.RepoIndex": true + "Codegeex.RepoIndex": true, + "cSpell.words": [ + "canmatrix" + ] } \ No newline at end of file diff --git a/cva_asw_m0146/settings/cva_asw_m0146.Debug.cspy.bat b/cva_asw_m0146/settings/cva_asw_m0146.Debug.cspy.bat index 4b448f3..bad3168 100644 --- a/cva_asw_m0146/settings/cva_asw_m0146.Debug.cspy.bat +++ b/cva_asw_m0146/settings/cva_asw_m0146.Debug.cspy.bat @@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile @echo on -"C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --backend -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl" +"D:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --backend -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl" @echo off goto end @@ -34,7 +34,7 @@ goto end @echo on -"C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" "--debug_file=%~1" --backend -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl" +"D:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" "--debug_file=%~1" --backend -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl" @echo off :end \ No newline at end of file diff --git a/cva_asw_m0146/settings/cva_asw_m0146.Debug.cspy.ps1 b/cva_asw_m0146/settings/cva_asw_m0146.Debug.cspy.ps1 index f72c23f..f14c94d 100644 --- a/cva_asw_m0146/settings/cva_asw_m0146.Debug.cspy.ps1 +++ b/cva_asw_m0146/settings/cva_asw_m0146.Debug.cspy.ps1 @@ -23,9 +23,9 @@ if ($debugfile -eq "") { -& "C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --backend -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl" +& "D:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --backend -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl" } else { -& "C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --debug_file=$debugfile --backend -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl" +& "D:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --debug_file=$debugfile --backend -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl" } diff --git a/cva_asw_m0146/settings/cva_asw_m0146.Debug.driver.xcl b/cva_asw_m0146/settings/cva_asw_m0146.Debug.driver.xcl index 82825a5..7a6d40b 100644 --- a/cva_asw_m0146/settings/cva_asw_m0146.Debug.driver.xcl +++ b/cva_asw_m0146/settings/cva_asw_m0146.Debug.driver.xcl @@ -6,7 +6,7 @@ "-p" -"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\config\debugger\CVAChip\CVM0144.ddf" +"D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\config\debugger\CVAChip\CVM0144.ddf" "--semihosting" diff --git a/cva_asw_m0146/settings/cva_asw_m0146.Debug.general.xcl b/cva_asw_m0146/settings/cva_asw_m0146.Debug.general.xcl index 4613dc6..9cc57e3 100644 --- a/cva_asw_m0146/settings/cva_asw_m0146.Debug.general.xcl +++ b/cva_asw_m0146/settings/cva_asw_m0146.Debug.general.xcl @@ -1,10 +1,10 @@ -"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armPROC.dll" +"D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armPROC.dll" -"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armJLINK.dll" +"D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armJLINK.dll" -"C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\Debug_FLASH\Exe\app_m146.out" +"F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\Debug_FLASH\Exe\app_m146.out" ---plugin="C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armbat.dll" +--plugin="D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armbat.dll" diff --git a/cva_asw_m0146/src/LIN_Master/SeatMassage.c b/cva_asw_m0146/src/LIN_Master/SeatMassage.c index abbf99d..7b3256b 100644 --- a/cva_asw_m0146/src/LIN_Master/SeatMassage.c +++ b/cva_asw_m0146/src/LIN_Master/SeatMassage.c @@ -77,7 +77,7 @@ typedef enum * the globals ******************************************************************************/ SM_CTRL_Data_Type SM_CTRL_data; -static SM_state_Type SM_state,SM_last_state; +static SM_state_Type SM_KB_state,SM_KB_last_state,SM_ZD_state,SM_ZD_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}; /******************************************************************************* @@ -140,31 +140,124 @@ static void SM_OFF_task(void) 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); + scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE_ZD = 0; + scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = 0; + UpdateLinMsg(&SM_CTRL_data); - SM_last_state=SM_state; + SM_KB_last_state=SM_KB_state; } -static void SM_RUN1_task(void)//50ms +static void SM_KB_RUN1_task(void)//50ms { static uint16_t run_counter; - static uint8_t runstate,zd_run_state,kb_run_state; + static uint8_t kb_run_state; - if(SM_last_state!=SM_state) + if(SM_KB_last_state!=SM_KB_state) { - runstate = 0; run_counter = 0; - SM_last_state=SM_state; - zd_run_state = 0; + SM_KB_last_state=SM_KB_state; kb_run_state = 0; } run_counter++; if (run_counter >= 100) { run_counter = 0; - zd_run_state++; - if (zd_run_state >= 3) + + kb_run_state++; + if (kb_run_state >= 4) { - zd_run_state = 0; + kb_run_state = 0; } + } + + for (uint8_t i = 0; i < 5; i++) + { + KB_DATA_L[i] = 0; + KB_DATA_R[i] = 0; + } + + switch (kb_run_state) + { + case 0: + KB_DATA_L[2] = 1; + break; + case 1: + KB_DATA_R[2] = 1; + break; + case 2: + KB_DATA_R[3] = 1; + break; + case 3: + KB_DATA_L[3] = 1; + break; + default: + kb_run_state = 0; + break; + } + +} +static void SM_KB_RUN2_task(void) +{ + static uint16_t run_counter; + static uint8_t kb_run_state; + + if(SM_KB_last_state!=SM_KB_state) + { + run_counter = 0; + SM_KB_last_state=SM_KB_state; + kb_run_state = 0; + } + run_counter++; + if (run_counter >= 100) + { + run_counter = 0; + + kb_run_state++; + if (kb_run_state >= 4) + { + kb_run_state = 0; + } + } + + for (uint8_t i = 0; i < 5; i++) + { + KB_DATA_L[i] = 0; + KB_DATA_R[i] = 0; + } + + switch (kb_run_state) + { + case 0: + KB_DATA_L[0] = 1; + break; + case 1: + KB_DATA_R[0] = 1; + break; + case 2: + KB_DATA_R[1] = 1; + break; + case 3: + KB_DATA_L[1] = 1; + break; + default: + kb_run_state = 0; + break; + } +} +static void SM_KB_RUN3_task(void) +{ + static uint16_t run_counter; + static uint8_t kb_run_state; + + if(SM_KB_last_state!=SM_KB_state) + { + run_counter = 0; + SM_KB_last_state=SM_KB_state; + kb_run_state = 0; + } + run_counter++; + if (run_counter >= 100) + { + run_counter = 0; kb_run_state++; if (kb_run_state >= 5) @@ -172,19 +265,7 @@ static void SM_RUN1_task(void)//50ms kb_run_state = 0; } } - 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) @@ -198,6 +279,160 @@ static void SM_RUN1_task(void)//50ms KB_DATA_R[i] = 0; } } + + switch (kb_run_state) + { + case 0: + KB_DATA_L[0] = 1; + KB_DATA_R[0] = 1; + break; + case 1: + KB_DATA_L[1] = 1; + KB_DATA_R[1] = 1; + break; + case 2: + KB_DATA_L[2] = 1; + KB_DATA_R[2] = 1; + break; + case 3: + KB_DATA_L[3] = 1; + KB_DATA_R[3] = 1; + break; + case 4: + KB_DATA_L[4] = 1; + KB_DATA_R[4] = 1; + break; + case 5: + KB_DATA_L[3] = 1; + KB_DATA_R[3] = 1; + break; + case 6: + KB_DATA_L[2] = 1; + KB_DATA_R[2] = 1; + break; + case 7: + KB_DATA_L[1] = 1; + KB_DATA_R[1] = 1; + break; + default: + break; + } +} + +void SeatMassage_Init(void) +{ + for (uint8_t i = 0; i < 4; i++) + { + SM_CTRL_data.rawdata[i] = 0; + } + + UpdateLinMsg(&SM_CTRL_data); + SM_KB_state = SM_OFF; + SM_ZD_state = SM_OFF; +} + +static void SeatMassageKB_task(void) +{ + switch (SM_KB_state) + { + case SM_RUN1: + SM_KB_RUN1_task(); + break; + case SM_RUN2: + SM_KB_RUN2_task(); + break; + case SM_RUN3: + SM_KB_RUN3_task(); + break; + default: + SM_KB_state = SM_OFF; + break; + } + if (SM_KB_state > SM_INIT && SM_KB_state < SM_STATE_NUM) + { + scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = SM_KB_state-1; + } + else + { + scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = 0; + } + +} + +static void SM_ZD_RUN1_task(void) +{ + static uint16_t run_counter; + static uint8_t zd_run_state; + + if(SM_ZD_last_state!=SM_ZD_state) + { + run_counter = 0; + SM_ZD_last_state=SM_ZD_state; + zd_run_state = 0; + } + run_counter++; + if (run_counter >= 100) + { + run_counter = 0; + + zd_run_state++; + if (zd_run_state >= 4) + { + zd_run_state = 0; + } + } + for (uint8_t i = 0; i < 3; i++) + { + ZD_DATA_L[i] = 0; + ZD_DATA_R[i] = 0; + } + switch (zd_run_state) + { + case 0: + ZD_DATA_L[0] = 1; + ZD_DATA_R[0] = 1; + break; + case 1: + ZD_DATA_L[1] = 1; + ZD_DATA_R[1] = 1; + break; + case 2: + ZD_DATA_L[2] = 1; + ZD_DATA_R[2] = 1; + break; + case 3: + ZD_DATA_L[1] = 1; + ZD_DATA_R[1] = 1; + break; + default: + break; + } +} + +static void SeatMassageZD_task(void) +{ + switch (SM_ZD_state) + { + case SM_RUN1: + SM_ZD_RUN1_task(); + break; + default: + SM_ZD_state = SM_OFF; + break; + } + if (SM_ZD_state > SM_INIT && SM_ZD_state < SM_STATE_NUM) + { + scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE_ZD = SM_ZD_state-1; + } + else + { + scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE_ZD = 0; + } + +} + +static void LinSendSeatMassage_task(void) +{ #if 1 SM_CTRL_data.msg.ZD_L0 = ZD_DATA_L[0]; SM_CTRL_data.msg.ZD_L1 = ZD_DATA_L[1]; @@ -205,6 +440,9 @@ static void SM_RUN1_task(void)//50ms 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]; + SM_CTRL_data.msg.ZD_V2_12V = 1; +#else + SM_CTRL_data.msg.ZD_V2_12V = 0; #endif #if 1 SM_CTRL_data.msg.KB_L0 = KB_DATA_L[0]; @@ -218,97 +456,62 @@ static void SM_RUN1_task(void)//50ms 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; +#else + SM_CTRL_data.msg.KB_V2_12V = 0; #endif - SM_CTRL_data.msg.ZD_V2_12V = 1; - SM_CTRL_data.msg.ZD_AP = 1; + + SM_CTRL_data.msg.ZD_AP = (SM_KB_state>SM_OFF&&SM_ZD_state>SM_OFF)?1:0; 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; - 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; - UpdateLinMsg(&SM_CTRL_data); -} -void SeatMassage_Init(void) +void SeatMassage_Maintask(void)//50ms task { - for (uint8_t i = 0; i < 4; i++) + if (SM_KB_state == SM_OFF && SM_ZD_state == SM_OFF) { - SM_CTRL_data.rawdata[i] = 0; - } - - UpdateLinMsg(&SM_CTRL_data); - -} - -void SeatMassage_task(void) -{ - switch (SM_state) - { - case SM_INIT: - SM_state = SM_OFF; - break; - case SM_OFF: SM_OFF_task(); - break; - case SM_RUN1: - SM_RUN1_task(); - break; - case SM_RUN2: - SM_RUN2_task(); - break; - case SM_RUN3: - SM_RUN3_task(); - break; - default: - SM_state = SM_OFF; - break; - } - if (SM_state > SM_INIT && SM_state < SM_STATE_NUM) - { - scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = SM_state-1; } else { - scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = 0; + SeatMassageKB_task(); + SeatMassageZD_task(); + LinSendSeatMassage_task(); } - } void SeatMassage_ReqRun(uint8_t state) { if (state < 3) { - SM_state = SM_RUN1 + state; + SM_KB_state = SM_RUN1 + state; } } void SeatMassage_ReqOFF(void) { - SM_state = SM_OFF; + SM_KB_state = SM_OFF; } -void SeatMassage_ReqNext(void) +void SeatMassageKB_ReqNext(void) { - if (SM_state == SM_OFF) + SM_KB_state++; + if (SM_KB_state > SM_RUN3) { - SM_state = SM_RUN1; + SM_KB_state = SM_OFF; + SM_KB_last_state = SM_KB_state; + } +} +void SeatMassageZD_ReqNext(void) +{ + if (SM_ZD_state == SM_OFF) + { + SM_ZD_state = SM_RUN1; } else { - SM_state = SM_OFF; + SM_ZD_state = SM_OFF; + SM_ZD_last_state = SM_OFF; } } diff --git a/cva_asw_m0146/src/LIN_Master/SeatMassage.h b/cva_asw_m0146/src/LIN_Master/SeatMassage.h index 2898441..5eb11e9 100644 --- a/cva_asw_m0146/src/LIN_Master/SeatMassage.h +++ b/cva_asw_m0146/src/LIN_Master/SeatMassage.h @@ -44,8 +44,9 @@ typedef enum void SeatMassage_Init(void); void SeatMassage_ReqOFF(void); void SeatMassage_ReqRun(uint8_t state); -void SeatMassage_task(void); -void SeatMassage_ReqNext(void); +void SeatMassage_Maintask(void); +void SeatMassageKB_ReqNext(void); +void SeatMassageZD_ReqNext(void); void SeatMassage_TJ_Req(SM_TJ_ITEM_Type item,SM_TJ_ACT_Type act); diff --git a/cva_asw_m0146/src/appTask.c b/cva_asw_m0146/src/appTask.c index cfa23a0..73ba058 100644 --- a/cva_asw_m0146/src/appTask.c +++ b/cva_asw_m0146/src/appTask.c @@ -131,7 +131,7 @@ void appTask(void) SBC_WD_Trigger(); WdgDrv_Refresh(&mcu.wdgDrv); PowerOnTask(); - SeatMassage_task(); + SeatMassage_Maintask(); } if(gSystick1msCnt % 1000 == 0) diff --git a/cva_asw_m0146/src/key.c b/cva_asw_m0146/src/key.c index 2c724fa..daf2257 100644 --- a/cva_asw_m0146/src/key.c +++ b/cva_asw_m0146/src/key.c @@ -130,6 +130,8 @@ 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_SM_ZD: + return scm_canmatrix_rx.Panel_Key.KEY_ZY_MSSG_ZD; case KEY_TJ_KB_U_PLUS: return scm_canmatrix_rx.Panel_Key.KEY_TJ_KB_U_PLUS; case KEY_TJ_KB_U_MINUS: @@ -282,9 +284,15 @@ void KeyProTask(void)//5ms if (getKeyPressFlag(KEY_SM) == KEY_PRESSED) { - SeatMassage_ReqNext(); + SeatMassageKB_ReqNext(); } + if (getKeyPressFlag(KEY_SM_ZD) == KEY_PRESSED) + { + SeatMassageZD_ReqNext(); + } + + //座椅气垫调节 if (getKeyPressFlag(KEY_TJ_KB_U_PLUS) == KEY_PRESSED) { diff --git a/cva_asw_m0146/src/key.h b/cva_asw_m0146/src/key.h index 4a18546..be22b3c 100644 --- a/cva_asw_m0146/src/key.h +++ b/cva_asw_m0146/src/key.h @@ -27,6 +27,7 @@ typedef enum KEY_MEMORY_3, KEY_RESET, KEY_SM,//seat massage + KEY_SM_ZD,//坐垫按摩 KEY_TJ_KB_U_PLUS, KEY_TJ_KB_U_MINUS, KEY_TJ_KB_D_PLUS,