Commit 0259810e authored by 罗洪旭's avatar 罗洪旭

147

parents
This diff is collapsed.
#ifndef AMT_630H_H
#define AMT_630H_H
#include "TYW_stdint.h"
typedef enum
{
EM_FLASH_CHECK_RESULT_NO_ACT = 0,
EM_FLASH_CHECK_RESULT_CHECKING,
EM_FLASH_CHECK_RESULT_SUCCESS,
EM_FLASH_CHECK_RESULT_FAIL,
}EM_FLASH_CHECK_RESULT_T;
typedef struct
{
uint8_t Flag;
uint32_t InquireTime;
uint32_t CheckStateTime;
uint8_t Result;
}s_AMT630H_FlashCheck_t;
#define AMT630H_REFRESH_TIME 50U
#define AMT630H_ANIMATION_TIME 3000U //ms
#define AMT630H_ANIMATION_PIC_NUM 7U
#define AMT630H_ANIMATION_REFRESHTIME_DEF(x) ((AMT630H_ANIMATION_TIME > x) ? \
(((AMT630H_ANIMATION_TIME - x) / AMT630H_ANIMATION_PIC_NUM) - 5) : \
(((AMT630H_ANIMATION_TIME) / AMT630H_ANIMATION_PIC_NUM) - 5))
void AMT630H_Timer(unsigned char Tms);
void Delay_Time_Ctrl(unsigned long Tms);
void Amt630hUartRecvData(uint16_t u16UARTData);
void AMT630H_Animation_PlayProc(uint16_t PicIndex);
void AMT630H_RstCtrl(void);
void Amt630hInit(void);
void AMT630H_Sleep(void);
static void AMT630H_AliveCounterMonitor(void);
void AMT630H_Main(void);
unsigned char AMT630H_isInitFinish(void);
#endif
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
#ifndef __AMT630H_DATAS_H_
#define __AMT630H_DATAS_H_
#include "TYW_stdint.h"
void GUI_GraphicsAPP(void);
void Boot_Animation_KL15_Init(void);
void Boot_Animation_KL15_Off(void);
#endif
This diff is collapsed.
#include "UartProtocol.h"
#include "PicBin.h"
//uint32_t PicIndexDataLEN = 0;
void User_PicIndexDataInit(void)
{
//PicIndexDataLEN = sizeof(PicIndexData);
SetPicIndexData((uint8_t *)PicIndexData, sizeof(PicIndexData), PIC_INDEX_DATA_CRC);
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#ifndef _BACKLIGHT_H_
#define _BACKLIGHT_H_
#include "TYW_stdint.h"
typedef struct
{
uint16_t BackGoal;
uint16_t BackCurrent;
uint16_t BackBrightness;
uint16_t LostTimer;
uint16_t BackGoalBackUp;
uint16_t BackLightValid;
uint8_t FactorLevelBack;
uint16_t BackDampingTimer;
uint16_t Ntc_Timer;
uint8_t Ntc_Factor;
uint8_t Off_Delay_Timer;
uint16_t Bl_delay;
uint16_t Delay_Tag;
uint8_t BackLightSYNC;
uint8_t led_Delay_Timer;
uint8_t led_status;
uint8_t SleepStatus;
} BackLightCtrlStruct;
#define BL_PWM_DUTY_CYCLE_APPR_FACTOR 16
#define BL_PWM_DUTY_CYCLE_APPR_SPEED 5
#define BACKLIGHT_LCMLEVEL 21
#define BACKLIGHT_HULEVEL 11
static const uint16_t BackLightNightHighLevel [ BACKLIGHT_LCMLEVEL ][ BACKLIGHT_HULEVEL ] = {
///*HU???0*/*HU???1*/*HU???2*/*HU???3*/*HU???4*/*HU???5*/*HU???6*/*HU???7*/*HU???8*/**HU???9**/*HU???10*
//BCM???1
{10U, 14U, 18U, 23U, 28U, 33U, 45U, 55U, 100U, 86U, 105U},
//BCM???2
{12U, 16U, 20U, 25U, 30U, 37U, 50U, 60U, 100U, 93U, 120},
//BCM???3
{14U, 18U, 23U, 28U, 33U, 45U, 55U, 70U, 100U, 105U, 130},
//BCM???4
{16U, 20U, 25U, 30U, 37U, 50U, 60U, 80U, 100U, 120U, 150},
//BCM???5
{18U, 23U, 28U, 33U, 45U, 55U, 70U, 86U, 100U, 130U, 160},
//BCM???636
{20U, 25U, 30U, 40U, 50U, 60U, 80U, 93U, 100U, 151U, 195},
//BCM???7
{23U, 28U, 33U, 45U, 55U, 70U, 86U, 105U, 100U, 160U, 210},
//BCM???8
{25, 30, 37, 50, 60, 80, 93, 120, 100, 190, 240},
//BCM???9
{28, 33, 45, 55, 70, 86, 105, 130, 100, 210, 256},
//BCM???10
{30, 40, 50, 60, 80, 93, 120, 150, 100, 240, 295},
//BCM???11
{33, 45, 55, 70, 86, 105, 130, 160, 100, 256, 330},
//BCM???12
{37, 50, 60, 80, 93, 120, 150, 190, 100, 295, 370},
//BCM???13
{45, 55, 70, 86, 105, 130, 160, 210, 100, 330, 416},
//BCM???14
{50, 60, 80, 93, 120, 150, 190, 240, 100, 370, 470},
//BCM???15
{55, 70, 86, 105, 130, 160, 210, 256, 100, 416, 530},
//BCM???16
{60, 80, 93, 120, 150, 190, 240, 295, 100, 470, 590},
//BCM???17
{70, 86, 105, 130, 160, 210, 256, 330, 100, 530, 670},
//BCM???18
{80, 93, 120, 150, 190, 240, 295, 370, 100, 590, 750},
//BCM???19
{86, 105, 130, 160, 210, 256, 330, 416, 100, 670, 850},
//BCM???20
{93, 120, 150, 190, 240, 295, 370, 470, 100, 750, 950},
//BCM???21
{105, 130, 160, 210, 256, 330, 416, 530, 100, 850, 1000},
};
//?????????(????)
static const uint16_t BackLightNightLowLevel [ BACKLIGHT_LCMLEVEL ][ BACKLIGHT_HULEVEL ] = {
///*HU???0*/*HU???1*/*HU???2*/*HU???3*/*HU???4*/*HU???5*/*HU???6*/*HU???7*/*HU???8*/**HU???9**/*HU???10*
//BCM???1
{10, 13, 16, 60, 25, 32, 40, 50, 63, 79, 100},
//BCM???2
{11, 14, 18, 70, 28, 35, 45, 56, 71, 89, 112},
//BCM???3
{13, 16, 20, 80, 32, 40, 50, 63, 79, 100, 126},
//BCM???4
{14, 18, 22, 90, 35, 45, 56, 71, 89, 112, 141},
//BCM???5
{16, 20, 25, 100, 40, 50, 63, 79, 100, 126, 158},
//BCM???6
{18, 22, 28, 110, 45, 56, 71, 89, 112, 141, 178},
//BCM???7
{20, 25, 32, 120, 50, 63, 79, 100, 126, 158, 200},
//BCM???8
{22, 28, 35, 140, 56, 71, 89, 112, 141, 178, 224},
//BCM???9
{25, 32, 40, 150, 63, 79, 100, 126, 159, 199, 251},
//BCM???10
{28, 36, 45, 170, 71, 89, 112, 141, 178, 224, 282},
//BCM???11
{32, 40, 50, 190, 79, 100, 126, 158, 200, 251, 316},
//BCM???12
{35, 45, 56, 220, 89, 112, 141, 178, 224, 282, 355},
//BCM???13
{40, 50, 63, 240, 100, 126, 158, 199, 251, 316, 398},
//BCM???14
{45, 56, 71, 270, 112, 141, 178, 224, 282, 355, 447},
//BCM???15
{50, 63, 79, 300, 126, 158, 199, 251, 316, 398, 501},
//BCM???16
{56, 71, 89, 340, 141, 178, 224, 282, 355, 446, 562},
//BCM???17
{63, 80, 100, 380, 158, 199, 251, 316, 398, 501, 631},
//BCM???18
{71, 89, 112, 430, 178, 224, 282, 355, 447, 562, 708},
//BCM???19
{79, 100, 126, 480, 199, 251, 316, 398, 501, 631, 794},
//BCM???20
{89, 112, 141, 540, 224, 282, 355, 447, 562, 708, 891},
//BCM???21
{100, 126, 158, 610, 251, 316, 398, 501, 631, 794, 1000},
};
//?????????(????)
static const uint16_t BackLightDayHighLevel [ BACKLIGHT_HULEVEL ] = {
650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650};
//?????????(????)
static const uint16_t BackLightDayLowLevel [ BACKLIGHT_HULEVEL ] = {
100, 126, 158, 200, 251, 95, 398, 501, 631, 794, 990};
static const uint16_t BackLightNightLevel [] = {
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
};
static const uint16_t BackLightDayLevel [ BACKLIGHT_HULEVEL ] = {
100, 126, 158, 200, 251, 316, 398, 501, 631, 794, 1000};
enum
{
HU_Level_0 = 0,
HU_Level_1,
HU_Level_2,
HU_Level_3,
HU_Level_4,
HU_Level_5,
HU_Level_6,
HU_Level_7,
HU_Level_8,
HU_Level_9,
HU_Level_10,
HU_Level_MAX,
};
enum
{
LCM_Level_0 = 0,
LCM_Level_1,
LCM_Level_2,
LCM_Level_3,
LCM_Level_4,
LCM_Level_5,
LCM_Level_6,
LCM_Level_7,
LCM_Level_8,
LCM_Level_9,
LCM_Level_10,
LCM_Level_11,
LCM_Level_12,
LCM_Level_13,
LCM_Level_14,
LCM_Level_15,
LCM_Level_16,
LCM_Level_17,
LCM_Level_18,
LCM_Level_19,
LCM_Level_20,
LCM_Level_21,
LCM_Level_MAX,
};
static const uint16_t BackLightLevel_Tbl [ 10u ][ 2u ] = {
{300U, 10U},
{360U, 20U},
{430U, 30U},
{500U, 40U},
{570U, 50U},
{630U, 70U},
{700U, 90U},
{780U, 150U},
{860U, 220U},
{950U, 300U},
};
#define BACK_LIGHT_LOST_TIME 400
void BackLight_30_Init(void);
void BackLight_LV_30_Init(void);
void BackLight_15_Init(void);
void BackLight_WakeUp_Init(void);
void BackLight_Sleep_Init(void);
void BackLight_Ctrl_Service(void);
void BackLight_Back_PWM_Init(void); /*PWM Channel Enable*/
void ADProcess_NTC_Temp_Service(void);
void BackLightTest(uint32_t cmd,uint32_t val);
uint8_t BackLight_Get_Level(void);
void BackLight_Get_Level_To_Factor(void);
uint8_t Remote_Start_Signal(void);
void Remote_Start_Signal_Monitor(void);
void BackLight_Back_Set_Brightness(uint16_t Br);
void Remote_STOP_Display(void);
void Remote_Status_Sync(void);
uint8_t GET_BackLight_APP_TX(void);
uint8_t Get_BackDay_LV_App(void);
uint8_t Get_BackNight_LV_App(void);
uint8_t Get_BackSend_Temp(void);
void Set_Theme_Color(void);
uint8_t Get_Theme_App(void);
void BackLight_PWM_Duty_Cycle_Delta(uint16_t Goal, uint16_t *Current, uint16_t *DampingTimer);
#endif
This diff is collapsed.
#ifndef _BRAKE_PRESSURE_SERVICE_H_
#define _BRAKE_PRESSURE_SERVICE_H_
#include "TYW_stdint.h"
#include "Telltales_Lib.h"
typedef struct
{
uint16_t Last_V;
uint8_t DstSeg_V;
uint16_t Last_R;
uint8_t DstSeg_R;
} DataBrakeCalcStruct;
void Data_Brake_Pressure_Service_KL30_Init(void);
void Data_Brake_Pressure_Service_Wakeup_Init(void);
uint16_t Get_Brake_Pressure_Service(void);
uint16_t Get_Wet_Brake_Pressure_Service(void);
uint16_t Get_Wet_Brake_Pressure_status(void);
uint16_t Get_Brake_Pressure_status(void);
// uint16_t Get_Wet_Brake_Pressure_status_R(void);
#endif
This diff is collapsed.
#ifndef _BRAKE_PRESSURE_TABLE_
#define _BRAKE_PRESSURE_TABLE_
#include "TYW_stdint.h"
/*** 状态定义 ***/
#define DATA_BrakePressure_TEMP_STATE_DELAY 0x00
#define DATA_BrakePressure_TEMP_STATE_INIT 0x01
#define DATA_BrakePressure_TEMP_STATE_FAST 0x02
#define DATA_BrakePressure_TEMP_STATE_NORMAL 0x03
#define DATA_BrakePressure_TEMP_STATE_FAULT 0x04
/*** 参数设置 ***/
#define DATA_BrakePressure_TEMP_WAIT_SEC 0
#define DATA_BrakePressure_TEMP_SEG_STEP_FAST 300 //快速走动时,每走一格间隔的时间,单位ms
#define DATA_BrakePressure_TEMP_SEG_STEP_SLOW 700 //慢速走动时,每走一格间隔的时间,单位ms
#define DATA_BrakePressure_TEMP_ENGINE_WAIT_SEC 10000 //等待发动机启动时间,单位ms
#define DATA_BrakePressure_TEMP_SEG_PER_GROUP 1
#define DATA_BrakePressure_TEMP_TOTAL_GROUP 5
#define DATA_BrakePressure_TEMP_TOTAL_SEG (DATA_BrakePressure_TEMP_SEG_PER_GROUP * DATA_BrakePressure_TEMP_TOTAL_GROUP)
#define DATA_HI_BrakePressure_TEMP_SEG 7
// #define DATA_DrivingEnergy_Timer 1
/*** 控制结构 ***/
typedef struct
{
uint16_t Backup;
uint16_t EngineStartTimer;
uint16_t RecoverTimer;
uint16_t Last;
uint8_t InvalidCnt;
uint8_t DstSeg;
uint8_t State;
uint8_t Wait;
uint8_t Prescaler;
uint8_t FastMode;
uint8_t OutputEnable;
uint8_t DispTimer;
} DataBrakePressureCalcStruct;
typedef struct
{
uint16_t Up [ DATA_BrakePressure_TEMP_TOTAL_GROUP / 2 + 1 ];
uint16_t Dn [ DATA_BrakePressure_TEMP_TOTAL_GROUP / 2 + 1 ];
} DataBrakePressureTableStruct;
void Data_BrakePressure_TempPara_KL30_Init(void);
void Data_BrakePressure_TempPara_Wakeup_Init(void);
void Data_BrakePressure_Temp_Processing_Service(void);
uint8_t Get_Brake_Pressure_Valid(void);
uint8_t Get_Brake_Pressure_Display(void);
#endif
\ No newline at end of file
This diff is collapsed.
#ifndef _BRAKE_PRESSURE_VOLTAGE_TABLE_
#define _BRAKE_PRESSURE_VOLTAGE_TABLE_
#include "TYW_stdint.h"
/*** 状态定义 ***/
#define DATA_BrakePressureVoltage_TEMP_STATE_DELAY 0x00
#define DATA_BrakePressureVoltage_TEMP_STATE_INIT 0x01
#define DATA_BrakePressureVoltage_TEMP_STATE_FAST 0x02
#define DATA_BrakePressureVoltage_TEMP_STATE_NORMAL 0x03
#define DATA_BrakePressureVoltage_TEMP_STATE_FAULT 0x04
/*** 参数设置 ***/
#define DATA_BrakePressureVoltage_TEMP_WAIT_SEC 0
#define DATA_BrakePressureVoltage_TEMP_SEG_STEP_FAST 300 //快速走动时,每走一格间隔的时间,单位ms
#define DATA_BrakePressureVoltage_TEMP_SEG_STEP_SLOW 700 //慢速走动时,每走一格间隔的时间,单位ms
#define DATA_BrakePressureVoltage_TEMP_ENGINE_WAIT_SEC 10000 //等待发动机启动时间,单位ms
#define DATA_BrakePressureVoltage_TEMP_SEG_PER_GROUP 1
#define DATA_BrakePressureVoltage_TEMP_TOTAL_GROUP 5
#define DATA_BrakePressureVoltage_TEMP_TOTAL_SEG (DATA_BrakePressureVoltage_TEMP_SEG_PER_GROUP * DATA_BrakePressureVoltage_TEMP_TOTAL_GROUP)
#define DATA_HI_BrakePressureVoltage_TEMP_SEG 7
// #define DATA_DrivingEnergy_Timer 1
/*** 控制结构 ***/
typedef struct
{
uint16_t Backup;
uint16_t EngineStartTimer;
uint16_t RecoverTimer;
uint16_t Last;
uint8_t InvalidCnt;
uint8_t DstSeg;
uint8_t State;
uint8_t Wait;
uint8_t Prescaler;
uint8_t FastMode;
uint8_t OutputEnable;
uint8_t DispTimer;
} DataBrakePressureVoltageCalcStruct;
typedef struct
{
uint16_t Up [ DATA_BrakePressureVoltage_TEMP_TOTAL_GROUP / 2 + 1 ];
uint16_t Dn [ DATA_BrakePressureVoltage_TEMP_TOTAL_GROUP / 2 + 1 ];
} DataBrakePressureVoltageTableStruct;
void Data_BrakePressureVoltage_TempPara_KL30_Init(void);
void Data_BrakePressureVoltage_TempPara_Wakeup_Init(void);
void Data_BrakePressureVoltage_Temp_Processing_Service(void);
uint8_t Get_Brake_Pressure_Voltage_Valid(void);
uint8_t Get_Brake_Pressure_Voltage_Display(void);
#endif
\ No newline at end of file
This diff is collapsed.
#ifndef _CAN_APP_H_
#define _CAN_APP_H_
void Can_Abort_All(void);
void CAN_QuickTimer_Init(void);
void Can_Write_Fun_APP(void);
void Can_BusOff_Fun(void);
void Data_CAN_APP_Init(void);
/*void Can_Set_Buff_260(uint8_t CopyData []);*/
void Can_Set_Buff_0CFE6C17(uint8_t CopyData []);
void Can_Set_Buff_0CFE6CEE(uint8_t CopyData []);
void Can_Set_Buff_18EA0017(uint8_t CopyData []);
void Can_Set_Buff_18EA0021(uint8_t CopyData []);
void Can_Set_Buff_18FEFB17(uint8_t CopyData []);
void Can_Set_Buff_18FEB117(uint8_t CopyData []);
void Can_Set_Buff_18057F17(uint8_t CopyData []);
uint8_t CRC8_SAE_J1850(uint8_t *u8_data, uint8_t u8_len);
void Set_CarWashModeFeedback(uint8_t status);
void Set_ShortTermClrFlg(uint8_t Flag);
void Set_LongTermClrFlg(uint8_t Flag);
void Set_RefuelEndClrFlg(uint8_t Flag);
void Set_WholeTermClrFlg(uint8_t Flag);
uint8_t Get_Fuel_low_6s(void);
#endif
#ifndef _CAN_APP_TX_H_
#define _CAN_APP_TX_H_
#include "TYW_stdint.h"
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t Res0 : 8;
uint8_t Res1 : 8;
uint8_t Res2 : 8;
uint8_t Res3 : 8;
uint8_t Res4 : 8;
uint8_t Res5 : 8;
uint8_t IC_VSpeed_L : 8;
uint8_t IC_VSpeed_H : 8;
} Sig;
} CANMsg0CFE6C17Union;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t :8;
uint8_t :8;
uint8_t :8;
uint8_t :8;
uint8_t :8;
uint8_t :8;
uint8_t IP_TachographVehicleSpeed_L :8;
uint8_t IP_TachographVehicleSpeed_H :8;
} Sig;
} CANMsg0CFE6CEEUnion;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t IP_PGN_A :8;
uint8_t IP_PGN_B :8;
uint8_t IP_PGN_C :8;
} Sig;
} CANMsg18EA0017Union;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t IP_PGN_A :8;
uint8_t IP_PGN_B :8;
uint8_t IP_PGN_C :8;
} Sig;
} CANMsg18EA0021Union;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t :8;
uint8_t IP_HydraulicOilTemperature :8;
} Sig;
} CANMsg18FEFB17Union;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t IP_Odometer_A : 8;
uint8_t IP_Odometer_B : 8;
uint8_t IP_Odometer_C : 8;
uint8_t IP_Odometer_D : 8;
uint8_t IP_AirPressureWarning : 1;
uint8_t IP_EngineOilPressureWarning : 1;
uint8_t IP_CoolantTemperatureHigh : 2;
uint8_t IP_EldingLevelLow : 2;
uint8_t IP_TransmissionOilTemperatureHigh : 2;
uint8_t IP_ParkingBrake : 1;
uint8_t IP_AirFilterBlocked : 1;
uint8_t IP_AxleOilTemperature : 1;
uint8_t IP_TransmissionOilPressureWarning : 1;
uint8_t IP_PowerCutoff : 1;
uint8_t IP_TransmissionOilFilter : 1;
uint8_t IP_FuelFilterBlocked : 1;
uint8_t IP_HydraulicOilTemperature : 1;
uint8_t IP_AxleFilterBlocked : 1;
uint8_t IP_WaterInFuelPreheating : 1;
uint8_t IP_HydraulicOilFilterBlocked : 1;
uint8_t IP_RadiatingOilFilterBlocked : 1;
uint8_t IP_TransmissionFailure : 1;
uint8_t IP_EngineStop : 1;
uint8_t IP_CoolingFanReversal : 1;
uint8_t IP_ExhaustedGasTemperatureHigh : 1;
uint8_t IP_EmergencySteering : 1;
uint8_t IP_RegenerationIndicator : 1;
uint8_t IP_ForbiddenRegenerationIndicator : 1;
uint8_t IP_DEFResistanceHigh : 1;
uint8_t IP_AxleDifferentialLocked : 1;
uint8_t IP_AutoShiftGear : 1;
uint8_t IP_Seatbelt : 1;
uint8_t IP_CoolantLevelLow : 1;
} Sig;
} CANMsg18FEB117Union;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t : 8;
uint8_t IP_EldingLevelPercent : 8;
uint8_t IP_WetBrake : 8;
uint8_t IP_AirPressure : 8;
uint8_t IP_TransmissionOilTemperature_L : 8;
uint8_t IP_TransmissionOilTemperature_H : 8;
} Sig;
} CANMsg18057F17Union;
#endif
#include "CAN_CFG.h"
#include "TYW_stdint.h"
#include "RSCAN.h"
#include "RTE_GPIO.h"
#include "RTE_CAN.h"
// #include "NM_Config.h"
#include "UDS_DTC.h"
// uint8_t NMWakeupFalg = 0u;
uint8_t CAN_APP_STATUS;
uint8_t CAN_NM_STATUS;
uint8_t CAN_NM__REC_STATUS;
uint8_t GetBusOffState(void)
{
uint8_t rscan_st;
rscan_st = RSCAN0_CH4_Get_Busoff_Status( );
return rscan_st;
}
void AbortAllCanTx(void)
{
// RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_0);
// RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_1);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_2);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_3);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_4);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_5);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_6);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_7);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_8);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_9);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_10);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_11);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_12);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_13);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_14);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_15);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_16);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_17);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_18);
RSCAN0_CH4_Abort(RSCAN_CHANNEL_BUF_19);
}
void CanBusoffRecover(void)
{
AbortAllCanTx( );
RSCAN0_CH4_Busoff_Recover( );
}
void CanInit(void)
{
CAN_APP_STATUS = 0u;
CAN_NM_STATUS = 0u;
CAN_NM__REC_STATUS = 0U;
Can_Init( );
// NMWakeupFalg = 0u;
//Can2_Init( );
}
void CanRequestSleep(void)
{
//RSCAN0_Sleep_Init( );
// NMWakeupFalg = 1u;
}
void SetCanSTBLevel(uint8_t n)
{
B_CAN_STB = n;
}
void CAN_SET_APP_SEND(uint8_t status)
{
CAN_APP_STATUS = status;
}
void CAN_SET_NM_SEND(uint8_t status)
{
CAN_NM_STATUS = status;
}
void CAN_SET_NM_REC(uint8_t status)
{
CAN_NM__REC_STATUS = status;
}
uint8_t CAN_GET_NM_REC(void)
{
return CAN_NM__REC_STATUS;
}
uint8_t CAN_GET_APP_SEND(void)
{
return CAN_APP_STATUS;
}
uint8_t CAN_GET_NM_SEND(void)
{
return CAN_NM_STATUS;
}
void CanTxMsg(uint8_t SendCh, uint8_t *data, uint8_t len, uint32_t id)
{
uint32_t i;
static uint8_t i_dtc = 0;
uint8_t count = 0U;
uint8_t DTCStatus = 0U;
uint32_t DTC = 0U;
CAN_Frame_st_t m_msg;
// ( void )NmSetLastId(id);
switch ( id )
{
case 0x401U:
m_msg.u32CANID = 0X401U;
m_msg.u8CANLEN = len;
m_msg.u8CANFrameIDE = 0;
for ( i = 0; i < m_msg.u8CANLEN; i++ )
{
m_msg.unCANData.u8CANData [ i ] = data [ i ];
}
// m_msg.unCANData.u8CANData[4]=5;
// m_msg.unCANData.u8CANData[7]=3;
//Can_Set_Buff_401(m_msg.unCANData.u8CANData);
if ( CAN_NM_STATUS == 0u )
{
RSCAN0_CH4_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_2, &m_msg);
}
break;
default:
break;
}
}
void Can2TxMsg(uint8_t *data, uint8_t len, uint16_t id)
{
uint32_t i;
CAN_Frame_st_t m_msg;
m_msg.u32CANID = id;
m_msg.u8CANLEN = len;
m_msg.u8CANFrameIDE = 0u;
for ( i = 0; i < m_msg.u8CANLEN; i++ )
{
m_msg.unCANData.u8CANData [ i ] = data [ i ];
}
RSCAN0_CH2_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_1, &m_msg);
}
#ifndef _CAN_CONFIG_H_
#define _CAN_CONFIG_H_
#include "TYW_stdint.h"
#define NM_LOW 0
#define NM_HIGH 1
extern void AbortAllCanTx(void);
extern void CanBusoffRecover(void);
extern uint8_t GetBusOffState(void);
extern void CanInit(void);
extern void CanRequestSleep(void);
extern void CanTxMsg(uint8_t SendCh, uint8_t *data, uint8_t len, uint32_t id);
extern void SetCanSTBLevel(uint8_t n);
extern uint8_t GetBusOffState(void);
extern void CAN_SET_APP_SEND(uint8_t status);
extern void CAN_SET_NM_SEND(uint8_t status);
extern void CAN_SET_NM_REC(uint8_t status);
extern uint8_t CAN_GET_APP_SEND(void);
extern uint8_t CAN_GET_NM_SEND(void);
extern uint8_t CAN_GET_NM_REC(void);
extern void Can2TxMsg(uint8_t *data, uint8_t len, uint16_t id);
#endif
This diff is collapsed.
This diff is collapsed.
#ifndef CAN_LIB_H_
#define CAN_LIB_H_
/*
#define Platform_16Bit
#define Platform_32Bit
*/
#ifdef Platform_16Bit
#define canlib_uint8_t unsigned char
#define canlib_uint16_t unsigned int
#define canlib_uint32_t unsigned long
#else
#define canlib_uint8_t unsigned char
#define canlib_uint16_t unsigned short
#define canlib_uint32_t unsigned int
#define canlib_uint64_t unsigned long long
#endif
#define CAN_RX_MSG_Block (( canlib_uint8_t )(24U / 4u))
#define CAN_TX_MSG_Block (( canlib_uint8_t )(32U / 4u))
typedef void (*MSG_CKB_ON_RECEIVE)(canlib_uint8_t CopyData []);
typedef void (*MSG_CKB_ON_PROCESS)(canlib_uint8_t CopyData []);
typedef void (*MSG_CKB_ON_LOST)(canlib_uint8_t CopyData []);
typedef void (*pfnMsgBufferSet)(canlib_uint8_t CopyData []);
typedef void (*pfnMsgSuccess)(void);
/**@enum CAN_FUNC_ERR_t
* @brief 定义驱动上报应用消息类型 \n
*/
typedef enum
{
CAN_ERR_OK, /**< 模块初始化返回值,参数正常 */
CAN_ERR_ParaInit, /**< 模块初始化返回值,初始化错误 */
CAN_ERR_OUTRANGE, /**< 模块初始化返回值,参数传入超限制 */
} CAN_FUNC_ERR_t;
/**@enum CAN_TX_Status_t
* @brief 定义CAN模块发送状态 \n
*/
typedef enum
{
CAN_N_TX_Disable = 0x00U, /**< CAN模块禁止发送 */
CAN_N_TX_Enable = 0x55U, /**< CAN模块允许发送 */
} CAN_TX_Status_t;
/**@enum CAN_RX_Status_t
* @brief 定义CAN模块接收状态 \n
*/
typedef enum
{
CAN_N_RX_Enable = 0x00U, /**< CAN模块禁止接收 */
CAN_N_RX_Disable = 0x55U, /**< CAN模块允许接收 */
} CAN_RX_Status_t;
/**@struct st_CANMsgAttribute
* @brief 报文接收属性结构体 \n
* 定义报接收文属性
*/
typedef struct
{
canlib_uint8_t Init_Aarry [ 8u ]; /**< 报文初始化值.默认加载,未收到报文时,buffer内为该值 */
canlib_uint8_t TimeOut_Array [ 8u ]; /**< 报文掉线值.掉线后加载 */
canlib_uint8_t Mask_Array [ 8u ]; /**< 报文掉线掩码.哪一位要是用掉线值就置位 */
canlib_uint32_t MSG_TimeOut_Val; /**< 报文掉线时间,单位ms */
canlib_uint32_t MSG_Identifier; /**< 报文ID值 */
MSG_CKB_ON_RECEIVE Msg_ReceiveCBK; /**< 报文中断接收回调函数,默认NULL,该回调函数处于接收中断内. */
MSG_CKB_ON_PROCESS Msg_ProcessCBK; /**< 报文逻辑接收回调函数,默认NULL,该回调函数处逻辑函数内 */
MSG_CKB_ON_LOST Msg_LostCBK; /**< 报文逻辑掉线回调函数,默认NULL,该回调函掉线后会被执行一次 */
} st_CANMsgAttribute;
/**@struct st_CAN_SendAttribute
* @brief 报文发送属性结构体 \n
* 定义发送报文属性
*/
typedef struct
{
canlib_uint32_t u32MsgID; /**< 报文发送ID */
canlib_uint32_t u32MsgCycle; /**< 报文发送周期,单位是us */
canlib_uint32_t u32MsgCycleOffset; /**< 报文发送周期偏移量,定时器计时初值 */
canlib_uint32_t u32InitSendCnt; /**< 报文发送初始次数 */
canlib_uint8_t u8MsgSTD_EXT; /**< 报文类型是标准帧还是扩展帧 标准帧0 扩展帧1 */
canlib_uint8_t u8MsgPro; /**< 报文发送优先级,使用哪个buffer发送 */
canlib_uint8_t u8MsgDLC; /**< 报文发送的长度,默认8 */
canlib_uint8_t u8TXMsgType; /**< 报文发送的类型,周期帧,事件帧,周期事件帧 */
pfnMsgBufferSet MsgBufferSet; /**< 报文发送buffer填充函数,报文发送前会调用此函数从外部加载发送值 */
pfnMsgSuccess MsgSuccess; /**< 报文发送成功回调函数 */
} st_CAN_SendAttribute;
/**@struct st_CAN_Msg
* @brief 报文发送结构体 \n
* 定义报文发送结构的信息
*/
typedef struct
{
canlib_uint32_t MsgID; /**< 报文发送ID */
canlib_uint8_t MsgStd; /**< 报文发送标准帧/扩展帧 */
canlib_uint8_t MsgRTR; /**< 报文发送数据帧/远程帧 默认0 */
canlib_uint8_t MsgDLC; /**< 报文发送长度 */
canlib_uint8_t MsgPro; /**< 报文发送优先级,对应使用buffer */
canlib_uint8_t Msg [ 8 ]; /**< 报文发送数据buffer */
} st_CAN_Msg;
typedef canlib_uint8_t (*HAL_CAN_Send)(st_CAN_Msg *Msg);
/**@struct st_CANMsgStruct
* @brief 内部使用 \n
* 内容不明
*/
typedef struct
{
canlib_uint8_t AnalyzeMsg [ 8u ];
canlib_uint8_t ReceiveBuf [ 8u ];
volatile canlib_uint8_t CAN_Busy;
volatile canlib_uint8_t CAN_Received;
canlib_uint8_t CAN_Status;
canlib_uint8_t CAN_Reverse;
canlib_uint32_t CAN_Lost;
} st_CANMsgStruct;
/**@struct st_CanMsgOp
* @brief 内部使用,不做讲解 \n
* 内部使用,不做讲解
*/
typedef struct
{
st_CANMsgStruct *CAN_MSG_Analysis;
const st_CANMsgAttribute *pAttrubute;
canlib_uint16_t Total_Msg;
canlib_uint8_t u8CAN_RX_ENABLE;
} st_CanMsgOp;
/**@struct st_CAN_SendOperation
* @brief 内部使用,不做讲解 \n
* 内部使用,不做讲解
*/
typedef struct
{
canlib_uint32_t u32MsgID;
canlib_uint32_t u32Timer;
canlib_uint32_t u32MsgCycle;
canlib_uint32_t u32SendCnt;
canlib_uint8_t u8MsgSTD_EXT;
canlib_uint8_t u8MsgPro;
canlib_uint8_t u8TXMsgType;
canlib_uint8_t u8MsgRet;
canlib_uint8_t u8MsgBuff [ 8u ];
canlib_uint16_t u16MsgDLC;
canlib_uint16_t u16TXMsgDIMcounter;
} st_CAN_SendOperation;
/**@struct st_CanMsgTxOp
* @brief 内部使用,不做讲解 \n
* 内部使用,不做讲解
*/
typedef struct
{
const st_CAN_SendAttribute *pCAN_SendAttribute;
st_CAN_SendOperation *CanMsg;
canlib_uint16_t Total_Msg;
HAL_CAN_Send Can_Write;
canlib_uint8_t u8CAN_TX_ENABLE;
} st_CanMsgTxOp;
extern void CAN_RX_SetEnable(st_CanMsgOp *CanRXMsgOp, CAN_RX_Status_t RX_enable);
extern CAN_RX_Status_t CAN_RX_ReadEnableSts(st_CanMsgOp *CanRXMsgOp);
extern void CAN_TX_SetEnable(st_CanMsgTxOp *CanMsgTxOp, CAN_TX_Status_t TX_enable);
extern CAN_TX_Status_t CAN_TX_ReadEnableSts(st_CanMsgTxOp *CanMsgTxOp);
extern void Can_Write_Fun(st_CanMsgTxOp *CanMsgTxOp, canlib_uint32_t u32CbkCycle);
extern CAN_FUNC_ERR_t Can_Msg_Tx_Overwrite(st_CanMsgTxOp *CanMsgTxOp, canlib_uint32_t u32TxMsgIdx, canlib_uint16_t u16TxMSgDIMcounter, canlib_uint32_t u32TxMsgCycle);
extern CAN_FUNC_ERR_t Can_TX_BuffInit(st_CanMsgTxOp *CanMsgTxOp, const st_CAN_SendAttribute *Array, canlib_uint16_t length, HAL_CAN_Send pfunc);
extern void Can_Msg_TX_SUCCESS(st_CanMsgTxOp *CanMsgTxOp, canlib_uint32_t u32TxMsgIdx);
extern CAN_FUNC_ERR_t Can_Msg_TX_FastInitCycle(st_CanMsgTxOp *CanMsgTxOp, canlib_uint32_t u32TxMsgIdx, canlib_uint32_t CurTimerCnt);
extern void Can_RX_BuffInit(st_CanMsgOp *CanRXMsgOp, const st_CANMsgAttribute *array, canlib_uint16_t length);
extern void CanMSg_XMS_Analysis(st_CanMsgOp *CanRXMsgOp, canlib_uint16_t CbkCycle);
extern void Co_Can_Buff_Set(st_CanMsgOp *CanRXMsgOp, canlib_uint16_t MsgID, canlib_uint8_t m_DLC, canlib_uint8_t Msg []);
extern canlib_uint8_t CAN_MSG_Status(st_CanMsgOp *CanRXMsgOp, canlib_uint16_t MsgID);
extern canlib_uint8_t CAN_MSG_Read(st_CanMsgOp *CanRXMsgOp, canlib_uint16_t MsgIdx, canlib_uint8_t BuffIdx);
extern void Can_RX_ResetAllTimer(st_CanMsgOp *CanRXMsgOp);
extern void Can_RX_ResetTimer(st_CanMsgOp *CanRXMsgOp, canlib_uint16_t idx);
extern canlib_uint32_t CAN_RX_Get_TimeStamp(st_CanMsgOp *CanRXMsgOp, canlib_uint16_t MsgIdx);
extern canlib_uint32_t Read_CAN_RX_Version(void);
extern canlib_uint32_t Read_CAN_TX_Version(void);
extern void CAN_TX_DiagCtrlEnable(st_CanMsgTxOp *CanMsgTxOp, CAN_TX_Status_t TX_enable);
extern void CAN_TX_DiagCtrlRelease(st_CanMsgTxOp *CanMsgTxOp);
extern void CAN_RX_DiagCtrlEnable(st_CanMsgOp *CanRXMsgOp, CAN_RX_Status_t RX_enable);
extern void CAN_RX_DiagCtrlRelease(st_CanMsgOp *CanRXMsgOp);
#endif
File added
File added
#include "COM_CAN.h"
#include "TYW_stdint.h"
#include "CAN_CH0_CAN_Communication_Matrix.h"
#include "RTE_CAN.h"
#include "CAN_CFG.h"
#include "RSCAN.h"
#include <string.h>
#include "Common_Interface.h"
#pragma alignvar(8)
uint32_t pRXBuff [ CAN_RX_MSG_Block * CAN_CH0_ID_TOTAL_MAX ];
#pragma alignvar(8u)
uint32_t pTXBuff[CAN_TX_MSG_Block * CAN_CH0_ID_SEND_TOTAL];
void COM_CAN_Init(void)
{
/*CAN APP BUFFER INIT*/
memset(pRXBuff, 0, sizeof(pRXBuff));
memset(pTXBuff, 0, sizeof(pTXBuff));
CAN_CH0_CanMsgOp.CAN_MSG_Analysis = ( st_CANMsgStruct * )pRXBuff;
CAN_CH0_CanMsgTxOp.CanMsg = ( st_CAN_SendOperation * )pTXBuff;
Can_RX_BuffInit(&CAN_CH0_CanMsgOp, CAN_CH0_CAN_MSG_CONST_ARRAY, CAN_CH0_ID_TOTAL_MAX);
Can_TX_BuffInit(&CAN_CH0_CanMsgTxOp, CAN_CH0_CANSendAttr, CAN_CH0_ID_SEND_TOTAL, COM_APP_Process);
}
void COM_RX_Process(void)
{
CanMSg_XMS_Analysis(&CAN_CH0_CanMsgOp, 5u);
}
void COM_CAN_OPEN(void)
{
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
CAN_RX_SetEnable(&CAN_CH0_CanMsgOp, CAN_N_RX_Enable);
}
void COM_TX_Process(void)
{
if ( Common_Get_IG_Sts( ) == COMMON_POWER_ON )
{
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
}
else
{
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Disable);
}
Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 50u);
}
uint8_t COM_APP_Process(st_CAN_Msg *Msg)
{
CAN_Frame_st_t m_msg;
uint8_t ret = 0U;
uint8_t i = 0U;
m_msg.u32CANID = Msg->MsgID;
m_msg.u8CANFrameIDE = Msg->MsgStd;
m_msg.u8CANLEN = Msg->MsgDLC;
for ( i = 0; i < m_msg.u8CANLEN; i++ )
{
m_msg.unCANData.u8CANData [ i ] = Msg->Msg [ i ];
}
ret = RSCAN0_CH4_Set_TXBUF_Data((RSCAN_Channel_Buf_en_t)(Msg->MsgPro), &m_msg);
return ret;
}
\ No newline at end of file
#ifndef COM_CAN_H
#define COM_CAN_H
#include "TYW_stdint.h"
#include "CAN_Lib.h"
void COM_CAN_Init(void);
void COM_RX_Process(void);
void COM_CAN_OPEN(void);
void COM_TX_Process(void);
uint8_t COM_APP_Process(st_CAN_Msg *Msg);
#endif
This diff is collapsed.
#ifndef _COMMON_INTERFACE_H_
#define _COMMON_INTERFACE_H_
#include "TYW_stdint.h"
void Common_DataInit(void);
void Common_Input_Para(void);
uint8_t Common_Get_IG_Sts(void);
DataValid_t Common_Get_IG_Sts_Valid(void);
void Common_Set_IG_Sts(COMMON_PowerStatus_t Val);
void Common_Set_IG_Sts_Valid(DataValid_t Val);
uint16_t Common_Get_Act_V_Speed(void);
uint16_t Common_Get_Act_E_Speed(void);
uint16_t Common_Get_Disp_V_Speed(void);
uint16_t Common_Get_Disp_E_Speed(void);
DataValid_t Common_Get_Act_V_Speed_Valid(void);
DataValid_t Common_Get_Act_E_Speed_Valid(void);
DataValid_t Common_Get_Disp_V_Speed_Valid(void);
DataValid_t Common_Get_Disp_E_Speed_Valid(void);
void Common_Set_Act_V_Speed(uint16_t Val);
void Common_Set_Act_E_Speed(uint16_t Val);
void Common_Set_Disp_V_Speed(uint16_t Val);
void Common_Set_Disp_E_Speed(uint16_t Val);
uint16_t Common_Get_TireSize(void);
void Common_Set_Act_V_Speed_Valid(DataValid_t Val);
void Common_Set_Act_E_Speed_Valid(DataValid_t Val);
void Common_Set_Disp_V_Speed_Valid(DataValid_t Val);
void Common_Set_Disp_E_Speed_Valid(DataValid_t Val);
uint16_t Common_Get_DispSpeed(void);
uint32_t Common_GetIgnOnTime(void); /*ms*/
uint32_t Common_GetIgnOffTime(void); /*ms*/
uint32_t Common_GetRunningTime(void); /*ms*/
#endif
This diff is collapsed.
#ifndef _CONFIGURATION_H_
#define _CONFIGURATION_H_
#include "TYW_stdint.h"
typedef enum //发动机类型配置
{
NULLSTARTER ,
WEICHAI ,
SHANGCHAI ,
KANGMINGSI ,
YUNNEI ,
YUCHAI ,
LUOTUO ,
} Starter_Type;
typedef enum
{
valid,
invalid,
} Enable_Type;
typedef struct
{
double slope;
double intercept;
} LinearFunction;
LinearFunction calculateLinearFunction(double x1, double y1, double x2, double y2);
Starter_Type Get_Stater_Type(void);
Enable_Type VSpeed_Enable(void); //车速使能配置
uint16_t VSpeed_Error_Value(void); //车速误差系数配置
uint32_t K_Value(void); //K值配置
uint16_t Get_Voltage_Threshold_Low(void);
uint16_t Get_Voltage_Threshold_High(void);
uint16_t Get_Power_Cut_Off_Configuration_Valid_High(void); //配置高有效或低有效
uint16_t Get_Barometric_Threshold_Low(void); //制动气压低阈值配置(十倍参数)
uint16_t Get_Barometric_Threshold_High(void); //制动气压高阈值配置(十倍参数)
uint16_t Wet_Get_Barometric_Threshold_Low(void); //湿式制动气压低阈值配置(一倍)
uint16_t Brake_Pressure_Acquisition(uint16_t Brake_Pressure_Voltage ); //制动气压电压换算成气压
uint16_t Brake_Pressure_Acquisition_Resistance(uint16_t Brake_Pressure_Resistance ); //制动气压电阻换算成气压
uint16_t Wet_Brake_Pressure_Acquisition(uint16_t Wet_Brake_Pressure_Voltage ); //湿式制动气压电压换算成气压
uint16_t Get_Transmission_Oil_Temperature_threshold_High(void); //变速箱油温高阈值配置
uint16_t Transmission_Oil_Temperature_Resistance(uint16_t Oil_Temperature_Resistance ); //变速箱油温电阻换算成温度
uint16_t Get_Coolant_Temperature_threshold_High(void); //水温高阈值配置
uint16_t Get_EngineOilPressure_Threshold_Low(void);
uint16_t Get_EngineOilPressure_Threshold_High(void);
uint16_t Get_Urea_Threshold_Low(void);
uint16_t Get_EldingLevel_Low(void);
uint16_t Get_Hydraulic_Oil_Temperature_High(void);
uint16_t Get_TransmissionOilPressure_Low(void);
uint16_t Get_TransmissionOilPressure_High(void);
uint32_t Get_EldingLevel_status(void); //燃油液位低指示灯 电阻转液位
uint32_t Get_Transmission_Oil_Pressure(void); //变速箱油压 由电压值获取油压值
uint32_t Get_TransmissionOilPressure(void); //变速箱油压 由输入值(CAN、硬线)获取油压值
uint32_t Get_Hydraulic_Oil_Resistance_Temperature(void); //由液压油温高的电阻值得到对应温度
#endif
#include "CAN_CH0_CAN_Communication_Matrix.h"
#include "Common_Interface.h"
#include "Data_DTE.h"
static uint32_t Data_DTE_Fuel = 0xFFFFFFu;
static uint16_t Data_This_ECons = 0xFFFFu;
/******************************************************************************
函数名:Data_Vehicle_Speed_Wakeup_Init
功 能:车速数据唤醒初始化
参 数:无
返回值:无
******************************************************************************
注 意:该函数唤醒初始化被调用一次
******************************************************************************/
void Data_DTE_Service(void)
{
}
uint32_t Get_DTE_Fuel(void)
{
return Data_DTE_Fuel;
}
#ifndef _DATA_DTE_H_
#define _DATA_DTE_H_
void Data_DTE_Service(void);
uint32_t Get_DTE_Power(void);
uint32_t Get_DTE_Fuel(void);
uint32_t Get_DTE_All(void);
void Data_ECons_Service(void);
uint16_t Get_This_Econs(void);
#endif
This diff is collapsed.
#ifndef _Data_Espeed_H_
#define _Data_Espeed_H_
#include "TYW_stdint.h"
/******************************************************************************
发动机转速
******************************************************************************/
/*** 参数设置 ***/
#define DATA_ENGINE_RUNNING_THRESHOLD 400 //发动机运转阈值
#define DATA_ENGINE_STOP_THRESHOLD 300 //发动机停止阈值
#define DATA_ESPEED_DAMPING_FACTOR 4 //阻尼系数
#define DATA_ESPEED_INC_STEP 10 //速度增加时慢加速速度变化步长
#define DATA_ESPEED_DEC_STEP 20 //方向改变时急减速速度变化步长
#define DATA_ESPEED_APPR_SPEED_MIN 10 //最小逼近速度
#define DATA_ESPEED_HYSTERESIS 5 //回差
/*** 控制结构 ***/
typedef struct
{
uint16_t Buffer [ 5 ];
uint8_t Cnt;
} DataESpeedSamplerStruct; //转速采样结构
typedef struct
{
uint16_t Speed;
uint16_t Delta;
uint8_t Dir;
} DataESPeedDampingStruct; //转速阻尼结构
typedef struct
{
uint16_t ESpeedBackup;
uint16_t Timer;
uint8_t Mode;
} DataESpeedIdleStruct; //怠速处理结构
/******************************************************************************
函数名:Data_Engine_Speed_KL30_Wakeup_Init
功 能:发动机转速初始化函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数KL30初始化/Wakeup初始化被调用一次
******************************************************************************/
void Data_Engine_Speed_KL30_Wakeup_Init(void);
/******************************************************************************
函数名:Data_Engine_Speed_Processing_Service
功 能:发动机转速数据处理函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数必须每10ms被调用一次
******************************************************************************/
void Data_Engine_Speed_Processing_Service(void);
uint8_t Get_EngineValid(void);
uint16_t Get_ActualEngineSpeed(void);
uint16_t Get_DispEngineSpeed(void);
uint16_t Get_ESpeedCAFD(void);
#endif
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#ifndef Data_IGN_OFF_Timing_User_H
#define Data_IGN_OFF_Timing_User_H
void Data_Clear_OFF_Time(void);
void Data_IGN_OFF_Timing_User_KL30_Init(void);
void Data_IGN_OFF_Timing_User_KL15_Init(void);
void Data_Save_Cur_Time(void);
void Data_Cal_Elapse(void);
extern unsigned long int Total_Time;
#endif
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File added
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File added
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File added
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File added
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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