LWL/MDK-ARM/user/inc/gps2.h
youxianghua faacc7b570 提交
2024-07-10 14:01:39 +08:00

350 lines
9.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*文件描述
*CRC校验范围模块类别-CRC校验前的一个字节
*低字节先发送原则
*通信参数9600N81
*协议中的模块序号是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