HW02初版

This commit is contained in:
sunbeam 2024-08-15 19:34:44 +08:00
parent a3f20dc020
commit e9816c6dff
8 changed files with 115 additions and 42 deletions

View File

@ -44,7 +44,7 @@ const uint16_t g_rxrule_table[CAN_RX_RULE_NUM][6] = {
/* IDL IDH IDL_MASK IDH_MASK Store data filter */
{ 0x0741U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8002U, 0x8001U },
{ 0x07DFU, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8102U, 0x8002U },
{ 0x0403U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8202U, 0x8003U },
{ 0x0189U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8202U, 0x8003U },
{ 0x026DU, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8302U, 0x8004U },
{ 0x0400U, 0x0000U, 0x0000U, 0xD480U, 0x8402U, 0x8005U }, //NW PDU

View File

@ -94,12 +94,11 @@ void __near RSCAN_INTCANGRECC_interrupt(void)
ucNwNetIdelCheck = 1; //网络空闲检测 300ms如果没有置位 默认为空闲
}
if (RxCanMessage.IDL == 0x0403)
if (RxCanMessage.IDL == 0x0189)
{
if (App28sTxRxStatus & 0x02 != 0) // Rx enable
{
//Copy_Array_to_Array(CAN_403.Msg_Byte, RxCanMessage.DB, 8);
Copy_Array_to_Array(CAN_189.Msg_Byte, RxCanMessage.DB, 8);
}
}
if (RxCanMessage.IDL == 0x026D)

View File

@ -5,7 +5,7 @@
#define CAN_STB P1_bit.no2
//#define O_IND_CTRL P3_bit.no0
#define O_IND1_CTRL P1_bit.no5
#define O_IND2_CTRL P1_bit.no6
#define O_IND3_CTRL P1_bit.no7
@ -22,7 +22,7 @@ typedef enum
{
SIGID_SW_LOCK_IN,
SIGID_SW_L_IN,
SIGID_SW_RE1,
SIGID_SW_P_IN,
SIGID_SW_RE2,
SIG_NUM,
}SIGID_type;

View File

@ -40,7 +40,7 @@ unsigned char BusoffFlag;
uint16_t VehicleSpeedRaw,VehicleSpeed;
uint8_t nouse;//Relocation value is odd number
uint8_t lock_state,lkey_state,re1key_state,re2key_state;
uint8_t lock_state,lkey_state,Pkey_state,re2key_state;
#define LOCK_STATE_LOCKED 0
#define LOCK_STATE_UNLOCKED 1
static uint8_t g_lh_state,g_fnr_state;
@ -48,14 +48,18 @@ uint8_t g_f_op,g_n_op,g_r_op;
static uint8_t PowerUpDetect_flag;
static uint8_t PowerUp_FNR_Error_flag,OperationFault_flag;
static uint8_t err_counter;
static uint8_t P_light_rcv;
#define FNR_ERROR_HL_POS 0
#define FNR_ERROR_F_POS 1
#define FNR_ERROR_N_POS 2
#define FNR_ERROR_R_POS 3
#define FNR_ERROR_P_POS 4
void IND_task(void);
void HD_task(void);
void PowerUpDetect(void);
void P_light_task(void);
void Apply_task(void)
{
@ -80,7 +84,7 @@ void Apply_task(void)
BusOff_Detect();
}
KeyScan();
P_light_task();
//IGN_Detect();
//CanNwHandle();
@ -108,7 +112,6 @@ void Apply_task(void)
{
PowerUpDetect();
}
}
if (Timer_20ms_flag == 1)
@ -284,8 +287,11 @@ void PowerUpDetect(void)//10ms
PowerUp_FNR_Error_flag = 0;
errbit = GetIOState(SIGID_SW_L_IN);
PowerUp_FNR_Error_flag |= errbit<<FNR_ERROR_HL_POS;
//errbit = GetIOState(SIGID_SW_L_IN);
//PowerUp_FNR_Error_flag |= errbit<<FNR_ERROR_HL_POS;
errbit = GetIOState(SIGID_SW_P_IN);
PowerUp_FNR_Error_flag |= errbit<<FNR_ERROR_P_POS;
adval = getAdval(ADCH_HALL_F);
errbit = adval<50?1:0;
@ -315,9 +321,42 @@ void PowerUpDetect(void)//10ms
}
void P_light_task(void)
{
static uint8_t counter;
switch (P_light_rcv)
{
case 0:
case 1:
case 2:
P_light_Ctrl(P_light_rcv);
counter=0;
break;
case 3:
counter++;
if (counter<11)
{
P_light_Ctrl(P_LIGHT_RED);
}
else if (counter<23)
{
P_light_Ctrl(P_LIGHT_YELLOE);
}
else
{
counter = 0;
}
break;
default:
counter=0;
P_light_Ctrl(0);
break;
}
}
void IND_task(void)
{
IND_Ctrl(g_fnr_state,g_lh_state);
IND_Ctrl(g_fnr_state);
}
@ -333,10 +372,10 @@ void KeyPro(void)
{
lkey_state = 1;
}
if (getKeyPressFlag(SIGID_SW_RE1) == KEY_PRESSED)
if (getKeyPressFlag(SIGID_SW_P_IN) == KEY_PRESSED)
{
re1key_state = !re1key_state;
RE1LED_CTRL(re1key_state);
Pkey_state = !Pkey_state;
//RE1LED_CTRL(Pkey_state);
}
if (getKeyPressFlag(SIGID_SW_RE2) == KEY_PRESSED)
{
@ -365,20 +404,20 @@ void Can_Msg_Change(void)
CAN_188.Msg_Part.SL_Lswitch = (g_lh_state == LH_STATE_L)?1:0;
CAN_188.Msg_Part.SL_Nswitch = (g_fnr_state == FNR_STATE_N)?1:0;
CAN_188.Msg_Part.SL_Rswitch = (g_fnr_state == FNR_STATE_R)?1:0;
CAN_188.Msg_Part.switch1 = re1key_state;
CAN_188.Msg_Part.switch1 = Pkey_state;
CAN_188.Msg_Part.switch2 = re2key_state;
CAN_188.Msg_Part.Reserve_1 = 0;
CAN_188.Msg_Part.F_OP = g_f_op;
CAN_188.Msg_Part.N_OP = g_n_op;
CAN_188.Msg_Part.R_OP = g_r_op;
CAN_188.Msg_Part.err1 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_HL_POS)?1:0;
CAN_188.Msg_Part.err1 = 0;//20240815delete
CAN_188.Msg_Part.err2 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_F_POS)?1:0;
CAN_188.Msg_Part.err3 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_N_POS)?1:0;
CAN_188.Msg_Part.err4 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_R_POS)?1:0;
CAN_188.Msg_Part.err5 = 0;
CAN_188.Msg_Part.err5 = OperationFault_flag&(1<<FNR_ERROR_F_POS)?1:0;
CAN_188.Msg_Part.err6 = 0;
CAN_188.Msg_Part.err7 = 0;
CAN_188.Msg_Part.err8 = 0;
CAN_188.Msg_Part.err7 = OperationFault_flag&(1<<FNR_ERROR_R_POS)?1:0;
CAN_188.Msg_Part.err8 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_P_POS)?1:0;
CAN_188.Msg_Part.CRC = CRC_Calc_Table(CAN_188.Msg_Byte,7);
}
@ -613,10 +652,11 @@ void value_init(void)
g_fnr_state = FNR_STATE_N;
g_lh_state = LH_STATE_H;
PowerUpDetect_flag = 0;
P_light_rcv = 0;
}
void CAN_RX_Data_Handle(void)
{
P_light_rcv = CAN_189.Msg_Part.P_light;
}

View File

@ -17,6 +17,7 @@ unsigned char App28sTxRxStatus = 3;
unsigned char Nw28sTxRxStatus = 3;
Can_Msg_Type_188 CAN_188;
Can_Msg_Type_189 CAN_189;
can_frame_t TxCanMessage;
can_frame_t TxCanMessage1;

View File

@ -22,13 +22,13 @@ typedef union{
unsigned char Reserve_2:8;
//byte 2 16
unsigned char err1:1;//HorL_SwitchFault
unsigned char err1:1;//HorL_SwitchFault 20240815delete
unsigned char err2:1;//F_SwitchFault
unsigned char err3:1;//R_SwitchFault
unsigned char err4:1;//F_OperationFault
unsigned char err5:1;//N_OperationFault
unsigned char err6:1;//R_OperationFault
unsigned char err7:1;
unsigned char err3:1;//N_SwitchFault
unsigned char err4:1;//R_SwitchFault
unsigned char err5:1;//F_OperationFault
unsigned char err6:1;//N_OperationFault
unsigned char err7:1;//R_OperationFault
unsigned char err8:1;
//byte 3 24
@ -48,8 +48,27 @@ typedef union{
}Msg_Part;
}Can_Msg_Type_188;
extern Can_Msg_Type_188 CAN_188;
typedef union{
unsigned int Msg_Word[2];
unsigned char Msg_Byte[4];
struct{
//byte 0 0
unsigned char P_light:2;
unsigned char Reserve_0:6;
//byte 1-7
unsigned char Reserve_1;
unsigned char Reserve_2;
unsigned char Reserve_3;
unsigned char Reserve_4;
unsigned char Reserve_5;
unsigned char Reserve_6;
unsigned char Reserve_7;
}Msg_Part;
}Can_Msg_Type_189;
extern Can_Msg_Type_188 CAN_188;
extern Can_Msg_Type_189 CAN_189;
extern can_frame_t RxCanMessage;

View File

@ -95,6 +95,27 @@ void KeyScan(void)
}
void P_light_Ctrl(uint8_t state)
{
switch (state)
{
case P_LIGHT_NONE:
O_IND5_CTRL = 0;
O_IND1_CTRL = 0;
break;
case P_LIGHT_RED:
O_IND5_CTRL = 1;
O_IND1_CTRL = 0;
break;
case P_LIGHT_NONE:
O_IND5_CTRL = 0;
O_IND1_CTRL = 1;
break;
default:
break;
}
}
uint8_t GetIOState(uint8_t keyno)
{
@ -105,7 +126,7 @@ uint8_t GetIOState(uint8_t keyno)
return I_SW_LOCK_IN==0?1:0;
case SIGID_SW_L_IN:
return I_SW_L_IN==0?1:0;
case SIGID_SW_RE1:
case SIGID_SW_P_IN:
return I_SW_RE1==0?1:0;
case SIGID_SW_RE2:
return I_SW_RE2==0?1:0;
@ -124,7 +145,7 @@ uint8_t GetKeyState(uint8_t keyno)
}
void IND_Ctrl(uint8_t fnr_state,uint8_t lh_state)
void IND_Ctrl(uint8_t fnr_state)
{
//O_IND_CTRL = 1;
switch (fnr_state)
@ -148,15 +169,6 @@ void IND_Ctrl(uint8_t fnr_state,uint8_t lh_state)
default:
break;
}
if (lh_state == LH_STATE_L)
{
O_IND1_CTRL = 1;
}
else
{
O_IND1_CTRL = 0;
}
}
void RE1LED_CTRL(uint8_t state)

View File

@ -15,7 +15,9 @@
#define FNR_STATE_F 1
#define FNR_STATE_R 2
#define P_LIGHT_NONE 0
#define P_LIGHT_RED 1
#define P_LIGHT_YELLOE 2
uint8_t GetKeyState(uint8_t keyno);
void KeyScan(void);
@ -27,8 +29,8 @@ void ClearKeyState(void);
uint8_t getKeyReleaseFlag(uint8_t id);
uint8_t getKeyPressFlag(uint8_t id);
void getInputStatus(unsigned char* data);
void IND_Ctrl(uint8_t fnr_state,uint8_t lh_state);
void IND_Ctrl(uint8_t fnr_state);
void P_light_Ctrl(uint8_t state);
void RE1LED_CTRL(uint8_t state);
void RE2LED_CTRL(uint8_t state);