#ifndef __ENVIOLO_CAN_H_ #define __ENVIOLO_CAN_H_ #include #include "can.h" #include "var.h" #define ID_ENVIOLO_CONFIG 0x300 #define ID_ENVIOLO_CONTROL 0x301 #define COMMUNICATION_TIMEOUT 50 //200MS*50=10000=10S //0X300默认的参数 参考enviolo出厂默认值 #define DU_FRONT_CHAINRING 43 #define DU_REARSPROCKET 20 #define DU_CADENCE_LOWLIMIT 30 #define DU_CADENCE_HIGHLIMIT 90 #define DU_SLEEPTIME 5 typedef enum { DIS_PEDAL=0X01, DIS_PEDALLING, DIS_SUCCESS }DisUI_Struct_t; typedef enum { WORKMODE_OFF=0X00, WORKMODE_MANUAL=0X03,//手动模式 WORKMODE_AUTO=0X04,//自动调节模式 WORKMODE_CALIB=0X05,//校准模式 }WorkMode_Struct_t; typedef enum { NOTNEED_CALIB=0, NEED_CALIB=1, }ENUM_CALIBRATION; typedef enum { SEND_CONFIG=0, SEND_DATA, SEND_POWEROFF, }ENVIOLO_STATUS; typedef struct { uint8_t u8Get_Gear_Pedal_RPM; //反馈的踏频值 uint8_t u8Get_Gear_CVP_Actuel_Ratio; //反馈实际的输出比 uint16_t u16Get_Gear_Vehicle_Speed; //当前速度 float flGet_Gear_Battery_Voltage; //电压 uint16_t u16Get_Gear_Wheel_RPM; //转速 uint16_t u16CalibrationVal; //需要校准bit uint16_t u16Timeout_Communication; //3S的计时,开机3S没有enviolo的通信则报错 uint8_t u8SendConfigDataToEnviolo; //默认开机送一次配置信息或者参数修改后发送一次配置信息 }Enviolo_Struct_t; typedef struct { uint8_t u8DesiredGearBoxMode; //工作模式 uint16_t u16DesiredCanence; //期望的目标踏频值 uint16_t u16DesiredGearRatio; //期望的比例控制值 }Enviolo_SetVal_Struct_t; typedef struct { uint8_t u8CalibrationCmdToOBC; //变速器校准指令:0X00-->校准完成或无需校准 0X01-->需要校准 0X02-->OBC提示用户将车轮转动 uint8_t u8CalibrationCmdToEnviolo; //发送完了校准信息马上切换为0X01模式 }Calibration_Struct_t; extern Enviolo_Struct_t CanEnvioloData; extern Enviolo_SetVal_Struct_t EnvioloSetData; extern Calibration_Struct_t Enviolo_Calibration; void GetWorkSetVal(uint8_t* Data, Enviolo_SetVal_Struct_t *RetVal, Calibration_Struct_t *Calib); void sendDataToEnviolo(Enviolo_SetVal_Struct_t *st_SendData, Calibration_Struct_t *st_Calib); void Slot_EnvioloData(uint8_t *u8Data, Calibration_Struct_t *Calib); void sendDataToOBC(uint8_t u8Step); void sendDataToEnvioloPwroff(void); void MC_Fault_Enviolo_SpeedSensor_Process(MC_ErrorCode_Struct_t* p_MC_ErrorCode); #endif