You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1086 lines
40 KiB

#ifndef __CAN_H
#define __CAN_H
#include "stm32f10x.h"
#include "ProtocolGenfo.h"
#include "Common_Type.h"
#include "main.h"
//#include "App_Curr.h"
//#include "App_Driver.h"
//#include "App_MotorGiven.h"
//////////////////////////////////////////////////////////////////////////////////
#define IAP_ADDR 0x08000000 //IAP�׵�ַ 0K-19K
#define APP_ADDR 0x08005000 //APP�׵�ַ 20K-119K
#define UPGRADE_FLAG_ADDR 0x08039000 //��д��־����ҳ 228K
//#define BIN_ADDR 0x08020000 //BIN�׵�ַ 129K-228K
//#define BOOT_VERSION_ADDR 0x0801D800 //boot�汾�Ŵ洢��ַ ��119K -120K
//#define NEW_BIN_SIZE_ADDR 0x0801E000 //�¹̼����ȱ�־��ͨ�����Ⱥ���JF�����ȣ�У��ȷ���Ƿ��������� ��121K -122K
#define FactoryID 0x04
#define HWVersion 0x0101 //
#define SWVersion 10022 //�����汾�� ���汾��(1-5).�ΰ汾��(0-99).������(0-99): 50101��ʾ5.01.01
extern word_def CANStateAdr;
extern uint8_t sn_code[36];
#define UpgradeRequest CANStateAdr.bit.b0
extern unsigned short CRC16_XMODEM(unsigned char *data, unsigned int datalen);
typedef void (*iapfun)(void);
//extern u16 CycleTime_22NID[12];
extern u16 CycleTime_22NID[26]; //qiuadd
#define MAX_TICK_VALUE 0xfeff
#define FOREMOST_TIME 0xff00
#define LATTERMOST_TIME 0xff01
#define MIN_INTERVAL 0
#define MAX_INTERVAL MAX_TICK_VALUE
#define MAX_SHAKE_CNT 11
typedef struct
{
uint16_t Tick2Ms_Cnt;
uint16_t latest_change_time[MAX_SHAKE_CNT];
uint8_t latest_change_index;
uint16_t clear_time;
uint8_t Shake_Error_Flag;
} HandRail_Shake_t;
extern HandRail_Shake_t HandRail_Shake;
uint16_t Get2MsTickInterval(uint16_t LastTickVal);
//CAN1����RX0�ж�ʹ��
#define CAN1_RX0_INT_ENABLE 1 //0,��ʹ��;1,ʹ��.
void MC_Broadcast_Update(void);
#endif
/* �����źŽṹ�� */ // ��д����
typedef struct
{
INT8U MC_WorkMode : 8;
union
{
INT8U MC_PowerMode_Byte;
struct
{
INT8U PowerEnable : 4; //bit3-bit0 �Ƿ���������
INT8U PowerMode : 4; //bit3-bit0 ����ģʽ
} MC_PowerMode_Bit;
} MC_PowerMode_State;
INT8U SOC_CurLimit : 8;
union
{
INT8U MC_SupplySet_Byte;
struct
{
INT8U LoadSensorSupply : 2; //bit1-bit0 ���ع���
INT8U TailLightSupply : 2; //bit3-bit2 ����ģʽ
INT8U Reserved : 4; //Ԥ��
} MC_SupplySet_Bit;
} MC_SupplySet_State;
union
{
INT8U Current_slope_Byte;
struct
{
INT8U Slope_gradient : 6; //�¶� 0-63��
INT8U Uphill_or_downhill : 1; //0���� 1����
INT8U EffectiveValueFlag : 1; //0��Ч 1��Ч
} MC_PowerMode_Bit;
} Current_slope_State;
union
{
INT8U VehicleDipAngle_Byte;
struct
{
INT8U DipAngle : 6; //��б�Ƕ�
INT8U Left_or_Right : 1; //������
INT8U EffectDipValueFlag : 1; //0��Ч 1��Ч
} VehicleDipAngle_Bit;
} VehicleDipAngle_State;
INT8U SOC_BackCurLimit : 8; //SOC��������ֵ
} tCAN202RxSignalTyp;
typedef struct
{
INT8U ThrottleVol : 8;
INT8U LeftBrakeVol : 8;
INT8U RightBrakeVol : 8;
union
{
INT8U PeripheralError_Byte;
struct
{
INT8U DateUpdateFlag : 1; //�������ʱ���
INT8U RightBrakeError : 1; //��ɲ������
INT8U LeftBrakeError : 1; //��ɲ������
INT8U ThrottleError : 1; //ת�ѹ���
INT8U ThrottleSlopeError : 1; //ת��б�ʹ���
INT8U ThrottleUnstableError : 1; //ת�ѵ�ѹ���ȶ�
INT8U ThrottleSupplyError : 1; //תɲ�ѵ�Դ����
INT8U Reserved : 1; //Ԥ��
} PeripheralError_Bit;
} PeripheralError_State;
INT8U ThrottleSupplyVol : 8; //ת�ѹ�����ѹ
INT8U BrakeSupplyVol : 8; //ɲ�ѹ�����ѹ
} tCAN20CRxSignalTyp;
typedef struct
{
INT16U SpeedValue :16;
INT16U LowVolValue :16;
INT16U CurLimiteValue :16;
INT8U FrontLight_Fre :8;
INT8U FrontLightDriving_Fre :8;
INT8U TailLight_Fre :8;
INT8U BrakeLight_Fre :8;
INT8U ThrottleLight_Fre :8;
INT8U OverWeightValue :8;
INT8U SeatPressureMode :8;
INT8U NoLoadFlyBikeMode :8; //���ط��ɳ�
INT8U TCS_Mode :8;
INT8U ClimbPowerInc :8;
INT8U BrakeOnHandProtect :8;
INT8U ZeroStartValue :8;
INT16U RechargeCur :16; //��������ֵ
union
{
INT8U TripInfoClear_Byte;
struct
{
INT8U Reserved : 2; //Ԥ��
INT8U RightBreakVolClear : 1; //��������������ɲ��������ѹ
INT8U LeftBreakVolClear : 1; //��������������ɲ��������ѹ
INT8U RightBreakTimesClear : 1; //��������������ɲ������
INT8U LeftBreakTimesClear : 1; //��������������ɲ������
INT8U OdometerClearFlag : 1; //����������������
INT8U MaxSpeedClearFlag : 1; //�����������������ٶ�
} TripInfoClear_Bit;
} TripInfoClear_State;
INT8U FlyBikeProtectSwitch :8;
INT8U HBarSlopeLimieValue :8;
INT8U HBarStandardLimiteValue :8;
INT8U HBarStandardTimeValue :8;
INT8U BatteryLockSwitch :8;
INT8U WheelPolePairs :8;
INT8U WheelPerimeter :8;
INT8U NoZeroStartSet :8;
INT8U MotorParaCRC :8;
INT16U BEMF_Vol :16;
INT16U MotorResistance :16;
INT16U Q_Axis_Inductance :16;
INT16U D_Axis_Inductance :16;
INT8U PedalStartSpeedValue :8;
INT8U PedalStartPulseValue :8;
union
{
INT8U PedalOverSpeed_Byte;
struct
{
INT8U PedalMode : 2; //����ģʽ 0x0������ 0x1 �������� 0x2 ǿ����
INT8U PedalKeep : 1; //�������ٺ��Ƿ񱣳�����
INT8U Reserved : 5; //Ԥ��
} PedalOverSpeed_Bit;
} PedalOverSpeed_State;
INT8U PedalStartForce : 8; //��������ǿ��ϵ��
INT8U PedalAcleForce : 8; //���ٽ׶���?ǿ��ϵ��
INT8U PedalStopForce : 8; //˥���׶α�����?ʱ��
INT8U HDC_Flag : 8; //���»�����־λ
INT8U LowSpeedPedalInc : 8; //����������ǿ
INT8U WeakSpeedInc : 8; //�������ٹ���
INT8U JumpToBOOT_flg :8;
INT8U CycleSendEnable_flg :8;
INT8U CANMessageErrReport_flg :8;
INT16U OverVolValue :16; //��ѹֵ
} tCanRxSignalTyp;
typedef struct
{
INT8U ID00[8];
INT8U ID01[8];
INT8U ID02[8];
INT8U ID03[8];
INT8U ID04[8];
INT8U ID05[8];
INT8U ID06[8];
INT8U ID07[8];
INT8U ID08[8];
INT8U ID09[8];
INT8U ID10[8];
INT8U ID11[8];
INT8U ID12[8];
INT8U ID13[8];
INT8U ID14[8];
INT8U ID15[8];
INT8U ID16[8];
INT8U ID17[8];
INT8U ID18[8];
INT8U ID19[8];
INT8U ID20[8];
INT8U ID21[8];
INT8U ID22[8];
INT8U ID23[8];
INT8U ID24[8];
INT8U ID25[8];
} tCANTxBroadcast;
typedef struct
{
INT8U ID01[28]; //28
INT8U ID02[76];
INT8U ID03[23];
INT8U ID04[23];
INT8U ID05[23];
INT8U ID06[23];
INT8U ID07[65];
INT8U ID08[16];
} tMULCANTxBroadcast;
typedef struct
{
INT8U WorkMode_State;
union
{
INT8U PowerModeState_Byte;
struct
{
INT8U PowerOutputEnable : 4; //�Ƿ���������
INT8U PowerOutputMode : 4; //����ģʽ
}PowerModeState_Bit;
}PowerMode_State;
INT8U Speed_Float;
union
{
INT8U MC_SupplyState_Byte;
struct
{
INT8U LoadSensorSupplyState : 2; //bit1-bit0 ���ع���
INT8U TailLightSupplyState : 2; //bit3-bit2 ����ģʽ
INT8U Reserved : 4; //Ԥ��
}MC_SupplySetState_Bit;
}MC_SupplySet_State;
INT8U SpeedValue; //��ǰ���� KM/H
INT8U Bike_Start_Status; //��������״̬
union
{
INT8U BatteryLockState_Byte;
struct
{
INT8U BatteryLockHeadState1 : 1; //����������״̬
INT8U BatteryLockMotorstate : 2; //��������״̬
INT8U BatteryLockHeadState2 : 2; //����������״̬
INT8U Reserved : 3; //����������״̬
}BatteryLockState_Bit;
}BatteryLock_State; //������״̬
INT8U PedalStartMode_State; //��������ģʽ����
INT16U Bus_Vol; //������ѹ����λ0.1V //ID:221
INT16S Bus_Cur; //ĸ�ߵ��� ��λ0.1A
INT8U Throttlt_Vol; //ת�ѵ�ѹ ��λ0.1V
INT8U LeftBrake_Vol; //��ɲ����ѹ ��λ0.1V
INT8U RightBrake_Vol; //��ɲ����ѹ ��λ0.1V
union
{
INT8U TCSandBrakeState_Byte;
struct
{
INT8U TCS_Switch_State : 1; //TCS���� 1���� 0����
INT8U FlyBikeProtect_State : 1; //bit3-bit2 ����ģʽ
INT8U BrakeType : 1; //ɲ������
INT8U HandUnreleasedProtcct_State : 1; //ɲ��ת��δ�ͷ�
INT8U RearArmrestSwitch_State : 1; //�����ֿ���״̬
INT8U RBrake_Loose_State : 1; //��ɲ��բ���ɶ�״̬
INT8U LBrake_Loose_State : 1; //��ɲ��բ���ɶ�״̬
INT8U ClimbHillPedalInc_State : 1; //����������ǿ
}TCSandBrakeState_Bit;
}TCSandBrake_State;
INT16S MotorSpeed; //����ת��
INT16U HallChange500ms; //500����������
INT8U MC_Temp; //�������¶�
INT8U HallCurValue; //��������ֵ
union
{
INT8U MC_Protect1State_Byte;
struct
{
INT8U Motor_Blocked_Protect : 1; //��ת����
INT8U NoLoadFlyBike_Protect : 1; //���ط��ɳ�����
INT8U HandGndBreak_Protect : 1; //ת�ѵ�����
INT8U MultiUserRiding_Protect : 1; //���������
INT8U OverCurrent_Protect : 1; //��������
INT8U OverVoltage_Protect : 1; //��ѹ����
INT8U UnderVoltage_Protect : 1; //Ƿѹ����
INT8U PoweonFlyBike_Protect : 1; //�ϵ����ɳ�����
} MC_Protect1State_Bit;
} MC_Protect1_State;
union
{
INT8U MC_Protect2State_Byte;
struct
{
INT8U Reserved : 3; //����
INT8U SortOverCur_Protect : 1; //��������
INT8U HandNotRelease_Protect : 1; //��ֹ��δ�ͷ��ְ�
INT8U HandVolUnstable_Protect : 1; //ת�ѵ�ѹ���ȶ�
INT8U HandVolRise_Protect : 1; //ת�ѵ�ѹ��������
INT8U Tempture_Protect : 1; //�¶ȱ���
} MC_Protect2State_Bit;
} MC_Protect2_State;
INT16U UnderVoltageValue;
INT16U BusCurLimitValue;
INT16U SpeedLimitValue;
INT8U OverLoadValue;
INT8U MotorTemp;
union
{
INT8U Perip1Error_Byte;
struct
{
INT8U PressureSwitch_Error : 1; //����ѹ�����ع���
INT8U GNDshort5V_Error : 1; //5V��GND��·
INT8U HandBar_Error : 1; //ת�ѵ�����
INT8U RightBrake_Error : 1; //��ɲ������
INT8U LeftBrake_Error : 1; //��ɲ������
INT8U LoadSensorSupply_Error : 1; //�����صȹ����λ�·����
INT8U RearArmrestSwitch_Error : 1; //�����ֿ��ع���
INT8U MotorHall_Error : 1; //������������
} Perip1Error_Bit;
} Perip1Error_State;
union
{
INT8U Perip2Error_Byte;
struct
{
INT8U HallC_Error : 1; //��������C����
INT8U HallB_Error : 1; //��������B����
INT8U HallA_Error : 1; //��������A����
INT8U MotorPhaseLose_Error : 1; //����ȱ������
INT8U BreakLight_Error : 1; //ɲ���ƴ���
INT8U XCDLight_Error : 1; //�г��ƴ���
INT8U TailLight_Error : 1; //β�ƹ���
INT8U MainLigh_Error : 1; //����
} Perip2Error_Bit;
} Perip2Error_State;
union
{
INT8U MCError_Byte;
struct
{
INT8U Reserved : 6; //������������
INT8U InsideVol_Error : 1; //β�ƹ���
INT8U MOSDamage_Error : 1; //MOS���ջ�
} MCError_Bit;
} MCError_State;
union
{
INT8U IOT_MessageError_Byte;
struct
{
INT8U Periodic_message_Error : 1; //���ڱ��Ĺ���
INT8U HandBrake_message_Error : 1; //תɲ�ѱ��Ĺ���
INT8U Reserved : 6; //���ر��Ĺ���
} IOT_MessageError_Bit;
} IOT_MessageError_State;
union
{
INT8U BMSError_Byte;
struct
{
INT8U BMS_communication_Error : 1; //����ͨ�Ŵ���
INT8U BMS_Dataframetimeout_Error : 1; //��������֡��ʱ
INT8U MosStateRead_Error : 1; //MOS״̬��ȡ����
INT8U Reserved : 5; //Ԥ��
} BMSError_Bit;
} BMSError_State;
INT16U MaxSpeedValue :16 ; //�������������ٶ�
INT16U OdometerValue :16 ; //������������
INT8U LeftBrakeTimes :8;
INT8U RightBrakeTimes :8;
INT8U LeftBrakeValueMax :8;
INT8U RightBrakeValueMax :8;
INT8U BootVersion :8;
INT8U Factory_ID :8;
INT16U HardwareVersion :16;
INT16U SoftwareVersion :16;
INT16U CanProtocolVersion :16;
INT8U MC_ID[16];
INT8U Second_Circuit_Vol:8;
INT16U Feedback_CurLimit :16;
INT32S Riding_mileage:32;
INT8U MaxThrottleVol :8;
INT8U EstimatedLoadValue :8;
INT8U MotorPoles :8;
INT8U WheelCircumference:8;
INT16U MotorBackElecVol :16;
INT16U MotorResistance :16;
INT16U MotorQInductance :16;
INT8U PedalPulseStartValue :8;
INT8U PedalSpeedStartValue :8;
INT8U Pedal_Frequency :8;
INT8U PedalMode :8;
INT8U PedalStartForce :8;
INT8U PedalStartAccel :8;
INT8U PedalStopKeepTime :8;
INT8U PedalStopOverSpeed :8;
union
{
INT8U MC_FunctionSwitch1_Byte;
struct
{
INT8U Reserved :5; //����
INT8U WeakSpeedIncBit :1; //�������ٹ���
INT8U LowSpeedPedalIncBit :1; //����������ǿ
INT8U DownHillControlBit :1; //���»���
} MC_FunctionSwitch1_bit;
} MC_FunctionSwitch1_Set;
union
{
INT8U MC_FunctionSwitch2_Byte;
struct
{
INT8U Reserved :7; //����
INT8U NoZeroStartSetBit :1; //��0��������
} MC_FunctionSwitch2_bit;
} MC_FunctionSwitch2_Set;
INT16U D_Axis_InductanceSend :16; //D������
INT16U OverVolValue :16; //��ѹֵ
} tCanTxSignalTyp;
typedef struct {
/**************������������״̬��Ϣ ��չ֡ ��ID=0x18FF0200������ 20ms**************/
union
{ INT8U VehicleState_error0_Byte;
struct
{
INT8U MCULowVol :1;//Ƿѹ����
INT8U MCUOverCur :1;//��������
INT8U MCUOverVol :1;//��ѹ����
INT8U MCUHighTemp :1;//���¹���
INT8U motorOverSpeed :1;//�������ٹ���
INT8U MCUDriveFault :1;//��������������
INT8U MOSFault :1;//mos�ܹ���
INT8U breakFault :1;//ɲ������
}VehicleState_error0_Bit;
}VehicleState_error0;
union
{
INT8U VehicleState_error1_Byte;
struct
{
INT8U hbarFault :1;//ת�ѹ���
INT8U motorPhaseFault :1;//����ȱ������
INT8U motorHallFault :1;//������������
INT8U motorHighTemp :1;//�������¹���
INT8U motorLocked :1;//������ת����
INT8U MCULowVolWarning :1;//������Ƿѹ�����桱
INT8U motorZeroDrift :1;//������Ư����
INT8U MCU_TCSMode :1;//MCU-TCSģʽ: 0x0:ǿ 0x1:��
}VehicleState_error1_Bit;
}VehicleState_error1;
union
{
INT8U VehicleState_state2_Byte;
struct
{
INT8U ReadyState :1;//Ready״̬
INT8U P_gaerState :1;//P��״̬ 0x0��P��״̬��Ч 0x1��P��״̬��Ч
INT8U reverseState :1;//��������״̬
INT8U trolleyState :1;//�Ƴ�����״̬
INT8U cruiseState :1;//Ѳ������״̬
INT8U breakButtonState :1;//ɲ������״̬
INT8U lockMotorState :1;//������״̬
INT8U nitrogenBoostFunction :1;//��������Boost���ܣ�0x0:BOOST�����ѹر�/�������ܽ��� 0X1:BOOST�����ѿ���/�������ܿ���
}VehicleState_state2_Bit;
}VehicleState_state2;
union
{
INT8U VehicleState_state3_Byte;
struct
{
INT8U gearState :2;//��λ״̬��x��=0x0:������ģʽ0x0:A���� 0x1:0x3:S�˶�x��=0x1:����ģʽ0x0:X1�� 0x1:X2��0x2:AI��0x3:Ԥ��
INT8U MCU_TCSFuction :1;//MCU-TCS����: 0x0:�ر� 0x1:����
INT8U rampParkingFunction:1;//�µ�פ������ 0x0:�µ�פ�������ѹر� 0x1���µ�פ�������ѿ���
INT8U nitrogenBoostState :1;//"��������Boost״̬:0x0:δ����BOOST/����δ����0X1:����BOOST/����������"
INT8U singleThrottleMode :2;//������ģʽ 00��������δ���뵥����ģʽ 01�����������뵥����ģʽ1�� 02�����������뵥����ģʽ2�� 03�����������뵥����ģʽ3�� ������������̤��ģʽ��
INT8U XGear :1;//"x��������ģʽ��0x0:������ģʽ0x1:����ģʽ"
}VehicleState_state3_Bit;
}VehicleState_state3;
INT8U VehicleState_motorSpeedRpmHigh;//ʵʱת��RPM���ֽ�
INT8U VehicleState_motorSpeedRpmLow;//ʵʱת��RPM���ֽ� ���棺1RPM/bitƫ������0ָʾ��Χ��0~30000
INT8U VehicleState_MCUTemp;//�������¶ȣ��޷����������棺1��/bitƫ������-40��ָʾ��Χ��-40~150
INT8U VehicleState_motorTemp;//�����¶ȣ��޷����������棺1��/bitƫ������-40��ָʾ��Χ��-40~150
/**************��������Ϣ ��չ֡ ��ID=0x18FF0201������ 20ms**************/
}tCanTxVehicleState;
typedef struct
{
/**************��������Ϣ ��չ֡ ��ID=0x18FF0201������ 20ms**************/
INT8U MCUVolHigh; //��������ѹ���ֽ� ���棺0.1V/bit ƫ������0V ָʾ��Χ��0~800V
INT8U MCUVolLow; //��������ѹ���ֽ�
INT8U MCUCurHigh; //������ʵʱ�������ֽ� ���棺0.1A/bit ƫ������-1000 ָʾ��Χ��-100~1500A ��ֵ��ʾ�ų�������
INT8U MCUCurLow; //������ʵʱ�������ֽ�
INT8U nitrogenPercentage; //�����ٷֱ�/����ʣ��ʱ�� ���棺1%/bit ƫ������0 ָʾ��Χ��0~100%
INT8U hbarPercentage; //ת�ѿ��Ȱٷֱ� ���棺1%/bit ƫ������0 ָʾ��Χ��0~100%
INT8U hbarVolHigh; //ת���źŵ�ѹ���ֽ� ���棺0.01V/bit ƫ������0V ָʾ��Χ��0~5V
INT8U hbarVolLow; //ת���źŵ�ѹ���ֽ�
} tMCUInformation1;
typedef struct
{
/**************��������Ϣ ��չ֡ ��ID=0x18FF0202������ 20ms**************/
INT8U motorTorquePercentage; //����ʵʱŤ�ذٷֱ� ����0.5 ��λ% ��Ч��Χ0x00~0xC8 ��Чֵ0xFF
INT8U fanOutput; //��������ռ�ձ� ���棺1%/bit ƫ������0 ָʾ��Χ��0~100%
union
{
INT8U vehicleFunction_Byte;
struct
{
INT8U HTC_flag : 1;//���»������ܿ��� 0x0:�ر� 0x1:����
INT8U sideSupportInductionFunction: 1;//פ����Ӧ���ܿ��أ��߳Ŷϵ繦�ܣ�0x0:�ر� 0x1:����
INT8U lowVolSpeedLimitMode : 1;//�͵�������ģʽ���ܿ��� 0x0:�ر� 0x1:����
INT8U simpleDriveMode : 1;//��������ģʽ���ܿ��� 0x0:�ر� 0x1:����
INT8U helpPromoteMode : 1;//��������ģʽ���ܿ��� 0x0:�ر� 0x1:����
INT8U reverseMode : 1;//�������ܿ��� 0x0:�ر� 0x1:����
INT8U MCUEmergencyModeState : 1;//������Ӧ��ģʽ����״̬ 0x0:�ر� 0x1:����
INT8U MCUBreakFution : 1;//������ɲ�����ܿ��� 0x0:�ر� 0x1:����
} vehicleFunction_Bit;
} vehicleFunction;
union
{
INT8U vehicleFunctionState_Byte;
struct
{
INT8U HTCState : 1;//���»���״̬
INT8U MCU_TCSFuctionState : 1;//TCS����״̬
INT8U rampParkingFunctionState : 1;//�µ�פ��״̬
INT8U MCUEABSState : 1;//E-ABS״̬
INT8U selfBalancingFunction : 1;//��ƽ�⹦�ܿ��� 0x0:�ر� 0x1:����
INT8U reserved : 3;//Ԥ��
} vehicleFunctionState_Bit;
} vehicleFunctionState;
union
{
INT8U buttonState_Byte;
struct
{
INT8U buttonMODEDown : 1;//MODE-����
INT8U buttonMODEUp : 1;//MODE+����
INT8U buttonPgear : 1;//P������
INT8U buttonCruise : 1;//Ѳ������
INT8U breakPowerOffState : 1;//ɲ���ϵ缤��״̬
INT8U reserved : 3;//Ԥ��
} buttonState_Bit;
} buttonState;
union
{
INT8U vehicleReminder_Byte;
struct
{
INT8U noDriverReminder : 1;//δ���⵽��ʻԱ���� 0x0:���⵽��ʻԱ 0x1:δ���⵽��ʻԱ
INT8U noReleasePgearReminder : 1;//δ����P������ 0x0:�ѽ���P�� 0x1:δ����P��
INT8U noReleaseSideSupportReminder: 1;//δ�����߳����� 0x0:�ѽ����߳� 0x1:δ�����߳�
INT8U sideSupportInductionState : 1;//פ����Ӧ״̬ 0:�߳ŷ��� 1:�߳�����
INT8U volResponse : 4;//��ѹ�ȼ����� 0x0:��Ч 0x1:72V 0x2:60V 0x3:48V
} vehicleReminder_Bit;
} vehicleReminder;
union
{
INT8U vehicleFunction2_Byte;
struct
{
INT8U unlockSpeedLimit : 2;//��������������״̬ 0x0:Ĭ�� 0x1:�������� 0x2:�ص�����
INT8U zeroForcePushFunction : 1;//�������й��� 0x0:�ر� 0x1:����
INT8U zeroForcePushFunctionState : 1;//�������м���״̬ 0x0:��Ч 0x1:��Ч
INT8U reserved : 4;//Ԥ��
} vehicleFunction2_Bit;
} vehicleFunction2;
union
{
INT8U vehicleError_Byte;
struct
{
INT8U MCUErrorLevel : 4;//���������ϵȼ� 0x0:�޹��� 0x1:1�� 0x2:2�� 0x3:3��
INT8U EABSPowerLevel : 2;//E-ABS�������յȼ� 0x0:�ر� 0x1:�� 0x2:�е� 0x3:ǿ
INT8U MCUOverTempAlarm : 1;//���������¸澯 0:���� 1:�澯����E216
INT8U motorOverTempAlarm : 1;//�������¸澯 0:���� 1:�澯����E217
} vehicleError_Bit;
} vehicleError;
} tMCUInformation2;
typedef struct
{
/**************��������Ϣ ��չ֡ ��ID=0x18FF0203������ 20ms**************/
INT8U vehicleSpeedHigh; //����ʵ�ʳ��ٸ��ֽ� ���棺0.1Km/h/bit ƫ������0 ָʾ��Χ��0~500Km/h
INT8U vehicleSpeedLow; //����ʵ�ʳ��ٵ��ֽ�
INT8U cruiseSpeedTargetHigh; //����Ѳ��Ŀ�공�ٸ��ֽ� ���棺0.1Km/h/bit ƫ������0 ָʾ��Χ��0~500Km/h
INT8U cruiseSpeedTargetLow; //����Ѳ��Ŀ�공�ٵ��ֽ�
INT8U MCURequestTorquePercentage;//����������Ť�ذٷֱ� ����0.5 ��λ% ��Ч��Χ0x00~0xC8 ��Чֵ0xFF
INT8U reserved; //Ԥ��
union
{
INT8U MCUCurrentMaxSpeedReaction_Byte;
struct
{
INT8U MCUCurrentMaxSpeedReactionHigh : 7;//��������ǰģʽ�����߳��ٷ������ֽڵ�7λ
INT8U MCUCurrentMaxSpeedReactionState: 1;//��������ǰģʽ�����߳��ٷ���״̬ 0x0:�ر� 0x1:����
} MCUCurrentMaxSpeedReaction_Bit;
} MCUCurrentMaxSpeedReaction;
INT8U MCUCurrentMaxSpeedReactionLow; //��������ǰģʽ�����߳��ٷ������ֽ�
} tMCUInformation3;
typedef struct
{
/**************��������Ϣ ��չ֡ ��ID=0x18FF0204������ 200ms**************/
INT8U MCUPhaseACurHigh; //������A���������ֽ� ���棺0.1A/bit ƫ������0 ָʾ��Χ��0~2000A
INT8U MCUPhaseACurLow; //������A���������ֽ�
INT8U MCUPhaseBCurHigh; //������B���������ֽ� ���棺0.1A/bit ƫ������0 ָʾ��Χ��0~2000A
INT8U MCUPhaseBCurLow; //������B���������ֽ�
INT8U MCUPhaseCCurHigh; //������C���������ֽ� ���棺0.1A/bit ƫ������0 ָʾ��Χ��0~2000A
INT8U MCUPhaseCCurLow; //������C���������ֽ�
INT8U InstrumentSpeed; //�DZ���ʾ���� ���棺1Km/h/bit ƫ������0 ָʾ��Χ��0~500Km/h
} tMCUInformation4;
typedef struct
{
/**************��������Ϣ ��չ֡ ��ID=0x18FF0205������ 200ms**************/
union
{
INT8U vehicleGear_Byte;
struct
{
INT8U EGearState : 1;//E���õ�λ����״̬ 0x0:���� 0x1:����
INT8U CGearState : 1;//C�˶���λ����״̬ 0x0:���� 0x1:����
INT8U SGearState : 1;//S���ҵ�λ����״̬ 0x0:���� 0x1:����
INT8U X1GearState : 1;//X1����λ����״̬ 0x0:���� 0x1:����
INT8U X2GearState : 1;//X2����λ����״̬ 0x0:���� 0x1:����
INT8U AIGearState : 1;//AI��ģʽ��λ����״̬ 0x0:���� 0x1:����
INT8U reserved : 2;//Ԥ��
} vehicleGear_Bit;
} vehicleGear;
union
{
INT8U vehicleFunctionState_Byte;
struct
{
INT8U hbarBackHTCFuction : 1;//����ת���������չ��� 0x0:�ر� 0x1:����
INT8U hbarBackHTCState : 1;//����ת���������ռ���״̬ 0x0:��Ч 0x1:��Ч
INT8U hbarBackReverseFunction : 1;//����ת�ѵ������� 0x0:�ر� 0x1:����
INT8U hbarBackReverseState : 1;//����ת�ѵ�������״̬ 0x0:��Ч 0x1:��Ч
INT8U AIOperationMode : 4;//AI����ģʽ 0x1:������ 0x2:��׼�� 0x3:�˶��� 0x4:������ 0x5:��ʦ��
} vehicleFunctionState_Bit;
} vehicleFunctionState;
INT8U AIGearThrottlePointPercentage; //AI��λ���Ż��ְٷֱ� ���棺1%/bit ƫ������0 ָʾ��Χ��0~100%
INT8U Count; //COUNT�ܴ���
INT8U Count1; //COUNT1����
INT8U Count2; //COUNT2����
INT8U Count3; //COUNT3����
INT8U Count4; //COUNT4����
} tMCUInformation5;
typedef struct
{
/**************�������豸�����汾 Ԥ�� ��չ֡ ��ID=0x18FF0230~0x18FF0233������ 2000ms ��ʼ����5֡**************/
INT8U manufacturerCode; //���Ҵ���
INT8U reserved0; //Ԥ��
INT8U materialCodeByte0; //���ϱ�����0�ֽ�
INT8U materialCodeByte1; //���ϱ�����1�ֽ�
INT8U materialCodeByte2; //���ϱ�����2�ֽ�
INT8U swMajorVersion; //�������汾��
INT8U swMinorVersion; //�����ΰ汾��
INT8U reserved1; //Ԥ�����̶�Ϊ0
} tMCUVersionInformation;
typedef struct
{
/**************������ID��SN�룩 Ԥ�� ��չ֡ ��ID=0x18FF0240~0x18FF0243������ 2000ms ��ʼ����5֡**************/
INT8U byte0; //Ԥ��
INT8U byte1; //Ԥ��
INT8U byte2; //Ԥ��
INT8U byte3; //Ԥ��
INT8U byte4; //Ԥ��
INT8U byte5; //Ԥ��
INT8U byte6; //Ԥ��
INT8U byte7; //Ԥ��
} tMCUSNInformation;
typedef struct
{
/**************����MCU�������� ��չ֡ ��ID=0x18FF0102������֡��To��������**************/
union
{
INT8U byte0;
struct
{
INT8U zeroForcePushSet : 2;//������������ 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U lowVolSpeedLimitSet : 2;//�͵�������ģʽ 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U autoParkingSet : 2;//�Զ�פ�����ܣ��µ�פ����0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U HTCSet : 2;//���»������� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
} bit;
} byte0_set;
union
{
INT8U byte1;
struct
{
INT8U sideSupportSet : 2;//פ����Ӧ�����ӱ߳Ź��ܣ�0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U EABSSet : 2;//E-ABS 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U simpleDriveSet : 2;//��������ģʽ 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U breakPowerOffSet : 2;//������ɲ���ϵ繦�ܿ���/�ر�ָ�� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
} bit;
} byte1_set;
union
{
INT8U byte2;
struct
{
INT8U helpPromoteSet : 2;//�������й��� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U reverseSet : 2;//�������� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U reserved : 1;//Ԥ��
INT8U singleThrottleModeSet : 3;//������ģʽָ�� 0x0:��Ч 0x1:�ر� 0x2:1�� 0x3:2�� 0x4:3��
} bit;
} byte2_set;
union
{
INT8U byte3;
struct
{
INT8U speedSafetyLock : 5;//�ٶȰ�ȫ�� ��λkm/h ���棺5 ƫ������10 0x0:��Ч 0x1F:�ر�
INT8U energyRecoveryLevel : 3;//�������յȼ� 0x0:��Ч 0x1:�ر� 0x2:�� 0x3:�е� 0x4:ǿ
} bit;
} byte3_set;
union
{
INT8U byte4;
struct
{
INT8U hbarBackHTCSet : 2;//����ת�������������� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U hbarBackReverseSet : 2;//����ת�ѵ������� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U unlockSpeedLimitSet : 2;//��������ʹ�� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U TCSModeSet : 2;//TCSģʽ���� 0x0:��Ч 0x1:ǿ 0x2:�� 0x3:unknown
} bit;
} byte4_set;
union
{
INT8U byte5;
struct
{
INT8U TCSFunctionSet : 2;//TCS�������� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U boostModeSet : 2;//Boostģʽ 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U EGearSet : 2;//����ģʽ-E���� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U CGearSet : 2;//����ģʽ-C���� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
} bit;
} byte5_set;
union
{
INT8U byte6;
struct
{
INT8U SGearSet : 2;//����ģʽ-S�˶� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U X1GearSet : 2;//����ģʽ-X1�� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U X2GearSet : 2;//����ģʽ-X2�� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U AIGearSet : 2;//����ģʽ-AI�� 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
} bit;
} byte6_set;
union
{
INT8U byte7;
struct
{
INT8U voltagePlatformSet : 4;//��ѹ 0x0:��Ч 0x1:72V 0x2:60V 0x3:48V 0x4:96V
INT8U reserved : 4;//Ԥ��
} bit;
} byte7_set;
} tVehicleFunctionSettingRx;
typedef struct
{
/**************����״̬1(VCU ���ػ�������Ϣ) ��չ֡ ��ID=0x18FF0108�����մ���֡**************/
INT8U VCUState : 4;//VCU��״̬ 0x0:��Ч 0x1:�ػ� 0x2:Ԥ�������� 0x3:���� 0x4:Ԥ�ػ� 0x5:���綪ʧ
INT8U moveAlarm : 1;//�춯�������� 0:���� 1:����
INT8U wheelMoveAlarm : 1;//�ֶ��������� 0:���� 1:����
INT8U reserved0 : 2;//Ԥ��
INT8U reserved1[3]; //Ԥ��
INT8U fallAlarm : 1;//�㵹���� 0:���� 1:����
INT8U reserved4 : 7;//Ԥ��
INT8U reserved5; //Ԥ��
INT8U chargerState : 2;//������״̬ 0x0:δ���⵽������ 0x1:�������ѽ���
INT8U dischargeConfirm : 2;//�ŵ绥�� 0x0:ʧ�� 0x1:�ɹ�
INT8U reserved6 : 4;//Ԥ��
INT8U batterySOC : 7;//����SOC 0~100
INT8U batterySOCValid : 1;//����SOC��Чλ 0x0:��Ч 0x1:��Ч
} tVCUVehicleState1;
typedef struct
{
/**************����״̬2(����״̬����) ��չ֡ ��ID=0x18FF0109�����մ���֡**************/
INT8U reserved0; //Ԥ��
INT8U reserved1; //Ԥ��
INT8U seatInductionState : 2; //������Ӧ����״̬ 0x0:δ���� 0x1:���˳���
INT8U reserved2; //Ԥ��
INT8U reserved3; //Ԥ��
INT8U reserved4; //Ԥ��
INT8U reserved5; //Ԥ��
INT8U reserved6; //Ԥ��
INT8U reserved7; //Ԥ��
} tVCUVehicleState2;
typedef struct
{
/**************����״̬3(�û�������-1 VCU����) ��չ֡ ��ID=0x18FF010A�����մ���֡**************/
INT8U lostMode : 2; //��ʧģʽ 0x0:�ر� 0x1:����
INT8U reserved0 : 6; //Ԥ��
INT8U reserved1; //Ԥ��
INT8U reserved2; //Ԥ��
INT8U reserved3; //Ԥ��
INT8U reserved4; //Ԥ��
INT8U reserved5; //Ԥ��
INT8U reserved6; //Ԥ��
INT8U reserved7; //Ԥ��
} tVCUVehicleState3;
typedef struct
{
/**************����״̬4(��������) ��չ֡ ��ID=0x18FF010B�����մ���֡**************/
INT8U batteryType : 4; //�������� 0x0:��Ч 0x1:Ǧ�� 0x2:﮵�
INT8U voltagePlatform : 4; //��ѹ 0x0:��Ч 0x1:72V 0x2:60V 0x3:48V
INT8U reserved1; //Ԥ��
INT8U SOC : 7; //SOC 0%~100%
INT8U SOCValid : 1; //SOC��Чλ
INT8U recycleCurrent; //���յ�������λ0.1A
INT8U reserved4; //Ԥ��
INT8U reserved5; //Ԥ��
INT8U reserved6; //Ԥ��
INT8U reserved7; //Ԥ��
} tVCUVehicleState4;
typedef struct
{
/**************����״̬5(��������) ��չ֡ ��ID=0x18FF010C�����մ���֡**************/
INT8U reserved0; //Ԥ��
INT8U reserved1; //Ԥ��
INT8U reserved2; //Ԥ��
INT8U reserved3; //Ԥ��
INT8U ratedDischargeCurrent; //��ŵ���������λA
INT8U peakDischargeCurrent; //��ֵ�ŵ���������λA
INT8U reserved6; //Ԥ��
INT8U reserved7; //Ԥ��
} tVCUVehicleState5;
typedef struct
{
/**************VCU�����ǽǶ� ��չ֡ ��ID=0x18FF0101�����մ���֡**************/
INT8U yawAngleLow; //����ƫ���Ƕȵ��ֽ� ���棺0.1��/bit ƫ������-90��
INT8U yawAngleHigh; //����ƫ���Ƕȸ��ֽ�
INT8U pitchAngleLow; //���������Ƕȵ��ֽ� ���棺0.1��/bit ƫ������-90��
INT8U pitchAngleHigh; //���������Ƕȸ��ֽ�
INT8U initialYawAngleLow; //������ʼƫ���Ƕȵ��ֽ� ���棺0.1��/bit ƫ������-90��
INT8U initialYawAngleHigh; //������ʼƫ���Ƕȸ��ֽ�
INT8U initialPitchAngleLow; //������ʼ�����Ƕȵ��ֽ�
INT8U initialPitchAngleHigh; //������ʼ�����Ƕȸ��ֽ�
} tVCUGyroAngle;
typedef struct
{
/**************ABS״̬��Ϣ ��չ֡ ��ID=0x18FF0600������ 20ms**************/
INT8U frontWheelSpeedLow; //ABSǰ�����ٵ��ֽ� ���棺0.05625/bit ƫ������0
INT8U frontWheelSpeedHigh; //ABSǰ�����ٸ��ֽ�
INT8U rearWheelSpeedLow; //ABS�������ٵ��ֽ� ���棺0.05625/bit ƫ������0
INT8U rearWheelSpeedHigh; //ABS�������ٸ��ֽ�
union
{
INT8U stateByte;
struct
{
INT8U ABSSwitchState : 2;//ABS���ر�״̬ 0x0:ABS���� 0x1:ABS�ر� 0x2:����ABS���� 0x3:����ABS�ر�
INT8U ABSFaultLamp : 2;//ABS���ϵ� 0x0:�ر� 0x1:���� 0x2:����ģʽ 0x3:����
INT8U frontWheelSpeedFault : 1;//ABSǰ��������Ч��־ 0x0:���� 0x1:����
INT8U rearWheelSpeedFault : 1;//ABS����������Ч��־ 0x0:���� 0x1:����
INT8U ABSModeSwitchAllow : 1;//ABSģʽ�л� 0x0:������ 0x1:����
INT8U ABSEvent : 1;//�¼�λ 0:�޷��������� 1:����
} bit;
} state;
INT8U ABSActiveState : 1; //ABS����״̬ 0:�ر� 1:����
INT8U IMUZeroFlag : 1; //IMU������־λ 0x0:δ�궨 0x1:�ѱ궨
INT8U reserved5 : 6; //Ԥ��
INT8U IMUZeroCount; //IMU��������
INT8U ABSTCSTargetTorquePercentage;//ABS-TCSĿ��Ť�ذٷֱ� ��λ% ��Ч��Χ0x0~0x64 ��Чֵ0xFF
} tABSStateInfo0;
typedef struct
{
/**************ABS״̬��Ϣ ��չ֡ ��ID=0x18FF0601������ 20ms**************/
INT8U ABSTCSControlCmd : 1; //ABS-TCS��������ָ�� 0x0:OFF 0x1:ON
INT8U reserved0 : 7; //Ԥ��
INT8U ABSTCSTargetTorqueLow; //ABS-TCSĿ��Ť�ص��ֽ� ���棺0.125/bit ƫ������0
INT8U ABSTCSTargetTorqueHigh; //ABS-TCSĿ��Ť�ظ��ֽ�
union
{
INT8U stateByte;
struct
{
INT8U targetTorqueValid : 2;//ABS-TCSĿ��Ť����Ч�� 0x0:��ʼ�� 0x1:��Ч 0x2:��Ч 0x3:����
INT8U functionSwitchAllow : 1;//ABS-TCS���ܿ��л��ź� 0x0:������ 0x1:����
INT8U alarmLampState : 1;//ABS-TCS������״̬ 0x0:�� 0x1:����
INT8U workMode : 3;//ABS-TCS����ģʽ 0x0:���� 0x1:�ر� 0x2~0x7:����
INT8U reserved : 1;//Ԥ��
} bit;
} state;
union
{
INT8U faultByte0;
struct
{
INT8U systemState : 2;//ABS-TCSϵͳ״̬ 0x0:��ʼ�� 0x1:���� 0x2:���� 0x3:����
INT8U reserved : 1;//Ԥ��
INT8U IMUFault : 1;//IMU���� 0x0:���� 0x1:����
INT8U pressureSensorFault : 1;//ѹ������������ 0x0:���� 0x1:����
INT8U throttleFault : 1;//���ſ��ȹ��� 0x0:���� 0x1:����
INT8U motorTorqueFault : 1;//����ʵ��Ť�ع��� 0x0:���� 0x1:����
INT8U driverTorqueFault : 1;//��ʻԱ����Ť�ع��� 0x0:���� 0x1:����
} bit;
} fault0;
union
{
INT8U faultByte1;
struct
{
INT8U ECULowVolFault : 1;//ECU��ѹ���͹���
INT8U ECUHighVolFault : 1;//ECU��ѹ���߹���
INT8U ECUFault : 1;//ECU����
INT8U wheelSensorFault : 1;//���ٴ���������
INT8U valveFault : 1;//������
INT8U refluxPumpFault : 1;//�����ù���
INT8U valveRelayFault : 1;//���̵�������
INT8U CANOfflineFault : 1;//CAN�������ߴ���
} bit;
} fault1;
union
{
INT8U faultByte2;
struct
{
INT8U frontWheelSignalFault : 1;//ǰ�����ٶȴ������źŹ���
INT8U frontWheelLineFault : 1;//ǰ�����ٶȴ�������·����
INT8U rearWheelSignalFault : 1;//�������ٶȴ������źŹ���
INT8U rearWheelLineFault : 1;//�������ٶȴ�������·����
INT8U frontInletValveFault : 1;//ǰ�����ͷ�����
INT8U frontOutletValveFault : 1;//ǰ�����ͷ�����
INT8U rearInletValveFault : 1;//�������ͷ�����
INT8U rearOutletValveFault : 1;//�������ͷ�����
} bit;
} fault2;
INT8U reserved7; //Ԥ��
} tABSStateInfo1;
typedef struct
{
/**************��ƽ��������ָ����չ֡ ��ID=0x18FF0250������ 20ms**************/
INT8U balanceSpeedHigh; //��ƽ���������·��ٶȸ��ֽ� ���棺0.1Km/h/bit ƫ������-250 ָʾ��Χ��-250~250Km/h
INT8U balanceSpeedLow; //��ƽ���������·��ٶȵ��ֽ�
INT8U balanceMode : 2;//��ƽ��ģʽ 0x0:��Ч 0x1:���� 0x2:�ر� 0x3:unknown
INT8U reserved2 : 6;//Ԥ��
INT8U reserved3; //Ԥ��
INT8U reserved4; //Ԥ��
INT8U reserved5; //Ԥ��
INT8U reserved6; //Ԥ��
INT8U reserved7; //Ԥ��
} tSelfBalanceControl;
typedef struct
{
/**************SOCָ����չ֡ ��ID=0x18FF0260������ 200ms**************/
INT8U batteryVolHigh; //���ص�ѹ��λ ��λ��0.1V
INT8U batteryVolLow; //���ص�ѹ��λ ��λ��0.1V
INT8U displaySOC; //ʣ�������ٷֱȣ���ʾSOC����Χ0~100%
INT8U realSOC; //ʣ�������ٷֱȣ���ʵSOC����Χ0~100%
INT8U currentHigh; //���س��ŵ�������λ ��λ��0.1A ƫ����5000
INT8U currentLow; //���س��ŵ�������λ ��λ��0.1A ƫ����5000
INT8U instantPowerHigh; //˲ʱ���ĸ�λ ��λ��W ��Χ��-5000~10000
INT8U instantPowerLow; //˲ʱ���ĵ�λ ��λ��W ��Χ��-5000~10000
} tCANSOC260;
typedef struct
{
/**************SOCָ����չ֡ ��ID=0x18FF0261������ 200ms**************/
INT8U batteryTemp; //�����¶� ��λ��1�� ƫ����-40
INT8U chargeCycleHigh; //���س���ѭ��������λ
INT8U chargeCycleLow; //���س���ѭ��������λ
INT8U dischargeTimesHigh; //���طŵ�������λ
INT8U dischargeTimesLow; //���طŵ�������λ
union
{
INT8U faultByte;
struct
{
INT8U overVolProtect : 1;//��ѹ����
INT8U chargeOverCurProtect : 1;//������������
INT8U dischargeOverCurProtect:1;//�ŵ���������
INT8U shortProtect : 1;//��·����
INT8U overTempProtect : 1;//���±���
INT8U chargeHandshakeState : 1;//��������״̬ 0x0:ʧ�� 0x1:�ɹ�
INT8U reserved : 2;//Ԥ��
} bit;
} fault;
INT8U boardWorkState; //�����幤��״̬ 0x0:Ĭ�� 0x1:���ڳ��� 0x2:�������� 0x3:�ŵ�״̬ 0x4:Ƿѹ 0x5:��������
INT8U batterySOH; //����SOH����Χ0~100%
} tCANSOC261;
typedef struct
{
/**************SOCָ����չ֡ ��ID=0x18FF0262������ 200ms**************/
INT8U batterySOEHigh; //����SOE��λ ��λ��WH ��Χ0~7000
INT8U batterySOELow; //����SOE��λ ��λ��WH ��Χ0~7000
INT8U chargeRemainTimeHigh; //����ʣ��ʱ�����ֽ� ��λ��1min
INT8U chargeRemainTimeLow; //����ʣ��ʱ�����ֽ� ��λ��1min
INT8U selfLearnCapHigh; //��ѧϰ������λ ��λ��10mAH
INT8U selfLearnCapLow; //��ѧϰ������λ ��λ��10mAH
INT8U reserved6; //Ԥ��
INT8U reserved7; //Ԥ��
} tCANSOC262;
extern tCanRxSignalTyp UserCanRxSignal;
extern tCAN202RxSignalTyp CAN202RxSignal;
extern tCAN20CRxSignalTyp CAN20CRxSignal;
extern tCANTxBroadcast DateTxBroadcast;
extern tCanTxSignalTyp CanTxSignaldDate;
extern tCanTxVehicleState CanTxVehicleState;
#define VehicleState CanTxVehicleState
extern tMCUInformation1 MCUInformation1;
extern tMCUInformation2 MCUInformation2;
extern tMCUInformation3 MCUInformation3;
extern tMCUInformation4 MCUInformation4;
extern tMCUInformation5 MCUInformation5;
extern tMCUVersionInformation MCUVersionInformation[4];
extern tMCUSNInformation MCUSNInformation[4];
extern tVehicleFunctionSettingRx VehicleFunctionSettingRx;
extern tVCUVehicleState1 VCUVehicleState1;
extern tVCUVehicleState2 VCUVehicleState2;
extern tVCUVehicleState3 VCUVehicleState3;
extern tVCUVehicleState4 VCUVehicleState4;
extern tVCUVehicleState5 VCUVehicleState5;
extern tVCUGyroAngle VCUGyroAngle;
extern tABSStateInfo0 ABSStateInfo0;
extern tABSStateInfo1 ABSStateInfo1;
extern tSelfBalanceControl SelfBalanceControl;
extern tCANSOC260 CANSOC260;
extern tCANSOC261 CANSOC261;
extern tCANSOC262 CANSOC262;
extern volatile INT8U G_18FF0102_ReceiveCMP_flg;
extern volatile INT8U G_18FF0102_Receive_8u[8];
extern void CAN_18FF0102_ReadFlash(void);
extern uint16_t RegisterConfigData[50];
extern unsigned char key[20];
extern uint8_t EmergencyRideFlag;
extern void EmergencyRideCheck(void);
extern word_def can_motor_stop_state_adr;
#define can_motor_stop_state can_motor_stop_state_adr.word
#define bStruct_flag can_motor_stop_state_adr.bit.b1
#define Pstate_flag can_motor_stop_state_adr.bit.b0