This commit is contained in:
sunbeam 2024-09-14 17:02:16 +08:00
parent 7345ff4c22
commit 477ce4889e
14 changed files with 221 additions and 722 deletions

View File

@ -1,5 +1,5 @@
# #
#Sat Aug 24 10:49:01 CST 2024 #Sat Sep 14 09:55:06 CST 2024
mcal.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3 mcal.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3
conf.ids=mcal conf.ids=mcal
mcal.languagetoolchain.version=4.10 mcal.languagetoolchain.version=4.10

View File

@ -3,6 +3,8 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/DiagnosticR/Sys_Diag_Detect/SysDiagDetect.c</file>
<file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/TouchPanel/TouchPanel.c</file>
<file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/main.c</file> <file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/main.c</file>
</group> </group>
</open-files> </open-files>

View File

@ -4,6 +4,7 @@
#include "RTE.h" #include "RTE.h"
#include "forcedetect.h" #include "forcedetect.h"
#include "forceSnsr.h" #include "forceSnsr.h"
#include "Speaker.h"
uint8 Touch_Sensor_Fault = 0,Touch_Sensor_Fault_key=0,Touch_Sensor_Fault_pad=0; uint8 Touch_Sensor_Fault = 0,Touch_Sensor_Fault_key=0,Touch_Sensor_Fault_pad=0;
static uint8 Bat_Rng = 0; static uint8 Bat_Rng = 0;
static void Battery_Volt_Diag_Task(void) static void Battery_Volt_Diag_Task(void)
@ -126,28 +127,9 @@ extern uint8_t Allow_Touch_flag;
static uint8 Vibra_Fault = 0; static uint8 Vibra_Fault = 0;
static void Vibration_Diag_Task(void) static void Vibration_Diag_Task(void)
{ {
// AD_data=voltage * 4096/3.3V normal:0-0.01(15) short: 0.15(185)-0.36(448) 0.6(742)-0.7(870) 0.95(1177)-1.05(1305) 1.27(1575)-1.39(1727) open:1.55(1921) - 1.72(2136)
Vibra_Fault = Get_Speaker_Fault();//Allow_Touch_flag; Vibra_Fault = Get_Speaker_Fault();//Allow_Touch_flag;
InitMessage(SIG_DIAGCFAILRTOUCHPANSWTRVIBRATIONFLTSTS, &Vibra_Fault); InitMessage(SIG_DIAGCFAILRTOUCHPANSWTRVIBRATIONFLTSTS, &Vibra_Fault);
/*
if(LD_AD_Val>=0 && LD_AD_Val<=15) //normal
{
Vibra_Fault = Vibration_Normal;
InitMessage(SIG_DIAGCFAILRTOUCHPANSWTRVIBRATIONFLTSTS, &Vibra_Fault);
}
else if((LD_AD_Val>=185 && LD_AD_Val<=448)||(LD_AD_Val>=742 && LD_AD_Val<=870)||(LD_AD_Val>=1177 && LD_AD_Val<=1305)||(LD_AD_Val>=1575 && LD_AD_Val<=1727))
{
Vibra_Fault = Vibration_Short;
InitMessage(SIG_DIAGCFAILRTOUCHPANSWTRVIBRATIONFLTSTS, &Vibra_Fault);
}
else if(LD_AD_Val>=1921 && LD_AD_Val<=2136)
{
Vibra_Fault = Vibration_open;
InitMessage(SIG_DIAGCFAILRTOUCHPANSWTRVIBRATIONFLTSTS, &Vibra_Fault);
}
*/
} }
void Sys_Diag_Detcet_Task(void) void Sys_Diag_Detcet_Task(void)

View File

@ -221,6 +221,8 @@ typedef unsigned char UI_8;
#define DID_PRESEE_SEN_SIGNAL ((UI_16)0x7021) #define DID_PRESEE_SEN_SIGNAL ((UI_16)0x7021)
#define DID_PRESEE_SEN_PRE_VAL ((UI_16)0x7022) #define DID_PRESEE_SEN_PRE_VAL ((UI_16)0x7022)
#define DID_RESET_SOURCE ((UI_16)0x7030)
/*--------------------------- Global variables ---------------------------- */ /*--------------------------- Global variables ---------------------------- */
//#pragma push //#pragma push

View File

@ -78,8 +78,8 @@ typedef struct{
* Private variables * Private variables
*/ */
const UI_8 NVM_DID_CD_VIN[DLC_DID_CD_VIN] = GAC_VIN_DEFAULT_VALUE; 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,0x08,0x19}; const UI_8 NVM_Reprogramming_Date_App[DLC_DID_REPROGRAMMING_DATE] = {0x20,0x24,0x09,0x14};
const UI_8 NVM_DID_CD_SUPPLIER_ID[DLC_SYSTEM_SUPPLIER_ID] = {'2','4','0','8','1','9'}; const UI_8 NVM_DID_CD_SUPPLIER_ID[DLC_SYSTEM_SUPPLIER_ID] = {'2','4','0','9','1','4'};
const UI_8 NVM_Repair_Shop_Code[DLC_REPAIR_SHOP_CODE] = GAC_ECU_REPAIR_SHOP_CODE; 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}; 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]; static uint8 RAM_DID_CD_VIN[DLC_DID_CD_VIN];
@ -596,6 +596,16 @@ t_UDS_ERR Get_DID_Pre_Value(uint8 *data)
return ISO15765_3_POSITIVE_RESPONSE; return ISO15765_3_POSITIVE_RESPONSE;
} }
t_UDS_ERR Get_DID_ResetSource(uint8 *data)
{
uint8_t reset_source_buf[20];
SmartEE_Read(0x400,reset_source_buf,20);
memcpy(data,reset_source_buf,20);
return ISO15765_3_POSITIVE_RESPONSE;
}
t_UDS_ERR Get_DID_Reprogramming_Date(uint8 *data) t_UDS_ERR Get_DID_Reprogramming_Date(uint8 *data)
{ {
//memcpy(data, RAM_DID_CD_REPROGRAMMING_DATE, sizeof(RAM_DID_CD_REPROGRAMMING_DATE)); //memcpy(data, RAM_DID_CD_REPROGRAMMING_DATE, sizeof(RAM_DID_CD_REPROGRAMMING_DATE));

View File

@ -177,6 +177,7 @@ t_UDSReadDidSubCommands uds_did_read_commands[] =
{ DID_PRESEE_SEN_BASELINE , 2, UDS_DEFAULT_SESSION, Get_DID_PressSen_Baseline }, { DID_PRESEE_SEN_BASELINE , 2, UDS_DEFAULT_SESSION, Get_DID_PressSen_Baseline },
{ DID_PRESEE_SEN_SIGNAL , 2, UDS_DEFAULT_SESSION, Get_DID_PressSen_Signal }, { DID_PRESEE_SEN_SIGNAL , 2, UDS_DEFAULT_SESSION, Get_DID_PressSen_Signal },
{ DID_PRESEE_SEN_PRE_VAL , 2, UDS_DEFAULT_SESSION, Get_DID_Pre_Value }, { DID_PRESEE_SEN_PRE_VAL , 2, UDS_DEFAULT_SESSION, Get_DID_Pre_Value },
{DID_RESET_SOURCE , 20, UDS_DEFAULT_SESSION , Get_DID_ResetSource },
{DID_FUN1, 2, UDS_DEFAULT_SESSION, Get_DID_Fun1}, {DID_FUN1, 2, UDS_DEFAULT_SESSION, Get_DID_Fun1},
{DID_FUN2, 2, UDS_DEFAULT_SESSION, Get_DID_Fun2}, {DID_FUN2, 2, UDS_DEFAULT_SESSION, Get_DID_Fun2},

View File

@ -163,6 +163,7 @@ t_UDS_ERR Get_DID_TouchSen15_Signal(uint8 *data);
t_UDS_ERR Get_DID_PressSen_Baseline(uint8 *data); t_UDS_ERR Get_DID_PressSen_Baseline(uint8 *data);
t_UDS_ERR Get_DID_PressSen_Signal(uint8 *data); t_UDS_ERR Get_DID_PressSen_Signal(uint8 *data);
t_UDS_ERR Get_DID_Pre_Value(uint8 *data); t_UDS_ERR Get_DID_Pre_Value(uint8 *data);
t_UDS_ERR Get_DID_ResetSource(uint8 *data);
t_UDS_ERR Get_DID_CD_SYSID_CALIRATION_DATE(uint8 *data); t_UDS_ERR Get_DID_CD_SYSID_CALIRATION_DATE(uint8 *data);
t_UDS_ERR Set_DID_CD_CALIRATION_DATE(uint8 *data); t_UDS_ERR Set_DID_CD_CALIRATION_DATE(uint8 *data);

View File

@ -143,8 +143,7 @@ uint8_t RTE_Get_TouchBoard_CRC(void)
uint8_t RTE_Get_SldVolCtrlSts(void) // 0 slip idle 1 decrease ,2 increase , 3 decrease double , 4 increase double ,5 decrease third, 6 increase third uint8_t RTE_Get_SldVolCtrlSts(void) // 0 slip idle 1 decrease ,2 increase , 3 decrease double , 4 increase double ,5 decrease third, 6 increase third
{ {
TP_SlideLevel_Enum UD_SlideLevel = TP_SlideLevel_NONE; return 0;
return (uint8_t)UD_SlideLevel;
} }
uint8_t RTE_Get_TouchBoard_Up_Sts(void) uint8_t RTE_Get_TouchBoard_Up_Sts(void)
@ -662,9 +661,9 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
{ {
//满足防误触 //满足防误触
Allow_Touch_counter++; Allow_Touch_counter++;
if (Allow_Touch_counter >= 10)//40ms if (Allow_Touch_counter >= 15)//60ms
{ {
Allow_Touch_counter = 10; Allow_Touch_counter = 15;
Allow_Touch_flag = 0; Allow_Touch_flag = 0;
} }
} }
@ -754,13 +753,18 @@ uint8_t RTE_Get_CAN_ActvnOfSteerWhlIllmn(void)
return rtn_data; return rtn_data;
} }
// LED Day/Night Mode switch // LED Day/Night Mode switch
extern uint8_t Msg30_timeout_flag;
uint8_t RTE_Get_CAN_TwliBriSts(void) uint8_t RTE_Get_CAN_TwliBriSts(void)
{ {
// uint8_t temp = 0; // uint8_t temp = 0;
rtn_data = 0; rtn_data = 0;
(void)ReceiveMessage(SIG_TWLIBRISTS, &rtn_data); (void)ReceiveMessage(SIG_TWLIBRISTS, &rtn_data);
if (Msg30_timeout_flag == 1)
{
rtn_data = 0;
}
return rtn_data; return rtn_data;
} }
@ -1228,7 +1232,17 @@ void RTE_Set_All_UB(void)
InitMessage(SIG_SWTRPARTNOCMPL_UB, &UbInitValue); InitMessage(SIG_SWTRPARTNOCMPL_UB, &UbInitValue);
InitMessage(SIG_SWTRSERNO_UB, &UbInitValue); InitMessage(SIG_SWTRSERNO_UB, &UbInitValue);
} }
const uint16_t max_on_time_arr[16] = {
// 0 1 2 3 4 5 6 7
10,10,10,10,10,50,50,50,
50,50,50,50,50,50,50,50,
};
const uint16_t low_baseline_reset_arr[16] = {
// 0 1 2 3 4 5 6 7
40,40,40,40,40,40,40,40,
40,40,40,40,40,40,40,40,
};
#if 1 #if 1
void RTE_Set_All_Test_Value(void) // 2ms void RTE_Set_All_Test_Value(void) // 2ms
{ {
@ -1237,6 +1251,7 @@ void RTE_Set_All_Test_Value(void) // 2ms
uint16_t Press_signal, Press_preload; uint16_t Press_signal, Press_preload;
uint8_t i,frccdata[8]={0}; uint8_t i,frccdata[8]={0};
static uint32_t Press_reset_counter[16], Press_repeat_counter[16], baseline_error_counter, baseline_error_repeat_counter; static uint32_t Press_reset_counter[16], Press_repeat_counter[16], baseline_error_counter, baseline_error_repeat_counter;
static uint32_t low_baseline_reset_counter[16];
Press_baseline = Get_forcedetect_basline_value(); Press_baseline = Get_forcedetect_basline_value();
Press_signal = Get_forcedetect_force_value(); Press_signal = Get_forcedetect_force_value();
Press_preload = Get_forcedetect_preload_value(); Press_preload = Get_forcedetect_preload_value();
@ -1254,13 +1269,13 @@ void RTE_Set_All_Test_Value(void) // 2ms
if (get_sensor_node_signal(i) > (get_sensor_node_reference(i) + qtlib_key_configs_set1[i].channel_threshold)) if (get_sensor_node_signal(i) > (get_sensor_node_reference(i) + qtlib_key_configs_set1[i].channel_threshold))
{ {
Press_reset_counter[i]++; Press_reset_counter[i]++;
if (Press_reset_counter[i] > 25000) // 50s = 50000 ms if (Press_reset_counter[i] >= (500 * max_on_time_arr[i])) //
{ {
if (Press_repeat_counter[i] == 0) if (Press_repeat_counter[i] == 0)
{ {
Press_repeat_counter[i] = 55000; Press_repeat_counter[i] = 55000;
Press_reset_counter[i] = 0; Press_reset_counter[i] = 0;
// update_sensor_node_reference(i,get_sensor_node_signal(i)); calibrate_node(i);
} }
else else
{ {
@ -1277,6 +1292,21 @@ void RTE_Set_All_Test_Value(void) // 2ms
{ {
Press_repeat_counter[i]--; Press_repeat_counter[i]--;
} }
if (get_sensor_node_signal(i) + low_baseline_reset_arr[i] < get_sensor_node_reference(i))
{
low_baseline_reset_counter[i]++;
if (low_baseline_reset_counter[i] > 250)
{
low_baseline_reset_counter[i] = 0;
calibrate_node(i);
}
}
else
{
low_baseline_reset_counter[i] = 0;
}
} }
for (i = 0; i < 15; i++) for (i = 0; i < 15; i++)
@ -1483,8 +1513,11 @@ void RTE_Set_All_Test_Value(void) // 2ms
g16_DiagTouchPressSenRes[2][1] = Press_signal; g16_DiagTouchPressSenRes[2][1] = Press_signal;
g16_DiagTouchPressSenRes[2][2] = Press_preload; g16_DiagTouchPressSenRes[2][2] = Press_preload;
uint16_t vol_test_sig = (uint16_t)k_vol_touch_Sts; uint16_t contact_size = get_scroller_contact_size(0);
InitMessage(SIG_SWTRSENSOR16_SIGNAL, &vol_test_sig); InitMessage(SIG_SWTRSENSOR16_SIGNAL, &contact_size);
uint16_t position = get_scroller_position(0);
InitMessage(SIG_SWTRSENSOR16_BASELINE, &position);
} }
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -31,32 +31,8 @@ extern uint16 Below1P5N_vibra_req;
typedef enum
{
TP_SlideDirection_NONE = 0,
TP_SlideDirection_ShortUP,
TP_SlideDirection_LongUP,
TP_SlideDirection_ShortDOWN,
TP_SlideDirection_LongDOWN,
TP_SlideDirection_ShortLEFT,
TP_SlideDirection_LongLEFT,
TP_SlideDirection_ShortRIGHT,
TP_SlideDirection_LongRIGHT
} TP_SlideDirection_Enum;
/*0 slip idle 1 decrease ,2 increase , 3 decrease double , 4 increase double ,5 decrease third, 6 increase third*/
typedef enum
{
TP_SlideLevel_NONE = 0,
TP_SlideLevel1_DOWN,
TP_SlideLevel1_UP,
TP_SlideLevel2_DOWN,
TP_SlideLevel2_UP,
TP_SlideLevel3_DOWN,
TP_SlideLevel3_UP
} TP_SlideLevel_Enum;
typedef enum{ typedef enum{
TOUCH_PANEL_NONE_EVENT = 0, TOUCH_PANEL_NONE_EVENT = 0,
@ -81,26 +57,6 @@ typedef enum{
typedef struct{
boolean Event;
uint32 keep_cycle;
TP_SlideDirection_Enum Direction;
uint8 UpDown_SlideDistance;
TP_SlideLevel_Enum UpDown_SlideLevel;
}TouchSlideEvent_type;
typedef struct{
uint8 x_position;
uint8 y_position;
uint8 origin_x_pos;
uint8 origin_y_pos;
uint8 end_x_pos;
uint8 end_y_pos;
TouchPanel_EventType Event;
uint32 CheckCycle;
uint32 TouchCycle;
}TouchSurface_type;
typedef struct{ typedef struct{
uint8 x_position; uint8 x_position;
@ -153,18 +109,17 @@ extern volatile uint8 k_voice_touch_Sts,k_menu_touch_Sts,k_vol_touch_Sts;
extern volatile uint8 Vibra_force_level; extern volatile uint8 Vibra_force_level;
extern volatile uint8 last_Vibra_force_level; extern volatile uint8 last_Vibra_force_level;
extern uint8 Vibra_PressCheck(void);
void TouchPanel_init(void); void TouchPanel_init(void);
void GetSurface_Position(uint8 *x, uint8 *y); void GetSurface_Position(uint8 *x, uint8 *y);
void GetScroller_Position(uint8 *x, uint8 *y);
Buttons_SignalType TouchPanel_BtnSignalRead(Buttons_ChType ChId); Buttons_SignalType TouchPanel_BtnSignalRead(Buttons_ChType ChId);
void TouchPanel_MainFunction(void); void TouchPanel_MainFunction(void);
TP_SlideDirection_Enum TouchPanel_SlideEventRead(void);
Buttons_SignalType TouchSurface_XY_StsRead(void); Buttons_SignalType TouchSurface_XY_StsRead(void);
TP_SlideLevel_Enum TouchPanel_SlideUpDownLevelRead(void);
PanelPress_LevelType TouchPanel_PressLevelRead(void); PanelPress_LevelType TouchPanel_PressLevelRead(void);
boolean TouchSurface_is_TouchActive(void); boolean TouchSurface_is_TouchActive(void);
boolean TouchButton_is_TouchActive(Buttons_ChType BtId); boolean TouchButton_is_TouchActive(Buttons_ChType BtId);
boolean TouchScroller_is_TouchActive(void);
#endif #endif

View File

@ -451,11 +451,18 @@ uint16_t get_scroller_position(uint16_t sensor_node)
return (qtm_scroller_control1.qtm_scroller_data[sensor_node].position); return (qtm_scroller_control1.qtm_scroller_data[sensor_node].position);
} }
uint16_t get_scroller_contact_size(uint16_t sensor_node)
{
return (qtm_scroller_control1.qtm_scroller_data[sensor_node].contact_size);
}
uint8_t get_surface_status(void) uint8_t get_surface_status(void)
{ {
return (qtm_surface_cs_control1.qtm_surface_contact_data->qt_surface_status); return (qtm_surface_cs_control1.qtm_surface_contact_data->qt_surface_status);
} }
uint16_t get_surface_position(uint8_t ver_or_hor) uint16_t get_surface_position(uint8_t ver_or_hor)
{ {
uint16_t temp_pos = 0; uint16_t temp_pos = 0;

View File

@ -291,7 +291,7 @@ SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
* Range: 0 to 255. * Range: 0 to 255.
* Default value: 5. * Default value: 5.
*/ */
#define DEF_ANTI_TCH_DET_INT 50u #define DEF_ANTI_TCH_DET_INT 0u
/* Threshold beyond with automatic sensor recalibration is initiated. /* Threshold beyond with automatic sensor recalibration is initiated.
* Range: RECAL_100/ RECAL_50 / RECAL_25 / RECAL_12_5 / RECAL_6_25 / MAX_RECAL * Range: RECAL_100/ RECAL_50 / RECAL_25 / RECAL_12_5 / RECAL_6_25 / MAX_RECAL
@ -332,7 +332,7 @@ SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
* Range: 0-255 * Range: 0-255
* Default value: 0 * Default value: 0
*/ */
#define DEF_MAX_ON_DURATION 250u #define DEF_MAX_ON_DURATION 0u
/**********************************************************/ /**********************************************************/
/***************** Slider/Wheel Parameters ****************/ /***************** Slider/Wheel Parameters ****************/
@ -353,7 +353,7 @@ SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
#define SCROLLER_0_PARAMS \ #define SCROLLER_0_PARAMS \
{ \ { \
(uint8_t)SCROLLER_TYPE_SLIDER, 0u, 5u, \ (uint8_t)SCROLLER_TYPE_SLIDER, 0u, 5u, \
SCROLLER_RESOL_DEADBAND((uint8_t)SCR_RESOL_8_BIT, (uint8_t)SCR_DB_NONE),(uint8_t)8,70\ SCROLLER_RESOL_DEADBAND((uint8_t)SCR_RESOL_8_BIT, (uint8_t)SCR_DB_NONE),(uint8_t)3,70\
} }
/**********************************************************/ /**********************************************************/

View File

@ -71,6 +71,7 @@ void update_sensor_state(uint16_t sensor_node, uint8_t new_state);
void calibrate_node(uint16_t sensor_node); void calibrate_node(uint16_t sensor_node);
uint8_t get_scroller_state(uint16_t sensor_node); uint8_t get_scroller_state(uint16_t sensor_node);
uint16_t get_scroller_position(uint16_t sensor_node); uint16_t get_scroller_position(uint16_t sensor_node);
uint16_t get_scroller_contact_size(uint16_t sensor_node);
#define HOR_POS 0u #define HOR_POS 0u
#define VER_POS 1u #define VER_POS 1u
uint8_t get_surface_status(void); uint8_t get_surface_status(void);

View File

@ -195,14 +195,15 @@ void CanTx(t_can_handler can_handler, bool notif, uint32_t idtp, uint16_t len, t
; ;
} }
} }
uint8_t Msg30_timeout_flag = 0;
void IhuPrivateDHUCanFr01_CALLBACK(void) void IhuPrivateDHUCanFr01_CALLBACK(void)
{ {
; Msg30_timeout_flag = 0;
} }
void IhuPrivateDHUCanFr01_Timeout_CALLBACK(void) void IhuPrivateDHUCanFr01_Timeout_CALLBACK(void)
{ {
; Msg30_timeout_flag = 1;
} }
// ***************************************************************************** // *****************************************************************************
@ -214,6 +215,7 @@ static uint32_t status = 0;
uint8_t g_SBC_STATUS[8] = {0}; uint8_t g_SBC_STATUS[8] = {0};
void GetResetSource(void) void GetResetSource(void)
{ {
uint8_t reset_source_buf[25];
g_SBC_STATUS[0] = (uint8_t)sbc_read_reg(SBC_SUP_STAT_2); g_SBC_STATUS[0] = (uint8_t)sbc_read_reg(SBC_SUP_STAT_2);
g_SBC_STATUS[1] = (uint8_t)sbc_read_reg(SBC_SUP_STAT_1); g_SBC_STATUS[1] = (uint8_t)sbc_read_reg(SBC_SUP_STAT_1);
g_SBC_STATUS[2] = (uint8_t)sbc_read_reg(SBC_DEV_STAT); g_SBC_STATUS[2] = (uint8_t)sbc_read_reg(SBC_DEV_STAT);
@ -223,6 +225,21 @@ void GetResetSource(void)
g_SBC_STATUS[6] = 0x00; g_SBC_STATUS[6] = 0x00;
g_SBC_STATUS[7] = 0x00; g_SBC_STATUS[7] = 0x00;
CanTx(0, true, 0x421, 8, g_SBC_STATUS); CanTx(0, true, 0x421, 8, g_SBC_STATUS);
if (g_SBC_STATUS[1] == 0x80 && g_SBC_STATUS[3] == 0x01)
{
//正常上电
}
else
{
//异常复位
SmartEE_Read(0x400,reset_source_buf,20);
reset_source_buf[20] = g_SBC_STATUS[0];
reset_source_buf[21] = g_SBC_STATUS[1];
reset_source_buf[22] = g_SBC_STATUS[2];
reset_source_buf[23] = g_SBC_STATUS[3];
reset_source_buf[24] = g_SBC_STATUS[4];
SmartEE_Write(0x400,&reset_source_buf[5],20);
}
} }
int main(void) int main(void)