Commit 1b44baf5 authored by 李俭双's avatar 李俭双

Merge branch 'lijianshuang' into 'dev'

Lijianshuang

See merge request !9
parents c19632df 63eebee0
...@@ -8,10 +8,10 @@ st_CanMsgTxOp CAN_CH0_CanMsgTxOp; ...@@ -8,10 +8,10 @@ st_CanMsgTxOp CAN_CH0_CanMsgTxOp;
const st_CAN_SendAttribute CAN_CH0_CANSendAttr[CAN_CH0_ID_SEND_TOTAL] = const st_CAN_SendAttribute CAN_CH0_CANSendAttr[CAN_CH0_ID_SEND_TOTAL] =
{ {
{0x220ul, 8ul * 1000ul, 7ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_500, (void *)0}, {0x220ul, 50ul * 1000ul, 7ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_220, (void *)0},
{0x6EEul, 8ul * 1000ul, 7ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_500, (void *)0}, {0x6EEul, 8ul * 1000ul, 7ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_6EE, (void *)0},
{0x6EFul, 8ul * 1000ul, 7ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_500, (void *)0}, {0x6EFul, 8ul * 1000ul, 7ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_6EF, (void *)0},
{0x450ul, 8ul * 1000ul, 7ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_500, (void *)0}, {0x450ul, 8ul * 1000ul, 7ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_450, (void *)0},
}; };
const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] = const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
......
#include "Can_App.h" #include "Can_App.h"
#include "Components.h"
void Can_Set_Buff_500(canlib_uint8_t CopyData[]) void Can_Set_Buff_220(canlib_uint8_t CopyData[])
{ {
CANMsg500Union *p500; CANMsg220Union *p220;
uint8_t i = 0; uint8_t i = 0;
for (i = 0; i < 8; i++)
p220 = (CANMsg220Union *)CopyData;
if ( p220 != ( void * )0 )
{
for ( i = 0u; i < 8u; i++ )
{
p220->Msg [ i ] = 0xFFu;
}
}
p220 -> Sig.TCS_TX = Get_Dis_Tcs_Val();
}
void Can_Set_Buff_6EE(canlib_uint8_t CopyData[])
{
CANMsg6EEUnion *p6EE;
uint8_t i = 0;
p6EE = (CANMsg6EEUnion *)CopyData;
if ( p6EE != ( void * )0 )
{
for ( i = 0u; i < 8u; i++ )
{
p6EE->Msg [ i ] = 0xFFu;
}
}
}
void Can_Set_Buff_6EF(canlib_uint8_t CopyData[])
{
CANMsg6EFUnion *p6EF;
uint8_t i = 0;
p6EF = (CANMsg6EFUnion *)CopyData;
if ( p6EF != ( void * )0 )
{ {
CopyData[i] = 0xFFU; for ( i = 0u; i < 8u; i++ )
{
p6EF->Msg [ i ] = 0xFFu;
}
} }
p500 = (CANMsg500Union *)CopyData; }
if (p500 != (void *)0) void Can_Set_Buff_450(canlib_uint8_t CopyData[])
{
CANMsg450Union *p450;
uint8_t i = 0;
p450 = (CANMsg450Union *)CopyData;
if ( p450 != ( void * )0 )
{ {
//p500->Sig.Key_ISTOP = Auto_Start_Stop; for ( i = 0u; i < 8u; i++ )
p500->Msg[1] = 0x00; {
p500->Msg[2] = 0x00; p450->Msg [ i ] = 0xFFu;
p500->Msg[3] = 0x00; }
p500->Msg[4] = 0x00;
p500->Msg[5] = 0x00;
p500->Msg[6] = 0x00;
p500->Msg[7] = 0x00;
} }
} }
...@@ -11,22 +11,88 @@ typedef union ...@@ -11,22 +11,88 @@ typedef union
uint8_t Msg [ 8 ]; uint8_t Msg [ 8 ];
struct struct
{ {
uint8_t Key_ISTOP : 8; uint32_t Res0 : 3;
uint8_t Res1: 8; uint32_t TCS_TX : 1;
uint8_t Res2: 8; uint32_t Res1: 4;
uint8_t Res3: 8;
uint32_t Res2: 8;
uint8_t Res4: 8; uint32_t Res3: 16;
uint8_t Res5: 8; uint32_t Res4: 32;
uint8_t Res6 : 8;
uint8_t Res7 : 8; } Sig;
} CANMsg220Union;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint32_t Coolant_Seg_TX : 4;
uint32_t Fuel_Seg_TX : 4;
uint32_t Res0 : 8;
uint32_t Fuel_Res_TX : 8;
uint32_t Vsppe_H3_TX : 3;
uint32_t Res1 : 1;
uint32_t Coolant_Warn_TX : 1;
uint32_t Res2 : 2;
uint32_t Uint_TX : 1;
uint32_t Vsppe_L8_TX : 8;
uint32_t ODO_TX : 24;
} Sig;
} CANMsg6EEUnion;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint32_t Espeed_TX : 8;
uint32_t Coolant_TX : 8;
uint32_t TripA : 16;
uint32_t TripB : 16;
uint32_t Res1 : 16;
} Sig;
} CANMsg6EFUnion;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint32_t Front_Pressure_TX : 16;
uint32_t Rear_Pressure_TX : 16;
//uint32_t Front_Air_Leakage_TX : 1;
//uint32_t Rear_Air_Leakage_TX : 1;
//uint32_t Front_Low_Voltage_TX : 1;
//uint32_t Rear_Low_Voltage_TX : 1;
//uint32_t Front_High_Temp_TX : 1;
//uint32_t Rear_High_Temp_TX : 1;
//uint32_t Res0 : 2;
uint32_t Res1 : 32;
} Sig; } Sig;
} CANMsg500Union; } CANMsg450Union;
void Can_Set_Buff_500(canlib_uint8_t CopyData[]); void Can_Set_Buff_220(canlib_uint8_t CopyData[]);
void Can_Set_Buff_6EE(canlib_uint8_t CopyData[]);
void Can_Set_Buff_6EF(canlib_uint8_t CopyData[]);
void Can_Set_Buff_450(canlib_uint8_t CopyData[]);
#endif #endif
...@@ -168,10 +168,7 @@ uint32_t Common_GetSocTime(void) ...@@ -168,10 +168,7 @@ uint32_t Common_GetSocTime(void)
*/ */
uint32_t Data_Km_To_Mile(uint32_t Km) uint32_t Data_Km_To_Mile(uint32_t Km)
{ {
//Km *= 621; Km = (Km * 64u) / 103u;
//Km /= 1000;
Km *= 100;
Km /= 161;
return Km; return Km;
} }
/** /**
......
...@@ -69,81 +69,35 @@ void Data_Vehicle_Speed_Processing_Service(void) ...@@ -69,81 +69,35 @@ void Data_Vehicle_Speed_Processing_Service(void)
uint16_t Delta; uint16_t Delta;
uint32_t VSpeed; uint32_t VSpeed;
uint32_t VSpeedCal; uint32_t VSpeedCal;
//uint8_t ESC_VehicleSpeedvalid; uint8_t ESC_VehicleSpeedState;
uint32_t Vehicle_Speed; uint32_t Vehicle_Speed;
Vehicle_Speed = Get_CAN_CH0_ID_101_Sig_ECU_Vehicle_Speed( ); Vehicle_Speed = Get_CAN_CH0_ID_101_Sig_ECU_Vehicle_Speed( );
//ESC_VehicleSpeedvalid = Get_CAN_CH0_ID_330_Sig_ESC_Vehicle_speed_valid( ); ESC_VehicleSpeedState = Get_CAN_CH0_ID_101_Sig_ECU_Vehicle_Speed_State( );
// 第1步:获取实际车速值及车速有效性 // 第1步:获取实际车速值及车速有效性
if( Common_Get_IG_Sts( ) == COMMON_POWER_ON ) if( Common_Get_IG_Sts( ) == COMMON_POWER_ON )
{ {
if ((CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x101_Msg_Count) == CAN_SIG_LOST) || (Vehicle_Speed > 0XFF))
{
/* 先判断掉线 */
if (CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x101_Msg_Count) == CAN_SIG_LOST) if (CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x101_Msg_Count) == CAN_SIG_LOST)
{ {
DataVSpeedValid = 0; DataVSpeedValid = 0;
DataVSpeedActual = 0; DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0; DataVSpeedSampler.Backup = 0;
} }
#if 0
else if ( ESC_VehicleSpeedvalid == 1 )//发送can无效标志位
{
if ( DataVSpeedSampler.Timer1 <= 10 ) /* 10帧无效 */
{
if ( DataVSpeedValid )//判断车速是否有效,有效采集10次,车速等于上次值
{
DataVSpeedSampler.Timer1++;
DataVSpeedActual = DataVSpeedSampler.Backup;
}
else//无效,不采集,车速=0
{
DataVSpeedSampler.Timer1 = 10;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
}
else//不采集就,车速=0
{
DataVSpeedValid = 0;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
}
#endif
else /* 收到无效值 */
{
if ( DataVSpeedSampler.Timer <= 100 ) /* 100帧无效值 */
{
if ( DataVSpeedValid )
{
DataVSpeedSampler.Timer++;
DataVSpeedActual = DataVSpeedSampler.Backup;
}
else else
{ {
DataVSpeedSampler.Timer = 100; if (ESC_VehicleSpeedState == 1)
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
}
else // 接收到100帧无效值
{ {
DataVSpeedValid = 0; DataVSpeedValid = 0;
DataVSpeedActual = 0; DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0; DataVSpeedSampler.Backup = 0;
} }
} else
}
else //车速在线且有效
{ {
if ( DataVSpeedValid == 0 ) if ( DataVSpeedValid == 0 )
{ {
DataVSpeedValid = 1; DataVSpeedValid = 1;
VSpeed = Vehicle_Speed; VSpeed = Vehicle_Speed;
// VSpeed *= 9;
// VSpeed >>= 4;
DataVSpeedActual = VSpeed * 10; DataVSpeedActual = VSpeed * 10;
} }
else else
...@@ -164,13 +118,13 @@ void Data_Vehicle_Speed_Processing_Service(void) ...@@ -164,13 +118,13 @@ void Data_Vehicle_Speed_Processing_Service(void)
{ {
DataVSpeedSampler.Cnt = 0; DataVSpeedSampler.Cnt = 0;
VSpeed = DataVSpeedSampler.Buffer [ 1 ]; VSpeed = DataVSpeedSampler.Buffer [ 1 ];
//VSpeed *= 9;
//VSpeed >>= 4;
DataVSpeedActual = VSpeed * 10; DataVSpeedActual = VSpeed * 10;
} }
DataVSpeedSampler.Timer = 0; DataVSpeedSampler.Timer = 0;
DataVSpeedSampler.Timer1 = 0; DataVSpeedSampler.Timer1 = 0;
DataVSpeedSampler.Backup = DataVSpeedActual; DataVSpeedSampler.Backup = DataVSpeedActual;
DataVSpeedValid = 1;
}
} }
} }
} }
...@@ -251,8 +205,8 @@ void Data_Vehicle_Speed_Processing_Service(void) ...@@ -251,8 +205,8 @@ void Data_Vehicle_Speed_Processing_Service(void)
else else
{ {
DataVSPeedDamping.Speed += Delta; DataVSPeedDamping.Speed += Delta;
if ( DataVSPeedDamping.Speed > 1200 ) if ( DataVSPeedDamping.Speed > 1990 )
DataVSPeedDamping.Speed = 1200; DataVSPeedDamping.Speed = 1990;
} }
} }
else // 显示值正在向实际值减小,则维持当前方向调节增加速度 else // 显示值正在向实际值减小,则维持当前方向调节增加速度
...@@ -300,8 +254,8 @@ void Data_Vehicle_Speed_Processing_Service(void) ...@@ -300,8 +254,8 @@ void Data_Vehicle_Speed_Processing_Service(void)
else else
{ {
DataVSPeedDamping.Speed += Delta; DataVSPeedDamping.Speed += Delta;
if ( DataVSPeedDamping.Speed > 1200 ) if ( DataVSPeedDamping.Speed > 1990 )
DataVSPeedDamping.Speed = 1200; DataVSPeedDamping.Speed = 1990;
} }
} }
else // 显示值当前是减小方向 else // 显示值当前是减小方向
...@@ -336,12 +290,14 @@ void Data_Vehicle_Speed_Processing_Service(void) ...@@ -336,12 +290,14 @@ void Data_Vehicle_Speed_Processing_Service(void)
if ( DataVSpeedValid ) if ( DataVSpeedValid )
{ {
VSpeedCal *= 108; VSpeedCal *= 107;
VSpeedCal /= 100; VSpeedCal /= 100;
if((VSpeedCal % 10) >= 5) VSpeedCal = VSpeedCal + 10;
if(VSpeedCal > 1990)
{ {
VSpeedCal += 5; /* 四舍五入 */ VSpeedCal = 1990;
} }
DataVSpeedDisp = ( uint16_t )VSpeedCal; DataVSpeedDisp = ( uint16_t )VSpeedCal;
} }
else else
...@@ -366,24 +322,21 @@ uint16_t Get_DispVechileSpeed(void) ...@@ -366,24 +322,21 @@ uint16_t Get_DispVechileSpeed(void)
uint16_t Vspeed = 0; uint16_t Vspeed = 0;
if(Get_Dis_KM_Unit() == 0) /* KM */ if(Get_Dis_KM_Unit() == 0) /* KM */
{ {
if ( DataVSpeedDisp >= 1200 ) if ( DataVSpeedDisp >= 1990 )
{ {
DataVSpeedDisp = 1200; DataVSpeedDisp = 1990;
} }
Vspeed = DataVSpeedDisp; Vspeed = DataVSpeedDisp;
} }
else //if (Get_Dis_KM_Unit() == 1) /* MILE */ else /* MILE */
{ {
Vspeed = Data_Km_To_Mile(DataVSpeedDisp); Vspeed = Data_Km_To_Mile(DataVSpeedDisp);
if ( Vspeed >= 750 ) if ( Vspeed >= 1230 )
{ {
Vspeed = 750; Vspeed = 1230;
} }
} }
// else
// {
// ;
// }
return Vspeed; return Vspeed;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment