enviolo_can.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef __ENVIOLO_CAN_H_
  2. #define __ENVIOLO_CAN_H_
  3. #include <stdint.h>
  4. #include "can.h"
  5. #include "var.h"
  6. #define ID_ENVIOLO_CONFIG 0x300
  7. #define ID_ENVIOLO_CONTROL 0x301
  8. #define COMMUNICATION_TIMEOUT 50 //200MS*50=10000=10S
  9. //0X300默认的参数 参考enviolo出厂默认值
  10. #define DU_FRONT_CHAINRING 43
  11. #define DU_REARSPROCKET 20
  12. #define DU_CADENCE_LOWLIMIT 30
  13. #define DU_CADENCE_HIGHLIMIT 85
  14. #define DU_SLEEPTIME 5
  15. typedef enum
  16. {
  17. DIS_PEDAL=0X01,
  18. DIS_PEDALLING,
  19. DIS_SUCCESS
  20. }DisUI_Struct_t;
  21. typedef enum
  22. {
  23. WORKMODE_OFF=0X00,
  24. WORKMODE_MANUAL=0X03,//手动模式
  25. WORKMODE_AUTO=0X04,//自动调节模式
  26. WORKMODE_CALIB=0X05,//校准模式
  27. }WorkMode_Struct_t;
  28. typedef enum
  29. {
  30. NOTNEED_CALIB=0,
  31. NEED_CALIB=1,
  32. }ENUM_CALIBRATION;
  33. typedef struct
  34. {
  35. uint8_t u8Get_Gear_Pedal_RPM; //反馈的踏频值
  36. uint8_t u8Get_Gear_CVP_Actuel_Ratio; //反馈实际的输出比
  37. uint16_t u16Get_Gear_Vehicle_Speed; //当前速度
  38. float flGet_Gear_Battery_Voltage; //电压
  39. uint16_t u16Get_Gear_Wheel_RPM; //转速
  40. uint16_t u16CalibrationVal; //需要校准bit
  41. uint16_t u16Timeout_Communication; //3S的计时,开机3S没有enviolo的通信则报错
  42. uint8_t u8SendConfigDataToEnviolo; //默认开机送一次配置信息或者参数修改后发送一次配置信息
  43. }Enviolo_Struct_t;
  44. typedef struct
  45. {
  46. uint8_t u8DesiredGearBoxMode; //工作模式
  47. uint16_t u16DesiredCanence; //期望的目标踏频值
  48. uint16_t u16DesiredGearRatio; //期望的比例控制值
  49. }Enviolo_SetVal_Struct_t;
  50. typedef struct
  51. {
  52. uint8_t u8CalibrationCmdToOBC; //变速器校准指令:0X00-->校准完成或无需校准 0X01-->需要校准 0X02-->OBC提示用户将车轮转动
  53. uint8_t u8CalibrationCmdToEnviolo; //发送完了校准信息马上切换为0X01模式
  54. }Calibration_Struct_t;
  55. extern Enviolo_Struct_t CanEnvioloData;
  56. extern Enviolo_SetVal_Struct_t EnvioloSetData;
  57. extern Calibration_Struct_t Enviolo_Calibration;
  58. void GetWorkSetVal(uint8_t* Data, Enviolo_SetVal_Struct_t *RetVal, Calibration_Struct_t *Calib);
  59. void sendDataToEnviolo(Enviolo_SetVal_Struct_t *st_SendData, Calibration_Struct_t *st_Calib);
  60. void Slot_EnvioloData(uint8_t *u8Data, Calibration_Struct_t *Calib);
  61. void sendDataToOBC(uint8_t u8Step);
  62. void sendDataToEnvioloPwroff(void);
  63. void MC_Fault_Enviolo_SpeedSensor_Process(MC_ErrorCode_Struct_t* p_MC_ErrorCode);
  64. #endif