| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #pragma once
- #include <stdint.h>
- #pragma pack (push,1)
- typedef struct
- {
- uint8_t can_addr;
- uint8_t size; //只包含can数据部分,不含can_key
- uint16_t can_key;
- }can_head_t;
- #pragma pack(pop)
- #pragma pack (push,1)
- typedef struct
- {
- //整个包大小
- uint8_t size;
- //命令设备
- uint8_t type;
- //协议类型
- uint8_t protocol;
- //命令类型
- uint8_t cmd;
- //命令校验
- uint16_t checksum;
- //命令处理调用
- uint8_t dir;
- //命令返回状态
- uint8_t bStatus;
- }protocol_head_t;
- #pragma pack(pop)
- enum
- {
- OP_NONE, //返回bms基本信息
- OP_BIN_LIAN, // not used
- OP_WRITE_SN,
- OP_PAIR,
- OP_UPDATE_PAIR,
- OP_READ_INFO,
- OP_ALARM_TIMES,
- OP_CELL_VOL,//0x07
- OP_TEMP_OTHER,//0x08
-
- OP_OPEN_FET = 0x0B,
- OP_CLEAR_PAIR = OP_TEMP_OTHER + 1,
- OP_UPDATE_SOFTWARE_REQ = 0x0E,
- OP_UPDATE_SOFTWARE = 0x0F,
-
- OP_MAX
- };
- #pragma pack (push,1)
- typedef struct
- {
- uint8_t bike_speed;
- uint32_t current_miles;//本次电门打开行驶的里程
- uint8_t egate_open; //电门开关信号
- uint8_t operate;
- uint8_t res[8];//保留
- }command_t;
- #pragma pack(pop)
- #pragma pack (push,1)
- typedef struct {
- uint8_t remain_mils; //预估可行驶里程
- uint8_t soc_percent; //剩余电量
- uint8_t charger_remain_time; //预计充电完成时间
- uint8_t is_charging; //是否在充电
- uint32_t current; //放电或者充电电流
- uint32_t pack_voltage; //电池包总电压
- uint8_t max_temp; //4个温感中的最高温度
- uint16_t bms_status; //bms的状态,比如过高温放电等
- uint32_t in_balance_cells; //正在均衡的电芯
- uint8_t misc_flags; //0:bound, 1-2: mosfet, 3: aux short, 4: full 5-6:reserve
- uint8_t result; //0-3:result, 4-7: operate
- }common_response_t;
- #pragma pack(pop)
- void protocol_send_bms_info(protocol_head_t *head);
- void protocol_send_debug_info(uint8_t dest, char *data, int size);
|