protocol.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #pragma once
  2. #include <stdint.h>
  3. #pragma pack (push,1)
  4. typedef struct
  5. {
  6. uint8_t can_addr;
  7. uint8_t size; //只包含can数据部分,不含can_key
  8. uint16_t can_key;
  9. }can_head_t;
  10. #pragma pack(pop)
  11. #pragma pack (push,1)
  12. typedef struct
  13. {
  14. //整个包大小,包含protocol_head_t
  15. uint8_t size;
  16. //命令设备
  17. uint8_t type;
  18. //协议类型
  19. uint8_t protocol;
  20. //命令类型
  21. uint8_t cmd;
  22. //命令校验
  23. uint16_t checksum;
  24. //命令处理调用
  25. uint8_t dir;
  26. //命令返回状态
  27. uint8_t bStatus;
  28. }protocol_head_t;
  29. #pragma pack(pop)
  30. enum
  31. {
  32. OP_NONE, //返回bms基本信息
  33. OP_BIN_LIAN, // not used
  34. OP_WRITE_SN,
  35. OP_PAIR,
  36. OP_UPDATE_PAIR,
  37. OP_READ_INFO,
  38. OP_ALARM_TIMES,
  39. OP_CELL_VOL,//0x07
  40. OP_TEMP_OTHER,//0x08
  41. OP_OPEN_FET = 0x0B,
  42. OP_CLEAR_PAIR = OP_TEMP_OTHER + 1,
  43. OP_UPDATE_SOFTWARE_REQ = 0x0E,
  44. OP_UPDATE_SOFTWARE = 0x0F,
  45. OP_MAX
  46. };
  47. #pragma pack (push,1)
  48. typedef struct
  49. {
  50. uint8_t bike_speed;
  51. uint32_t current_miles;//本次电门打开行驶的里程
  52. uint8_t egate_open; //电门开关信号
  53. uint8_t operate;
  54. uint8_t res[8];//保留
  55. }command_t;
  56. #pragma pack(pop)
  57. #pragma pack (push,1)
  58. typedef struct {
  59. uint8_t remain_mils; //预估可行驶里程
  60. uint8_t soc_percent; //剩余电量
  61. uint8_t charger_remain_time; //预计充电完成时间
  62. uint8_t is_charging; //是否在充电
  63. uint32_t current; //放电或者充电电流
  64. uint32_t pack_voltage; //电池包总电压
  65. uint8_t max_temp; //4个温感中的最高温度
  66. uint16_t bms_status; //bms的状态,比如过高温放电等
  67. uint32_t in_balance_cells; //正在均衡的电芯
  68. uint8_t misc_flags; //0:bound, 1-2: mosfet, 3: aux short, 4: full 5-6:reserve
  69. uint8_t result; //0-3:result, 4-7: operate
  70. }common_response_t;
  71. #pragma pack(pop)
  72. void protocol_send_bms_info(protocol_head_t *head);
  73. void protocol_send_debug_info(uint8_t dest, char *data, int size);