enviolo_can.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 90
  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 enum
  34. {
  35. SEND_CONFIG=0,
  36. SEND_DATA,
  37. SEND_POWEROFF,
  38. }ENVIOLO_STATUS;
  39. typedef struct
  40. {
  41. uint8_t u8Get_Gear_Pedal_RPM; //反馈的踏频值
  42. uint8_t u8Get_Gear_CVP_Actuel_Ratio; //反馈实际的输出比
  43. uint16_t u16Get_Gear_Vehicle_Speed; //当前速度
  44. float flGet_Gear_Battery_Voltage; //电压
  45. uint16_t u16Get_Gear_Wheel_RPM; //转速
  46. uint16_t u16CalibrationVal; //需要校准bit
  47. uint16_t u16Timeout_Communication; //3S的计时,开机3S没有enviolo的通信则报错
  48. uint8_t u8SendConfigDataToEnviolo; //默认开机送一次配置信息或者参数修改后发送一次配置信息
  49. }Enviolo_Struct_t;
  50. typedef struct
  51. {
  52. uint8_t u8DesiredGearBoxMode; //工作模式
  53. uint16_t u16DesiredCanence; //期望的目标踏频值
  54. uint16_t u16DesiredGearRatio; //期望的比例控制值
  55. }Enviolo_SetVal_Struct_t;
  56. typedef struct
  57. {
  58. uint8_t u8CalibrationCmdToOBC; //变速器校准指令:0X00-->校准完成或无需校准 0X01-->需要校准 0X02-->OBC提示用户将车轮转动
  59. uint8_t u8CalibrationCmdToEnviolo; //发送完了校准信息马上切换为0X01模式
  60. }Calibration_Struct_t;
  61. extern Enviolo_Struct_t CanEnvioloData;
  62. extern Enviolo_SetVal_Struct_t EnvioloSetData;
  63. extern Calibration_Struct_t Enviolo_Calibration;
  64. void GetWorkSetVal(uint8_t* Data, Enviolo_SetVal_Struct_t *RetVal, Calibration_Struct_t *Calib);
  65. void sendDataToEnviolo(Enviolo_SetVal_Struct_t *st_SendData, Calibration_Struct_t *st_Calib);
  66. void Slot_EnvioloData(uint8_t *u8Data, Calibration_Struct_t *Calib);
  67. void sendDataToOBC(uint8_t u8Step);
  68. void sendDataToEnvioloPwroff(void);
  69. void MC_Fault_Enviolo_SpeedSensor_Process(MC_ErrorCode_Struct_t* p_MC_ErrorCode);
  70. #endif