/* *文件描述 *CRC校验范围:模块类别-CRC校验前的一个字节 *低字节先发送原则 *通信参数:9600,N,8,1 *协议中的模块序号是BMS的地址,需与上位机的配置一致,范围1-254 出厂默认值为0x01 */ #ifndef __GPS2_H #define __GPS2_H #include "stm32f10x.h" /*****************************************宏定义*************************************************/ #define GPSFRAME_HAND 0x7e //帧头 #define GPSMOD_TYPE 0x0a //模块类别 #define GPSMOD_NUM 0x01 //模块序号 #define GPSCOMMOND_0x30 0x30 //信息查询 #define GPSCOMMOND_0x40 0x40 //参数读取 #define GPSCOMMOND_0x41 0x41 //参数下发 #define GPSCOMMOND_0x50 0x50 //恢复出厂设置 #define GPSCOMMOND_0x51 0x51 //配置新地址 #define GPSCOMMOND_0x62 0x62 //电流校准 #define GPSCOMMOND_0x63 0x63 //获取UUID #define GPSCOMMOND_0x22 0x22 //开关放电MOS管 #define GPSCOMMOND_0x23 0x23 //开关充电MOS管 /*帧格式*/ typedef struct { u8 Framehand; //帧头 u8 ModeType; //模块类别 u8 ModeNum; //模块序号 u8 Len_L; //报文长度低字节 只描述数据体 u8 Len_H; //报文长度高字节 u8 Commond; //命令 u8 ModeWord; //模块工作状态 0 停止均衡 1-15通道号 254自由均衡 u8 Data[130]; //数据体 u8 CRC_L; //CRC低字节 u8 CRC_H; //CRC高字节 }data_Gps; /*接收GPS的数据缓存*/ typedef struct { u8 gps_Rev_startss; //接收一帧数据完成标志位 u8 gps_Rev_bufss[100]; //数据缓存 u16 gps_Rev_buftmpss; //数据索引 }Rev_Gps; /*数据*/ typedef struct { union { u8 data[120]; struct //分辨率1mv 未使用置0xFFFF { u8 Singcellvol_1_l; //单体电压1低字节 u8 Singcellvol_1_h; //单体电压1高字节 u8 Singcellvol_2_l; u8 Singcellvol_2_h; u8 Singcellvol_3_l; u8 Singcellvol_3_h; u8 Singcellvol_4_l; u8 Singcellvol_4_h; u8 Singcellvol_5_l; u8 Singcellvol_5_h; u8 Singcellvol_6_l; u8 Singcellvol_6_h; u8 Singcellvol_7_l; u8 Singcellvol_7_h; u8 Singcellvol_8_l; u8 Singcellvol_8_h; u8 Singcellvol_9_l; u8 Singcellvol_9_h; u8 Singcellvol_10_l; u8 Singcellvol_10_h; u8 Singcellvol_11_l; u8 Singcellvol_11_h; u8 Singcellvol_12_l; u8 Singcellvol_12_h; u8 Singcellvol_13_l; u8 Singcellvol_13_h; u8 Singcellvol_14_l; u8 Singcellvol_14_h; u8 Singcellvol_15_l; u8 Singcellvol_15_h; u8 Singcellvol_16_l; //单体电压16低字节 u8 Singcellvol_16_h; //单体电压16高字节 u8 Singcellvol_17_l; u8 Singcellvol_17_h; u8 Singcellvol_18_l; u8 Singcellvol_18_h; u8 Singcellvol_19_l; u8 Singcellvol_19_h; u8 Singcellvol_20_l; u8 Singcellvol_20_h; u8 Singcellvol_21_l; u8 Singcellvol_21_h; u8 Singcellvol_22_l; u8 Singcellvol_22_h; u8 Singcellvol_23_l; u8 Singcellvol_23_h; u8 Singcellvol_24_l; u8 Singcellvol_24_h; u8 Singcellvol_25_l; u8 Singcellvol_25_h; u8 Singcellvol_26_l; u8 Singcellvol_26_h; u8 Singcellvol_27_l; u8 Singcellvol_27_h; u8 Singcellvol_28_l; u8 Singcellvol_28_h; u8 Singcellvol_29_l; u8 Singcellvol_29_h; u8 Singcellvol_30_l; u8 Singcellvol_30_h; u8 Singcellvol_31_l; u8 Singcellvol_31_h; u8 Singcellvol_32_l; u8 Singcellvol_32_h; //64 u8 tmp_1_l; //温度1低字节 分辨率:0.1℃ 负值最高位为1 未使用的置0x07d0 u8 tmp_1_h; //温度1高字节 u8 tmp_2_l; //温度2低字节 u8 tmp_2_h; //温度2高字节 u8 tmp_3_l; //温度3低字节 u8 tmp_3_h; //温度3高字节 u8 mostmp_l; //MOS温度低字节 u8 mostmp_h; //MOS温度高字节 u8 tmp_5_l; //温度5低字节 u8 tmp_5_h; //温度5高字节 u8 tmp_6_l; //温度6低字节 u8 tmp_6_h; //温度6高字节 u8 tmp_7_l; //温度7低字节 u8 tmp_7_h; //温度7高字节 u8 tmp_8_l; //温度8低字节 u8 tmp_8_h; //温度8高字节 u8 maxtmp_l; //最高温度低字节 u8 maxtmp_h; //最高温度高字节 u8 maxtmpnum; //最高温度序号 u8 mintmp_l; //最低温度低字节 分辨率:0.1℃ 负值最高位为1 未使用的置0x07d0 u8 mintmp_h; //最低温度高字节 u8 mintmpnum; //最低温度序号 u8 Singmaxvol_l; //单体最高电压低字节 1mv u8 Singmaxvol_h; //单体最高电压高字节 u8 Singminvol_l; //单体最低电压低字节 1mv u8 Singminvol_h; //单体最低电压高字节 u8 SumVol_1; //电池总电压 1 1mv u8 SumVol_2; //电池总电压 2 u8 SumVol_3; //电池总电压 3 u8 SumVol_4; //电池总电压 4 u8 SumCurr_1; //电池组电流 1 1ma u8 SumCurr_2; //电池组电流 2 u8 SumCurr_3; //电池组电流 3 u8 SumCurr_4; //电池组电流 4 u8 eQl_l; //额度容量低字节 0.1AH u8 eQl_h; //额定容量高字节 u8 SOC_l; //SOC低字节 0.1% u8 SOC_h; //SOC高字节 0.1% u8 CellXHnum_l; //电池循环次数低字节 u8 CellXHnum_h; //电池循环次数高字节 u8 rjbb_l; //软件版本号低字节 u8 rjbb_h; //软件版本号高字节 u8 cellnum_l; //电池系列号低字节 u8 cellnum_h; //电池系列号高字节 u8 BMSerro_1; //告警字——1 u8 BMSerro_2; //告警字——2 u8 BMSerro_3; //告警字——3 u8 BMSerro_4; //告警字——4 /* 0位:超压 1位:欠压 2位:放电超温 3位:放电低温 4位:充电超温 5位:充电低温 6位:放电过流;7位:放电短路 8位:充电过流:9位:容量过低:13位MOS温度过高 */ u8 jhnum_1; //均衡通道号1 u8 jhnum_2; //均衡通道号2 u8 jhnum_3; //均衡通道号3 u8 jhnum_4; //均衡通道号4 u8 maxsingnum; //最高单体序号 u8 minsingnum; //最低单体序号 u8 OutMOS; //放电MOS管状态 u8 ChgMOS; //充电MOS管状态 }data_Query; }data_Querysss; //信息查询 union { u8 data[75]; struct //分辨率1mv 未使用置0xFFFF { u8 Overvol_l; //超压保护门限低字节 1mv u8 Overvol_h; //超压保护门限高字节 u8 Overvoltime; //超压保护延时 s u8 Qvol_l; //欠压保护门限低电压 1mv u8 Qvol_h; //欠压保护门限高电压 u8 Qvoltime; //欠压保护延时 u8 JHON_Vol_l; //均衡开启电压低字节 u8 JHON_Vol_h; //均衡开启电压高字节 u8 JHON_yc_l; //均衡开启压差低字节 u8 JhON_yc_h; //均衡开启压差高字节 u8 cyzuz_l; //采样电阻阻值低字节 u8 cyzuz_h; //采样电阻阻值高字节 u8 OutcurrG_l; //放电过流保护门限低字节 0.1A u8 OutcurrG_h; //放电过流保护门限高字节 u8 Outcurrtime_l; //放电过流保护延时低字节 s u8 Outcurrtime_h; //放电过流保护延时高字节 u8 Outdl_l; //放电短路保护门限低字节 1mv u8 Outdl_h; //放电短路保护门限高字节 u8 Outdltime_l; //放电短路保护延时低字节 u8 Outdltime_h; //放电短路保护延时高字节 u8 ChgcurrG_l; //充电过流保护门限低字节 mv u8 ChgcurrG_h; //充电过流保护门限高字节 u8 Chgcurrtime;//充电过流恢复延时s u8 OutCtmp_l; //放电超温保护温度低字节 0.1 u8 OutCtmp_h; //放电超温保护温度高字节 u8 OutCHtmp_l; //放电超温恢复温度低字节 0.1 u8 OutCHtmp_h; //放电超温恢复温度高字节 u8 OutDtmp_l; //放电低温保护温度低字节 0.1 u8 OutDtmp_h; //放电低温保护温度高字节 u8 OutDHtmp_l; //放电低温恢复温度低字节 0.1 u8 OutDHtmp_h; //放电低温恢复温度高字节 u8 ChgCtmp_l; //充电超温保护温度低字节 0.1 u8 ChgCtmp_h; //充电超温保护温度高字节 u8 ChgCHtmp_l; //充电超温恢复温度低字节 0.1 u8 ChgCHtmp_h; //充电超温恢复温度高字节 u8 ChgDtmp_l; //充电低温保护温度低字节 0.1 u8 ChgDtmp_h; //充电低温保护温度高字节 u8 ChgDHtmp_l; //充电低温恢复温度低字节 0.1 u8 ChgDHtmp_h; //充电低温恢复温度高字节 u8 SjRL_l; //设计容量低字节 u8 SjRL_h; //设计容量高字节 u8 SyRL_l; //剩余容量低字节 u8 SyRL_h; //剩余容量高字节 u8 FCC_l; //FCC低字节 u8 FCC_h; //FCC高字节 u8 Statebit; //学习标志位 u8 bhrl; //保护容量百分比 u8 znum; //电池总串数 u8 RSNS_VALUE; // 0 u8 CvolH_l; //超压恢复电压低字节 u8 CvolH_h; //超压恢复电压高字节 u8 QvolH_l; //欠压恢复电压低字节 u8 QvolH_h; //欠压恢复电压高字节 u8 CBvol_l; //查表电压低字节 u8 CBvol_h; //查表电压高字节 u8 Sleeptime_l; //休眠延时低字节 u8 Sleeptime_h; //休眠延时高字节 u8 HXCurr_l; //唤醒电流低字节 u8 HXCurr_h; //唤醒电流高字节 u8 erGcurr_l; //二级过流保护低字节 u8 erGcurr_h; //二级过流保护高字节 u8 erGcurrtime_l; //二级过流保护延时低字节 u8 erGcurrtimr_h; //二级过流保护延时高字节 u8 ChgGcurr; //充电过流保护延时 u8 AFE1; //AFE1串数 u8 AFE2; //AFE2串数 u8 celltype; //电芯类型 u8 MOSCtmp_l; //MOS超温保护低字节 0.1度 u8 MOSCtmp_h; //MOS超温保护高字节 u8 MOSCHtmp_l; //MOS超温恢复低字节 0.1度 u8 MOSCHtmp_h; //MOS超温恢复高字节 u8 LDcurr_l; //漏电流低字节 u8 LDcurr_h; //漏电流高字节 u8 SleepLDcurr_l; //睡眠漏电流低字节 MA u8 SleepLDcurr_h; //睡眠漏电流高字节 MA }data_RevWrite; }data_RevWritesss; //参数读取写入 struct { u8 addrdata; //模块地址 }Addr; struct { u8 step; //0为电流0偏校准 4为二次零偏校准 u32 currjzz; //校准值 ma }CurrJZ; //电流校准 struct { u8 uuid[12]; }UUID; //UUID }gpss_datas; /*定义全局变量*/ extern Rev_Gps Rev_GpsUsart1; //接收串口下传的数据 extern gpss_datas gps_datas; //GPS相关内容 extern unsigned char UUID[12]; #endif