修改接收为kgf1和kgf2都接收转发
This commit is contained in:
15
CAN.C
15
CAN.C
@@ -777,8 +777,6 @@ void CAN_vInit(void)
|
||||
/// - message object is used as receive object
|
||||
/// - this message object is assigned to list 1 (node 0)
|
||||
|
||||
//--------------MOCTR11 = 0x00A00000---------------------------------------
|
||||
|
||||
CAN_vWriteCANAddress(CAN_MOCTR11); // Addressing MO11 control register
|
||||
|
||||
CAN_vWriteAMData(0x00A00000); // load MO11 control register
|
||||
@@ -789,11 +787,11 @@ void CAN_vInit(void)
|
||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||
/// order (like class 1)
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x15000004
|
||||
/// - identifier 29-bit: 0x15000006
|
||||
|
||||
//--------------MOAR11 = 0xF5000004---------------------------------------
|
||||
//--------------MOAR11 = 0xF5000006---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF5000004); // load MO11 arbitration register
|
||||
CAN_vWriteAMData(0xF5000006); // load MO11 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH11
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
@@ -1009,6 +1007,7 @@ void CAN_vInit(void)
|
||||
/// - message object is used as receive object
|
||||
/// - this message object is assigned to list 1 (node 0)
|
||||
|
||||
|
||||
//--------------MOCTR14 = 0x00A00000---------------------------------------
|
||||
|
||||
CAN_vWriteCANAddress(CAN_MOCTR14); // Addressing MO14 control register
|
||||
@@ -1021,11 +1020,11 @@ void CAN_vInit(void)
|
||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||
/// order (like class 1)
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x11000003
|
||||
/// - identifier 29-bit: 0x15000004
|
||||
|
||||
//--------------MOAR14 = 0xF1000003---------------------------------------
|
||||
//--------------MOAR14 = 0xF5000004---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF1000003); // load MO14 arbitration register
|
||||
CAN_vWriteAMData(0xF5000004); // load MO14 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH14
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -17,8 +17,8 @@
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>187610842</dwLowDateTime>
|
||||
<dwHighDateTime>31157159</dwHighDateTime>
|
||||
<dwLowDateTime>-1575929917</dwLowDateTime>
|
||||
<dwHighDateTime>31246864</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
|
||||
37
MAIN.C
37
MAIN.C
@@ -243,43 +243,26 @@ void main(void)
|
||||
// }
|
||||
|
||||
//E3<45><33>ʼ<EFBFBD><CABC> 20251117
|
||||
un_inf_can_kgf_output1.bit_data.KGF01 = 0x01; // E3
|
||||
un_inf_can_kgf_output1.bit_data.KGF02 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output1.bit_data.KGF03 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output1.bit_data.KGF05 = 0x01; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output1.bit_data.KGF06 = 0x01; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output1.bit_data.KGF07 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output1.bit_data.KGF08 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output1.bit_data.KGF09 = 0 ; // <20><><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output1.bit_data.KGF11 = 0x01; // <20><>װ
|
||||
un_inf_can_kgf_output1.bit_data.KGF12 = 0x01; // <20><>װ
|
||||
un_inf_can_kgf_output1.bit_data.KGF14 = 0 ; // <20><>
|
||||
un_inf_can_kgf_output1.bit_data.KGF15 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||
un_inf_can_kgf_output1.bit_data.KGF16 = 0x01; // ң<><D2A3><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output1.bit_data.KGF13 = 0x01; // <EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
un_inf_can_kgf_output2.bit_data.KGF01 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ1
|
||||
un_inf_can_kgf_output2.bit_data.KGF02 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ2
|
||||
un_inf_can_kgf_output2.bit_data.KGF03 = 0x01; // ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||
un_inf_can_kgf_output2.bit_data.KGF04 = 0x01; // E3<EFBFBD><EFBFBD>Դ
|
||||
un_inf_can_kgf_output2.bit_data.KGF05 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ1
|
||||
un_inf_can_kgf_output2.bit_data.KGF06 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ2
|
||||
un_inf_can_kgf_output2.bit_data.KGF15 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ3
|
||||
un_inf_can_kgf_output2.bit_data.KGF16 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ4
|
||||
|
||||
|
||||
while(1)
|
||||
{
|
||||
|
||||
// USER CODE BEGIN (MAIN_Main,4)
|
||||
// for(j=0;j<200;j++){for(i=0;i<133;i++)WDT_vRefresh();}
|
||||
// tmp[3] = (ubyte)CntCan_1;
|
||||
// tmp[2] = (ubyte)(CntCan_1>>8);
|
||||
|
||||
// SwSample();
|
||||
CanRXTX();
|
||||
CanErrorProcess();
|
||||
WDT_vRefresh();
|
||||
// LedDr();
|
||||
BootMain();
|
||||
|
||||
|
||||
// tmp[1] = (ubyte)CntCan_1;
|
||||
// tmp[0] = (ubyte)(CntCan_1>>8);
|
||||
// CAN_vLoadData(0x2, (ulong *)(tmp)); // Add this Line
|
||||
// CAN_vTransmit(2);
|
||||
// for(j=0;j<200;j++){for(i=0;i<133;i++)WDT_vRefresh();}
|
||||
// USER CODE END
|
||||
|
||||
}
|
||||
|
||||
} // End of function main
|
||||
|
||||
223
User.c
223
User.c
@@ -2,14 +2,14 @@
|
||||
#include "RTC.H"
|
||||
#include "temperature.H"
|
||||
#include <string.h>
|
||||
//can<EFBFBD><EFBFBD>Ϣ
|
||||
//can信息
|
||||
UnInfCan UnInfCan_1 = {0};
|
||||
UnSwOut UnSwOut_1 = {0};
|
||||
|
||||
//CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//CAN发送周期
|
||||
uword CntCan_1 = 0;
|
||||
bit FlgCan_1 = 0;
|
||||
//<EFBFBD><EFBFBD>һ<EFBFBD>βɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָʾ
|
||||
//第一次采集到有效数据指示
|
||||
bit FlgOneTime = 0;
|
||||
|
||||
uword RgCanPerid = 1000;
|
||||
@@ -17,41 +17,45 @@ uword RgCanPerid = 1000;
|
||||
UnTimeOutput sleeptime = {0};
|
||||
UnTimeOutput waketime = {0};
|
||||
UnTimeOutput currenttime = {0};
|
||||
UnTimeOutput inittime = {00,1,1,0,0,0,0,0};// Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2000<30>꣬1<EAA3AC><31>1<EFBFBD><31> <20><><EFBFBD>գ<EFBFBD>0<EFBFBD><30>0<EFBFBD><30>00
|
||||
UnTimeOutput un_time_output1 = {0};//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨ʱ<EFBFBD><EFBFBD>
|
||||
UnInfCanKGFOutput un_inf_can_kgf_output2 = {0};//kgf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UnInfCanKGFOutput un_inf_can_kgf_output1 = {0};//kgf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UnTimeOutput inittime = {00,1,1,0,0,0,0,0};// 默认设置 2000年,1月1日 周日,0:0:00
|
||||
UnTimeOutput un_time_output1 = {0};//接收设定时间
|
||||
UnInfCanKGFOutput un_inf_can_kgf_output2 = {0};//kgf输出
|
||||
UnInfCanKGFOutput un_inf_can_kgf_output1 = {0};//kgf输出
|
||||
UnInfCanKGFOutput un_inf_can_kgf_output3 = {0};//kgf或结果
|
||||
UnInfCanKGFOutput un_inf_can_kgf_output4 = {0};//kgf或结果
|
||||
|
||||
UnSampleKgfCommand un_sample_kgf_command = {0};//kgf转发
|
||||
UnTimeOutput waketimelast = {0};
|
||||
UnTimeOutput wake_time_10min = {0};
|
||||
SystemState sleepstate = STATE_INIT;
|
||||
//PWM 20181227
|
||||
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||
|
||||
ubyte powerstate = 0;//<EFBFBD><EFBFBD>Դ״̬
|
||||
ubyte powerstate = 0;//电源状态
|
||||
|
||||
ubyte vcu_can_cnt = 0; // ֡<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD>
|
||||
ubyte vcu_can_last = 0; // ֡<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥֵ
|
||||
bool flg_wake_ecu = 0; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
|
||||
bool flg_KGF = 0;//KGF<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
|
||||
ubyte vcu_can_cnt = 0; // 帧累加器
|
||||
ubyte vcu_can_last = 0; // 帧累加器过去值
|
||||
bool flg_wake_ecu = 0; //控制器唤醒标志
|
||||
bool flg_KGF = 0;//KGF唤醒标志
|
||||
|
||||
ubyte can_error_cnt = 0;
|
||||
ubyte can_error_flg = 0;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
//RTC<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
//RTC定时器
|
||||
//-----------------------------------------------------------------------
|
||||
void RTCProcess(void)
|
||||
{
|
||||
//************************************************************************
|
||||
//////CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//////CAN发送周期
|
||||
if(FlgCan_1){CntCan_1++;if(CntCan_1 >= RgCanPerid){FlgCan_1=0; CntCan_1=0;}}else{CntCan_1=0;}
|
||||
|
||||
//************************************************************************
|
||||
}
|
||||
|
||||
|
||||
//can<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//can错误处理
|
||||
void CanErrorProcess(void)
|
||||
{
|
||||
ubyte ubNSRL;
|
||||
@@ -91,10 +95,10 @@ void CanErrorProcess(void)
|
||||
void CanTransmit(void)
|
||||
{
|
||||
//----------------- --------
|
||||
// װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(1 == flg_KGF)//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 装载数据
|
||||
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||
{
|
||||
CAN_waitTransmit(DF_SwTx);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>һ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
|
||||
CAN_waitTransmit(DF_SwTx);//发送前等待上一帧发送完毕,这样不会丢帧
|
||||
CAN_vLoadData(DF_SwTx, (ulong *)(&UnInfCan_1.ArrData.Arr[0][0]));
|
||||
CAN_vTransmit(DF_SwTx);
|
||||
}
|
||||
@@ -112,12 +116,12 @@ void canSendTo(ubyte index,ubyte *buf)
|
||||
CanTransmitbuf[4] = buf[6];
|
||||
CanTransmitbuf[5] = buf[7];
|
||||
|
||||
CAN_waitTransmit(index);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>һ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
|
||||
CAN_vLoadData(index, (ulong *)CanTransmitbuf);// װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CAN_waitTransmit(index);//发送前等待上一帧发送完毕,这样不会丢帧
|
||||
CAN_vLoadData(index, (ulong *)CanTransmitbuf);// 装载数据
|
||||
CAN_vTransmit(index);
|
||||
}
|
||||
|
||||
//CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ֡
|
||||
//CAN发送一帧
|
||||
void CanTX(void)
|
||||
{
|
||||
//-----------------------------------
|
||||
@@ -133,7 +137,7 @@ void CanTX(void)
|
||||
CanTransmit();
|
||||
}
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//休眠处理函数
|
||||
//------------------------------------------------------------------
|
||||
void SystemStateMachine(SystemState *RgSTT)
|
||||
{
|
||||
@@ -142,9 +146,9 @@ void SystemStateMachine(SystemState *RgSTT)
|
||||
{
|
||||
//-------------------------------------------
|
||||
case STATE_INIT:
|
||||
if(NORMAL == flg_wake_ecu)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NORMAL == flg_wake_ecu)//控制器唤醒
|
||||
{
|
||||
bm8563SetAlarm(&waketime); //<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
bm8563SetAlarm(&waketime); //设置唤醒时间
|
||||
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||
*RgSTT = STATE_ON;
|
||||
}
|
||||
@@ -155,52 +159,52 @@ void SystemStateMachine(SystemState *RgSTT)
|
||||
break;
|
||||
|
||||
case STATE_ON:
|
||||
if(bm8563CheckAlarmFlag())//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䵽<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD>عر<EFBFBD>
|
||||
if(bm8563CheckAlarmFlag())//唤醒时间到以及高压开关关闭
|
||||
{
|
||||
bm8563SetTime(&inittime);//20250802 <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA>䲻<EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bm8563SetAlarm(&sleeptime);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*RgSTT = STATE_INIT; // <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>״̬
|
||||
PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bm8563SetTime(&inittime);//20250802 初始化时间 解决因为时间不对导致无法休眠问题
|
||||
bm8563SetAlarm(&sleeptime);//设置休眠时间
|
||||
KGF_PIN = 0; //KGF休眠
|
||||
CAN_PIN = 1; //can芯片休眠
|
||||
BATTERY_PIN = 0;//电池休眠
|
||||
*RgSTT = STATE_INIT; // 初始化状态
|
||||
PS_vSetPowerDown();//休眠
|
||||
}
|
||||
else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//<EFBFBD>Ƚ<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//比较值是否一样,不一样的话立马更新
|
||||
{
|
||||
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||
bm8563SetAlarm(&waketime);
|
||||
*RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*RgSTT = STATE_ON; // 保持状态(唤醒后由中断处理)
|
||||
}
|
||||
else if( (POWER_WORKING == powerstate) || (POWER_EMERGENCY == powerstate) )//<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD>״̬
|
||||
else if( (POWER_WORKING == powerstate) || (POWER_EMERGENCY == powerstate) )//等于工作状态
|
||||
{
|
||||
*RgSTT = STATE_ON2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>STATE_ON2
|
||||
*RgSTT = STATE_ON2; // 进入STATE_ON2
|
||||
}
|
||||
else
|
||||
{
|
||||
*RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*RgSTT = STATE_ON; // 保持
|
||||
}
|
||||
break;
|
||||
|
||||
case STATE_ON2:
|
||||
if( POWER_STANDBY == powerstate )//<EFBFBD>ܿ<EFBFBD><EFBFBD>عرջ<EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD>standy
|
||||
if( POWER_STANDBY == powerstate )//总开关关闭或者进入standy
|
||||
{
|
||||
bm8563SetTime(&inittime);//20250802 <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA>䲻<EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bm8563SetTime(&inittime);//20250802 初始化时间 解决因为时间不对导致无法休眠问题
|
||||
bm8563SetAlarm(&sleeptime);
|
||||
KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*RgSTT = STATE_INIT; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
KGF_PIN = 0; //KGF休眠
|
||||
CAN_PIN = 1; //can芯片休眠
|
||||
BATTERY_PIN = 0;//电池休眠
|
||||
*RgSTT = STATE_INIT; // 保持状态(唤醒后由中断处理)
|
||||
PS_vSetPowerDown();//休眠
|
||||
}
|
||||
else
|
||||
{
|
||||
*RgSTT = STATE_ON2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*RgSTT = STATE_ON2; // 保持
|
||||
}
|
||||
break;
|
||||
default:;
|
||||
}
|
||||
}
|
||||
//CAN<EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//CAN发送接收
|
||||
void CanRXTX(void)
|
||||
{
|
||||
stCAN_SWObj StrCanRx = {0};
|
||||
@@ -230,7 +234,7 @@ void CanRXTX(void)
|
||||
}
|
||||
|
||||
|
||||
if(CAN_ubNewData(DF_SwRxKGF2))//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(CAN_ubNewData(DF_SwRxKGF2))//等待KGF唤醒
|
||||
{
|
||||
CAN_vGetMsgObj(DF_SwRxKGF2, &StrCanRx);
|
||||
|
||||
@@ -241,18 +245,18 @@ void CanRXTX(void)
|
||||
}
|
||||
|
||||
|
||||
if(CAN_ubNewData(DF_SwZFKGF1))//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>E3<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(CAN_ubNewData(DF_SwZFKGF1))//接受E3的转发控制
|
||||
{
|
||||
CAN_vGetMsgObj(DF_SwZFKGF1, &StrCanRx);
|
||||
|
||||
un_inf_can_kgf_output1.arr[2] = StrCanRx.ulDATAL.ubDB[0];
|
||||
un_inf_can_kgf_output1.arr[3] = StrCanRx.ulDATAL.ubDB[1];
|
||||
un_inf_can_kgf_output1.arr[0] = StrCanRx.ulDATAL.ubDB[2];
|
||||
un_inf_can_kgf_output1.arr[1] = StrCanRx.ulDATAL.ubDB[3];
|
||||
un_inf_can_kgf_output1.arr[6] = StrCanRx.ulDATAH.ubDB[0];
|
||||
un_inf_can_kgf_output1.arr[7] = StrCanRx.ulDATAH.ubDB[1];
|
||||
un_inf_can_kgf_output1.arr[4] = StrCanRx.ulDATAH.ubDB[2];
|
||||
un_inf_can_kgf_output1.arr[5] = StrCanRx.ulDATAH.ubDB[3];
|
||||
un_sample_kgf_command.arr[2] = StrCanRx.ulDATAL.ubDB[0];
|
||||
un_sample_kgf_command.arr[3] = StrCanRx.ulDATAL.ubDB[1];
|
||||
un_sample_kgf_command.arr[0] = StrCanRx.ulDATAL.ubDB[2];
|
||||
un_sample_kgf_command.arr[1] = StrCanRx.ulDATAL.ubDB[3];
|
||||
un_sample_kgf_command.arr[6] = StrCanRx.ulDATAH.ubDB[0];
|
||||
un_sample_kgf_command.arr[7] = StrCanRx.ulDATAH.ubDB[1];
|
||||
un_sample_kgf_command.arr[4] = StrCanRx.ulDATAH.ubDB[2];
|
||||
un_sample_kgf_command.arr[5] = StrCanRx.ulDATAH.ubDB[3];
|
||||
|
||||
CAN_vReleaseObj(DF_SwZFKGF1);
|
||||
}
|
||||
@@ -278,25 +282,25 @@ void CanRXTX(void)
|
||||
|
||||
CAN_vReleaseObj(DF_SwRx);
|
||||
|
||||
vcu_can_cnt ++;//<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>
|
||||
vcu_can_cnt ++;//节点在线检测累加
|
||||
|
||||
powerstate = UnInfCan_1.ArrData.ArrRX[0][4];//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬
|
||||
powerstate = UnInfCan_1.ArrData.ArrRX[0][4];//整车电源状态
|
||||
|
||||
//<EFBFBD>趨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][0] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][1] << 8) ;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
if(TimeTemp >= MAX_TIME)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>30<EFBFBD><EFBFBD>
|
||||
//设定休眠时间
|
||||
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][0] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][1] << 8) ;//唤醒时间
|
||||
if(TimeTemp >= MAX_TIME)//最大限制值,30天
|
||||
{
|
||||
TimeTemp = MAX_TIME;
|
||||
}
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Сʱ
|
||||
// 分钟 → 小时
|
||||
HoursTemp = TimeTemp / 60;
|
||||
sleeptime.bit_data.minute = TimeTemp % 60;
|
||||
|
||||
// Сʱ <20><> <20><>
|
||||
// 小时 → 天
|
||||
DaysTemp = HoursTemp / 24;
|
||||
sleeptime.bit_data.hour = HoursTemp % 24;
|
||||
|
||||
if(DaysTemp >= 30)//<EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
if(DaysTemp >= 30)//日超过范围
|
||||
{
|
||||
sleeptime.bit_data.day = 30;
|
||||
}
|
||||
@@ -305,21 +309,21 @@ void CanRXTX(void)
|
||||
sleeptime.bit_data.day = DaysTemp;
|
||||
}
|
||||
|
||||
//<EFBFBD>趨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][2] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][3] << 8);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
if(TimeTemp > MAX_TIME)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>30<EFBFBD><EFBFBD>
|
||||
//设定唤醒时间
|
||||
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][2] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][3] << 8);//唤醒时间
|
||||
if(TimeTemp > MAX_TIME)//最大限制值,30天
|
||||
{
|
||||
TimeTemp = MAX_TIME;
|
||||
}
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Сʱ
|
||||
// 分钟 → 小时
|
||||
HoursTemp = TimeTemp / 60;
|
||||
waketime.bit_data.minute = TimeTemp % 60;
|
||||
|
||||
// Сʱ <20><> <20><>
|
||||
// 小时 → 天
|
||||
DaysTemp = HoursTemp / 24;
|
||||
waketime.bit_data.hour = HoursTemp % 24;
|
||||
|
||||
if(DaysTemp >= 30)//<EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
if(DaysTemp >= 30)//日超过范围
|
||||
{
|
||||
waketime.bit_data.day = 30;
|
||||
}
|
||||
@@ -329,63 +333,98 @@ void CanRXTX(void)
|
||||
}
|
||||
}
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// SystemStateMachine(&sleepstate); <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ֱ<EFBFBD>Ӷ<EFBFBD><D3B6>ϵ硣
|
||||
//休眠处理
|
||||
SystemStateMachine(&sleepstate); //
|
||||
|
||||
|
||||
//1000ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ֡
|
||||
//1000ms发送一帧
|
||||
if(!FlgCan_1)
|
||||
{
|
||||
FlgCan_1 = 1;
|
||||
|
||||
bm8563GetTime(¤ttime);//1s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
bm8563GetTime(¤ttime);//1s更新一次时钟
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>ַ0x03<EFBFBD><EFBFBD>
|
||||
// 读取分钟(地址0x03)
|
||||
UnSwSample_1.arr[4] = (BM8563_ReadReg(BM8563_ALARM_MIN));
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡСʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ0x04<EFBFBD><EFBFBD>
|
||||
UnSwSample_1.arr[2] = (BM8563_ReadReg(BM8563_ALARM_HOUR)); // 24Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bit6-7
|
||||
// 读取小时(地址0x04)
|
||||
UnSwSample_1.arr[2] = (BM8563_ReadReg(BM8563_ALARM_HOUR)); // 24小时制需屏蔽Bit6-7
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD>ַ0x05<EFBFBD><EFBFBD>
|
||||
UnSwSample_1.arr[1] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD>λ
|
||||
// 读取日(地址0x05)
|
||||
UnSwSample_1.arr[1] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // 屏蔽控制位
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD>ַ0x05<EFBFBD><EFBFBD>
|
||||
UnSwSample_1.arr[5] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD>λ
|
||||
// 读取日(地址0x05)
|
||||
UnSwSample_1.arr[5] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // 屏蔽控制位
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ַ0x06<EFBFBD><EFBFBD>BM8563<EFBFBD><EFBFBD>ֵΪ0x01-0x07<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BCDת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UnSwSample_1.arr[3] = BM8563_ReadReg(BM8563_ALARM_WEEK); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3λ
|
||||
// 读取周(地址0x06,BM8563周值为0x01-0x07,无需BCD转换)
|
||||
UnSwSample_1.arr[3] = BM8563_ReadReg(BM8563_ALARM_WEEK); // 仅保留低3位
|
||||
|
||||
CanTX();
|
||||
|
||||
if(vcu_can_cnt == vcu_can_last)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(vcu_can_cnt == vcu_can_last)//数据一样表示故障
|
||||
{
|
||||
flg_wake_ecu = FAULT;
|
||||
|
||||
if(1 == flg_KGF)//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||
{
|
||||
// canSendTo(DF_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output2.arr[0]);
|
||||
canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output1.arr[0]);
|
||||
un_inf_can_kgf_output3.bit_data.KGF01 = un_sample_kgf_command.bit_data.KGF01_CH01_Reserve | un_inf_can_kgf_output1.bit_data.KGF01;
|
||||
un_inf_can_kgf_output3.bit_data.KGF02 = un_sample_kgf_command.bit_data.KGF01_CH02_Reserve | un_inf_can_kgf_output1.bit_data.KGF02;
|
||||
un_inf_can_kgf_output3.bit_data.KGF03 = un_sample_kgf_command.bit_data.KGF01_CH03_Reserve | un_inf_can_kgf_output1.bit_data.KGF03;
|
||||
un_inf_can_kgf_output3.bit_data.KGF04 = un_sample_kgf_command.bit_data.KGF01_PrechargeRelay | un_inf_can_kgf_output1.bit_data.KGF04;
|
||||
un_inf_can_kgf_output3.bit_data.KGF05 = un_sample_kgf_command.bit_data.KGF01_CH05_Reserve | un_inf_can_kgf_output1.bit_data.KGF05;
|
||||
un_inf_can_kgf_output3.bit_data.KGF06 = un_sample_kgf_command.bit_data.KGF01_CH06_Reserve | un_inf_can_kgf_output1.bit_data.KGF06;
|
||||
un_inf_can_kgf_output3.bit_data.KGF07 = un_sample_kgf_command.bit_data.KGF01_HighVoltageRelayA | un_inf_can_kgf_output1.bit_data.KGF07;
|
||||
un_inf_can_kgf_output3.bit_data.KGF08 = un_sample_kgf_command.bit_data.KGF01_HighVoltageRelayB | un_inf_can_kgf_output1.bit_data.KGF08;
|
||||
un_inf_can_kgf_output3.bit_data.KGF09 = un_sample_kgf_command.bit_data.KGF01_CH09_Reserve | un_inf_can_kgf_output1.bit_data.KGF09;
|
||||
un_inf_can_kgf_output3.bit_data.KGF10 = un_sample_kgf_command.bit_data.KGF01_CH10_Reserve | un_inf_can_kgf_output1.bit_data.KGF10;
|
||||
un_inf_can_kgf_output3.bit_data.KGF11 = un_sample_kgf_command.bit_data.KGF01_LowVoltageRelayA | un_inf_can_kgf_output1.bit_data.KGF11;
|
||||
un_inf_can_kgf_output3.bit_data.KGF12 = un_sample_kgf_command.bit_data.KGF01_LowVoltageRelayB | un_inf_can_kgf_output1.bit_data.KGF12;
|
||||
un_inf_can_kgf_output3.bit_data.KGF13 = un_sample_kgf_command.bit_data.KGF01_LowVoltageCharge | un_inf_can_kgf_output1.bit_data.KGF13;
|
||||
un_inf_can_kgf_output3.bit_data.KGF14 = un_sample_kgf_command.bit_data.KGF01_CH14_Reserve | un_inf_can_kgf_output1.bit_data.KGF14;
|
||||
un_inf_can_kgf_output3.bit_data.KGF15 = un_sample_kgf_command.bit_data.KGF01_CH15_Reserve | un_inf_can_kgf_output1.bit_data.KGF15;
|
||||
un_inf_can_kgf_output3.bit_data.KGF16 = un_sample_kgf_command.bit_data.KGF01_CH16_Reserve | un_inf_can_kgf_output1.bit_data.KGF16;
|
||||
|
||||
un_inf_can_kgf_output4.bit_data.KGF01 = un_sample_kgf_command.bit_data.KGF02_ComputerPowerA | un_inf_can_kgf_output2.bit_data.KGF01;
|
||||
un_inf_can_kgf_output4.bit_data.KGF02 = un_sample_kgf_command.bit_data.KGF02_ComputerPowerB | un_inf_can_kgf_output2.bit_data.KGF02;
|
||||
un_inf_can_kgf_output4.bit_data.KGF03 = un_sample_kgf_command.bit_data.KGF02_RemotePower | un_inf_can_kgf_output2.bit_data.KGF03;
|
||||
un_inf_can_kgf_output4.bit_data.KGF04 = un_sample_kgf_command.bit_data.KGF02_VcuE3Power | un_inf_can_kgf_output2.bit_data.KGF04;
|
||||
un_inf_can_kgf_output4.bit_data.KGF05 = un_sample_kgf_command.bit_data.KGF02_NetworkSwitchPowerA | un_inf_can_kgf_output2.bit_data.KGF05;
|
||||
un_inf_can_kgf_output4.bit_data.KGF06 = un_sample_kgf_command.bit_data.KGF02_NetworkSwitchPowerB | un_inf_can_kgf_output2.bit_data.KGF06;
|
||||
un_inf_can_kgf_output4.bit_data.KGF07 = un_sample_kgf_command.bit_data.KGF02_LeftHeadlightA | un_inf_can_kgf_output2.bit_data.KGF07;
|
||||
un_inf_can_kgf_output4.bit_data.KGF08 = un_sample_kgf_command.bit_data.KGF02_LeftHeadlightB | un_inf_can_kgf_output2.bit_data.KGF08;
|
||||
un_inf_can_kgf_output4.bit_data.KGF09 = un_sample_kgf_command.bit_data.KGF02_RightHeadlightA | un_inf_can_kgf_output2.bit_data.KGF09;
|
||||
un_inf_can_kgf_output4.bit_data.KGF10 = un_sample_kgf_command.bit_data.KGF02_RightHeadlightB | un_inf_can_kgf_output2.bit_data.KGF10;
|
||||
un_inf_can_kgf_output4.bit_data.KGF11 = un_sample_kgf_command.bit_data.KGF02_LeftTaillightA | un_inf_can_kgf_output2.bit_data.KGF11;
|
||||
un_inf_can_kgf_output4.bit_data.KGF12 = un_sample_kgf_command.bit_data.KGF02_LeftTaillightB | un_inf_can_kgf_output2.bit_data.KGF12;
|
||||
un_inf_can_kgf_output4.bit_data.KGF13 = un_sample_kgf_command.bit_data.KGF02_RightTaillightA | un_inf_can_kgf_output2.bit_data.KGF13;
|
||||
un_inf_can_kgf_output4.bit_data.KGF14 = un_sample_kgf_command.bit_data.KGF02_RightTaillightB | un_inf_can_kgf_output2.bit_data.KGF14;
|
||||
un_inf_can_kgf_output4.bit_data.KGF15 = un_sample_kgf_command.bit_data.KGF02_ComputerPowerC | un_inf_can_kgf_output2.bit_data.KGF15;
|
||||
un_inf_can_kgf_output4.bit_data.KGF16 = un_sample_kgf_command.bit_data.KGF02_ComputerPowerD | un_inf_can_kgf_output2.bit_data.KGF16;
|
||||
|
||||
canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output3.arr[0]);
|
||||
canSendTo(DF_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output4.arr[0]);
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
flg_wake_ecu = NORMAL;
|
||||
vcu_can_last = vcu_can_cnt;//<EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD>
|
||||
vcu_can_last = vcu_can_cnt;//数据更新
|
||||
}
|
||||
|
||||
GetTemp();//1s<EFBFBD>ɼ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
||||
GetTemp();//1s采集一次温度
|
||||
UnSwSample_1.bit_data.emergency_stop_switch = 0;
|
||||
UnSwSample_1.bit_data.High_voltage_switch = 1;
|
||||
UnSwSample_1.bit_data.CH03 = flg_wake_ecu;
|
||||
|
||||
if(1 == flg_KGF)//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||
{
|
||||
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1.arr[0]); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ɼ<EFBFBD>
|
||||
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1.arr[0]); //不需要发送 小车不需要采集
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625<EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD>
|
||||
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625判断是否出现总线错误
|
||||
{
|
||||
can_error_flg = can_error_cnt;
|
||||
CAN_vInit();
|
||||
|
||||
48
user.H
48
user.H
@@ -94,8 +94,55 @@ typedef union _UnInfCanKGFOutput
|
||||
} UnInfCanKGFOutput;
|
||||
|
||||
|
||||
// VCU -> <20>ɼ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD> 0x15000004
|
||||
typedef struct _StrSampleKgfCommand
|
||||
{
|
||||
//-----KGF01 Ŀ<><C4BF>λͼ byte0..1-----------------------------------------
|
||||
unsigned int KGF01_CH01_Reserve : 1; // bit0 ͨ<><CDA8>1
|
||||
unsigned int KGF01_CH02_Reserve : 1; // bit1 ͨ<><CDA8>2
|
||||
unsigned int KGF01_CH03_Reserve : 1; // bit2 ͨ<><CDA8>3
|
||||
unsigned int KGF01_PrechargeRelay : 1; // bit3 ͨ<><CDA8>4 Ԥ<><D4A4><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>
|
||||
unsigned int KGF01_CH05_Reserve : 1; // bit4 ͨ<><CDA8>5
|
||||
unsigned int KGF01_CH06_Reserve : 1; // bit5 ͨ<><CDA8>6
|
||||
unsigned int KGF01_HighVoltageRelayA : 1; // bit6 ͨ<><CDA8>7 <20><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>A
|
||||
unsigned int KGF01_HighVoltageRelayB : 1; // bit7 ͨ<><CDA8>8 <20><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>B
|
||||
unsigned int KGF01_CH09_Reserve : 1; // bit8 ͨ<><CDA8>9
|
||||
unsigned int KGF01_CH10_Reserve : 1; // bit9 ͨ<><CDA8>10
|
||||
unsigned int KGF01_LowVoltageRelayA : 1; // bit10 ͨ<><CDA8>11 <20><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>A
|
||||
unsigned int KGF01_LowVoltageRelayB : 1; // bit11 ͨ<><CDA8>12 <20><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>B
|
||||
unsigned int KGF01_LowVoltageCharge : 1; // bit12 ͨ<><CDA8>13 <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
|
||||
unsigned int KGF01_CH14_Reserve : 1; // bit13 ͨ<><CDA8>14
|
||||
unsigned int KGF01_CH15_Reserve : 1; // bit14 ͨ<><CDA8>15
|
||||
unsigned int KGF01_CH16_Reserve : 1; // bit15 ͨ<><CDA8>16
|
||||
|
||||
//-----KGF02 Ŀ<><C4BF>λͼ byte2..3-----------------------------------------
|
||||
unsigned int KGF02_ComputerPowerA : 1; // bit16 ͨ<><CDA8>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴA
|
||||
unsigned int KGF02_ComputerPowerB : 1; // bit17 ͨ<><CDA8>2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴB
|
||||
unsigned int KGF02_RemotePower : 1; // bit18 ͨ<><CDA8>3 ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||
unsigned int KGF02_VcuE3Power : 1; // bit19 ͨ<><CDA8>4 VCU(E3)<29><>Դ
|
||||
unsigned int KGF02_NetworkSwitchPowerA : 1; // bit20 ͨ<><CDA8>5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴA
|
||||
unsigned int KGF02_NetworkSwitchPowerB : 1; // bit21 ͨ<><CDA8>6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴB
|
||||
unsigned int KGF02_LeftHeadlightA : 1; // bit22 ͨ<><CDA8>7 <20><>ǰ<EFBFBD><C7B0>A
|
||||
unsigned int KGF02_LeftHeadlightB : 1; // bit23 ͨ<><CDA8>8 <20><>ǰ<EFBFBD><C7B0>B
|
||||
unsigned int KGF02_RightHeadlightA : 1; // bit24 ͨ<><CDA8>9 <20><>ǰ<EFBFBD><C7B0>A
|
||||
unsigned int KGF02_RightHeadlightB : 1; // bit25 ͨ<><CDA8>10 <20><>ǰ<EFBFBD><C7B0>B
|
||||
unsigned int KGF02_LeftTaillightA : 1; // bit26 ͨ<><CDA8>11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A
|
||||
unsigned int KGF02_LeftTaillightB : 1; // bit27 ͨ<><CDA8>12 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
unsigned int KGF02_RightTaillightA : 1; // bit28 ͨ<><CDA8>13 <20>Һ<EFBFBD><D2BA><EFBFBD>A
|
||||
unsigned int KGF02_RightTaillightB : 1; // bit29 ͨ<><CDA8>14 <20>Һ<EFBFBD><D2BA><EFBFBD>B
|
||||
unsigned int KGF02_ComputerPowerC : 1; // bit30 ͨ<><CDA8>15 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴC
|
||||
unsigned int KGF02_ComputerPowerD : 1; // bit31 ͨ<><CDA8>16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴD
|
||||
|
||||
//-----<2D><><EFBFBD><EFBFBD> byte4..7--------------------------------------------------
|
||||
ulong Reserve ; // bit32..63
|
||||
|
||||
} StrSampleKgfCommand;
|
||||
|
||||
typedef union _UnSampleKgfCommand
|
||||
{
|
||||
StrSampleKgfCommand bit_data; // ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ubyte arr[sizeof(StrSampleKgfCommand)]; // ͨ<><CDA8><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>С
|
||||
} UnSampleKgfCommand;
|
||||
|
||||
|
||||
//---<2D>ⲿҪʹ<D2AA>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------------------------------------------
|
||||
@@ -108,6 +155,7 @@ extern ubyte can_error_cnt;
|
||||
extern ubyte can_error_flg;
|
||||
|
||||
extern UnInfCanKGFOutput un_inf_can_kgf_output1;//kgf<67><66><EFBFBD><EFBFBD>
|
||||
extern UnInfCanKGFOutput un_inf_can_kgf_output2;//kgf<67><66><EFBFBD><EFBFBD>
|
||||
|
||||
void CanRXTX(void);
|
||||
void SwSample(void);
|
||||
|
||||
Reference in New Issue
Block a user