HW02初版
This commit is contained in:
parent
a3f20dc020
commit
e9816c6dff
@ -44,7 +44,7 @@ const uint16_t g_rxrule_table[CAN_RX_RULE_NUM][6] = {
|
|||||||
/* IDL IDH IDL_MASK IDH_MASK Store data filter */
|
/* IDL IDH IDL_MASK IDH_MASK Store data filter */
|
||||||
{ 0x0741U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8002U, 0x8001U },
|
{ 0x0741U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8002U, 0x8001U },
|
||||||
{ 0x07DFU, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8102U, 0x8002U },
|
{ 0x07DFU, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8102U, 0x8002U },
|
||||||
{ 0x0403U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8202U, 0x8003U },
|
{ 0x0189U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8202U, 0x8003U },
|
||||||
{ 0x026DU, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8302U, 0x8004U },
|
{ 0x026DU, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8302U, 0x8004U },
|
||||||
{ 0x0400U, 0x0000U, 0x0000U, 0xD480U, 0x8402U, 0x8005U }, //NW PDU
|
{ 0x0400U, 0x0000U, 0x0000U, 0xD480U, 0x8402U, 0x8005U }, //NW PDU
|
||||||
|
|
||||||
|
@ -94,12 +94,11 @@ void __near RSCAN_INTCANGRECC_interrupt(void)
|
|||||||
ucNwNetIdelCheck = 1; //网络空闲检测 300ms如果没有置位 默认为空闲
|
ucNwNetIdelCheck = 1; //网络空闲检测 300ms如果没有置位 默认为空闲
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RxCanMessage.IDL == 0x0403)
|
if (RxCanMessage.IDL == 0x0189)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (App28sTxRxStatus & 0x02 != 0) // Rx enable
|
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)
|
if (RxCanMessage.IDL == 0x026D)
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#define CAN_STB P1_bit.no2
|
#define CAN_STB P1_bit.no2
|
||||||
|
|
||||||
//#define O_IND_CTRL P3_bit.no0
|
|
||||||
#define O_IND1_CTRL P1_bit.no5
|
#define O_IND1_CTRL P1_bit.no5
|
||||||
#define O_IND2_CTRL P1_bit.no6
|
#define O_IND2_CTRL P1_bit.no6
|
||||||
#define O_IND3_CTRL P1_bit.no7
|
#define O_IND3_CTRL P1_bit.no7
|
||||||
@ -22,7 +22,7 @@ typedef enum
|
|||||||
{
|
{
|
||||||
SIGID_SW_LOCK_IN,
|
SIGID_SW_LOCK_IN,
|
||||||
SIGID_SW_L_IN,
|
SIGID_SW_L_IN,
|
||||||
SIGID_SW_RE1,
|
SIGID_SW_P_IN,
|
||||||
SIGID_SW_RE2,
|
SIGID_SW_RE2,
|
||||||
SIG_NUM,
|
SIG_NUM,
|
||||||
}SIGID_type;
|
}SIGID_type;
|
||||||
|
@ -40,7 +40,7 @@ unsigned char BusoffFlag;
|
|||||||
uint16_t VehicleSpeedRaw,VehicleSpeed;
|
uint16_t VehicleSpeedRaw,VehicleSpeed;
|
||||||
|
|
||||||
uint8_t nouse;//Relocation value is odd number
|
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_LOCKED 0
|
||||||
#define LOCK_STATE_UNLOCKED 1
|
#define LOCK_STATE_UNLOCKED 1
|
||||||
static uint8_t g_lh_state,g_fnr_state;
|
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 PowerUpDetect_flag;
|
||||||
static uint8_t PowerUp_FNR_Error_flag,OperationFault_flag;
|
static uint8_t PowerUp_FNR_Error_flag,OperationFault_flag;
|
||||||
static uint8_t err_counter;
|
static uint8_t err_counter;
|
||||||
|
static uint8_t P_light_rcv;
|
||||||
#define FNR_ERROR_HL_POS 0
|
#define FNR_ERROR_HL_POS 0
|
||||||
#define FNR_ERROR_F_POS 1
|
#define FNR_ERROR_F_POS 1
|
||||||
#define FNR_ERROR_N_POS 2
|
#define FNR_ERROR_N_POS 2
|
||||||
#define FNR_ERROR_R_POS 3
|
#define FNR_ERROR_R_POS 3
|
||||||
|
#define FNR_ERROR_P_POS 4
|
||||||
|
|
||||||
void IND_task(void);
|
void IND_task(void);
|
||||||
void HD_task(void);
|
void HD_task(void);
|
||||||
void PowerUpDetect(void);
|
void PowerUpDetect(void);
|
||||||
|
void P_light_task(void);
|
||||||
|
|
||||||
|
|
||||||
void Apply_task(void)
|
void Apply_task(void)
|
||||||
{
|
{
|
||||||
@ -80,7 +84,7 @@ void Apply_task(void)
|
|||||||
BusOff_Detect();
|
BusOff_Detect();
|
||||||
}
|
}
|
||||||
KeyScan();
|
KeyScan();
|
||||||
|
P_light_task();
|
||||||
|
|
||||||
//IGN_Detect();
|
//IGN_Detect();
|
||||||
//CanNwHandle();
|
//CanNwHandle();
|
||||||
@ -108,7 +112,6 @@ void Apply_task(void)
|
|||||||
{
|
{
|
||||||
PowerUpDetect();
|
PowerUpDetect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if (Timer_20ms_flag == 1)
|
if (Timer_20ms_flag == 1)
|
||||||
@ -284,8 +287,11 @@ void PowerUpDetect(void)//10ms
|
|||||||
|
|
||||||
PowerUp_FNR_Error_flag = 0;
|
PowerUp_FNR_Error_flag = 0;
|
||||||
|
|
||||||
errbit = GetIOState(SIGID_SW_L_IN);
|
//errbit = GetIOState(SIGID_SW_L_IN);
|
||||||
PowerUp_FNR_Error_flag |= errbit<<FNR_ERROR_HL_POS;
|
//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);
|
adval = getAdval(ADCH_HALL_F);
|
||||||
errbit = adval<50?1:0;
|
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)
|
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;
|
lkey_state = 1;
|
||||||
}
|
}
|
||||||
if (getKeyPressFlag(SIGID_SW_RE1) == KEY_PRESSED)
|
if (getKeyPressFlag(SIGID_SW_P_IN) == KEY_PRESSED)
|
||||||
{
|
{
|
||||||
re1key_state = !re1key_state;
|
Pkey_state = !Pkey_state;
|
||||||
RE1LED_CTRL(re1key_state);
|
//RE1LED_CTRL(Pkey_state);
|
||||||
}
|
}
|
||||||
if (getKeyPressFlag(SIGID_SW_RE2) == KEY_PRESSED)
|
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_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_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.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.switch2 = re2key_state;
|
||||||
CAN_188.Msg_Part.Reserve_1 = 0;
|
CAN_188.Msg_Part.Reserve_1 = 0;
|
||||||
CAN_188.Msg_Part.F_OP = g_f_op;
|
CAN_188.Msg_Part.F_OP = g_f_op;
|
||||||
CAN_188.Msg_Part.N_OP = g_n_op;
|
CAN_188.Msg_Part.N_OP = g_n_op;
|
||||||
CAN_188.Msg_Part.R_OP = g_r_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.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.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.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.err6 = 0;
|
||||||
CAN_188.Msg_Part.err7 = 0;
|
CAN_188.Msg_Part.err7 = OperationFault_flag&(1<<FNR_ERROR_R_POS)?1:0;
|
||||||
CAN_188.Msg_Part.err8 = 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);
|
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_fnr_state = FNR_STATE_N;
|
||||||
g_lh_state = LH_STATE_H;
|
g_lh_state = LH_STATE_H;
|
||||||
PowerUpDetect_flag = 0;
|
PowerUpDetect_flag = 0;
|
||||||
|
P_light_rcv = 0;
|
||||||
}
|
}
|
||||||
void CAN_RX_Data_Handle(void)
|
void CAN_RX_Data_Handle(void)
|
||||||
{
|
{
|
||||||
|
P_light_rcv = CAN_189.Msg_Part.P_light;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ unsigned char App28sTxRxStatus = 3;
|
|||||||
unsigned char Nw28sTxRxStatus = 3;
|
unsigned char Nw28sTxRxStatus = 3;
|
||||||
|
|
||||||
Can_Msg_Type_188 CAN_188;
|
Can_Msg_Type_188 CAN_188;
|
||||||
|
Can_Msg_Type_189 CAN_189;
|
||||||
|
|
||||||
can_frame_t TxCanMessage;
|
can_frame_t TxCanMessage;
|
||||||
can_frame_t TxCanMessage1;
|
can_frame_t TxCanMessage1;
|
||||||
|
@ -22,13 +22,13 @@ typedef union{
|
|||||||
unsigned char Reserve_2:8;
|
unsigned char Reserve_2:8;
|
||||||
|
|
||||||
//byte 2 16
|
//byte 2 16
|
||||||
unsigned char err1:1;//HorL_SwitchFault
|
unsigned char err1:1;//HorL_SwitchFault 20240815delete
|
||||||
unsigned char err2:1;//F_SwitchFault
|
unsigned char err2:1;//F_SwitchFault
|
||||||
unsigned char err3:1;//R_SwitchFault
|
unsigned char err3:1;//N_SwitchFault
|
||||||
unsigned char err4:1;//F_OperationFault
|
unsigned char err4:1;//R_SwitchFault
|
||||||
unsigned char err5:1;//N_OperationFault
|
unsigned char err5:1;//F_OperationFault
|
||||||
unsigned char err6:1;//R_OperationFault
|
unsigned char err6:1;//N_OperationFault
|
||||||
unsigned char err7:1;
|
unsigned char err7:1;//R_OperationFault
|
||||||
unsigned char err8:1;
|
unsigned char err8:1;
|
||||||
|
|
||||||
//byte 3 24
|
//byte 3 24
|
||||||
@ -48,8 +48,27 @@ typedef union{
|
|||||||
}Msg_Part;
|
}Msg_Part;
|
||||||
}Can_Msg_Type_188;
|
}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;
|
extern can_frame_t RxCanMessage;
|
||||||
|
@ -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)
|
uint8_t GetIOState(uint8_t keyno)
|
||||||
{
|
{
|
||||||
@ -105,7 +126,7 @@ uint8_t GetIOState(uint8_t keyno)
|
|||||||
return I_SW_LOCK_IN==0?1:0;
|
return I_SW_LOCK_IN==0?1:0;
|
||||||
case SIGID_SW_L_IN:
|
case SIGID_SW_L_IN:
|
||||||
return I_SW_L_IN==0?1:0;
|
return I_SW_L_IN==0?1:0;
|
||||||
case SIGID_SW_RE1:
|
case SIGID_SW_P_IN:
|
||||||
return I_SW_RE1==0?1:0;
|
return I_SW_RE1==0?1:0;
|
||||||
case SIGID_SW_RE2:
|
case SIGID_SW_RE2:
|
||||||
return I_SW_RE2==0?1:0;
|
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;
|
//O_IND_CTRL = 1;
|
||||||
switch (fnr_state)
|
switch (fnr_state)
|
||||||
@ -148,15 +169,6 @@ void IND_Ctrl(uint8_t fnr_state,uint8_t lh_state)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (lh_state == LH_STATE_L)
|
|
||||||
{
|
|
||||||
O_IND1_CTRL = 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
O_IND1_CTRL = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RE1LED_CTRL(uint8_t state)
|
void RE1LED_CTRL(uint8_t state)
|
||||||
|
@ -15,7 +15,9 @@
|
|||||||
#define FNR_STATE_F 1
|
#define FNR_STATE_F 1
|
||||||
#define FNR_STATE_R 2
|
#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);
|
uint8_t GetKeyState(uint8_t keyno);
|
||||||
void KeyScan(void);
|
void KeyScan(void);
|
||||||
@ -27,8 +29,8 @@ void ClearKeyState(void);
|
|||||||
uint8_t getKeyReleaseFlag(uint8_t id);
|
uint8_t getKeyReleaseFlag(uint8_t id);
|
||||||
uint8_t getKeyPressFlag(uint8_t id);
|
uint8_t getKeyPressFlag(uint8_t id);
|
||||||
void getInputStatus(unsigned char* data);
|
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 RE1LED_CTRL(uint8_t state);
|
||||||
void RE2LED_CTRL(uint8_t state);
|
void RE2LED_CTRL(uint8_t state);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user