#ifndef __VAR_H #define __VAR_H #include "stm32f1xx_hal.h" #include "key_drivers.h" #include "stdlib.h" #include "string.h" /******************************类型定义Begin*************************/ typedef enum { TRUE = 0U, FALSE, }TrueOrFalse_Flag_Struct_t; //电机运行信息 typedef struct { uint16_t BikeSpeed; //车速 0.1km/h,地址偏移0 int16_t MotorSpeed; //输出转速 1rpm,地址偏移2 uint16_t Power; //电功率 1W,地址偏移4 uint16_t BusVoltage; //母线电压 1mV,地址偏移6 uint16_t BusCurrent; //母线电流 1mA,地址偏移8 uint8_t Cadence; //踏频 1rpm,地址偏移10 uint8_t Torque; //踩踏力矩 1Nm,地址偏移11 uint8_t CadenceDir; //踩踏方向 0-正,1-反,2-停止,地址偏移12 uint8_t GearSt; //助力档位,地址偏移13 uint8_t LightSwitch; //灯开关 0xF0-关,0xF1-开,地址偏移14 uint8_t SOC; //剩余电量 1%,地址偏移15 uint16_t RemainDistance; //续航里程 1km,地址偏移16 uint16_t ODO_Km; //总里程 1km,地址偏移18 uint8_t PowerPerKm; //平均功耗 0.01Ah/km ,地址偏移20 uint8_t T_PCB; //PCB温度 +40℃,地址偏移21 uint8_t T_Roil; //绕组温度 +40℃,地址偏移22 uint8_t T_MCU; //MCU温度 +40℃,地址偏移23 uint32_t ODO_Time; //骑行总时间 1s,地址偏移24 uint8_t RS[4]; }MC_RunInfo_Struct_t; //电机故障码 typedef union MC_ERRORCODE { struct { uint32_t Protect_OverCurrent :1;//过流保护 uint32_t Protect_UnderVoltage :1;//低压保护 uint32_t Protect_OverVoltage :1;//过压保护 uint32_t Protect_LockRotor :1;//堵转保护 uint32_t Protect_OverTemp :1;//过热保护 uint32_t Fault_SpeedSensor :1;//速度传感器故障 uint32_t Fault_TorqueSensor :1;//力矩传感器故障 uint32_t Fault_HallSensor :1;//霍尔传感器故障 uint32_t Fault_PhaseLine :1;//相线故障 uint32_t Fault_NtcSensor :1;//温度传感器故障 uint32_t Fault_BMS_Check :1;//BMS校验失败 uint32_t Fault_HMI_Check :1;//HMI校验失败 uint32_t Fault_PBU_Check :1;//PBU校验失败 uint32_t Fault_MCU :1;//MCU故障 uint32_t Fault_CadenceSensor :1;//踏频传感器故障 uint32_t Fault_GasSensor :1;//指拨故障 uint32_t Fault_MOS :1;//MOS短路 uint32_t Protect_VoltageChange :1;//电压波动异常 uint32_t Fault_Circuit :1;//电路故障 uint32_t Fault_TE_MCU :1;//TE MCU故障 uint32_t Fault_TE_Circuit :1;//TE 电路故障 uint32_t RS1 :1; uint32_t RS2 :1; uint32_t RS3 :1; uint32_t RS4 :1; uint32_t RS5 :1; uint32_t RS6 :1; uint32_t RS7 :1; uint32_t RS8 :1; uint32_t RS9 :1; uint32_t RS10 :1; uint32_t RS11 :1; }ERROR_Bit; uint32_t Code; }MC_ErrorCode_Struct_t; //控制电机指令 typedef enum PBU_AssistMode_Flag { PBU_AssistMode_Flag_Gear = 0U, //档位调节模式 PBU_AssistMode_Flag_Smart, //智能模式 PBU_AssistMode_Flag_Walk, //推行模式 PBU_AssistMode_Flag_WalkSby, //推行等待模式 }PBU_AssistMode_Flag_Struct_t; typedef struct { uint32_t SendCodeTimeCnt_WalkSby; //发送预推行周期计时 TrueOrFalse_Flag_Struct_t HMI_ACK_Flag; //HMI反馈标志 uint32_t DelayTimeCnt; //超时计时 }PBU_WalkSbyProcess_Struct_t; typedef struct { PBU_AssistMode_Flag_Struct_t PBU_AssistMode_Flag; //当前助力模式 uint32_t SendCodeTimeCnt_Ctl; //发送指令周期计时 uint32_t WalkDelayTimeCnt; //推行超时退出计时 uint8_t GearStBak_Walk; //推行模式助力档位备份 uint8_t GearStBak_Smart; //智能模式助力档位备份 TrueOrFalse_Flag_Struct_t IsSmartEtrWalk_Flag; //进入Walk前是否Smart标志 PBU_WalkSbyProcess_Struct_t PBU_WalkSbyProcess; //预推行模式处理 }PBU_AssitMode_Status_Struct_t; typedef struct { uint8_t GearSt; //助力档位 uint8_t LightSwitch; //灯开关 0xF0-关,0xF1-开 }ControlCode_Struct_t; //电池运行状态 typedef union BMS_STATUS { struct { uint8_t Charge :1;//充电 uint8_t Discharge :1;//放电 uint8_t RS1 :1; uint8_t RS2 :1; uint8_t RS3 :1; uint8_t RS4 :1; uint8_t RS5 :1; uint8_t RS6 :1; }Status_Bit; uint8_t Status; }BMS_STATUS_Struct_t; //电池运行信息 typedef struct { uint16_t Voltage; //电压 1mV,地址偏移0 uint16_t Current; //电流 1mA,地址偏移2 uint16_t RC; //剩余容量 1mAh,地址偏移4 uint16_t FCC; //满充容量 1mAh,地址偏移6 uint8_t Cell_NTC; //电芯温度 +40℃,地址偏移8 uint8_t SOC; //剩余电量 1%,地址偏移9 BMS_STATUS_Struct_t Status; //运行状态,地址偏移10 }BMS_RunInfo_Struct_t; //电池故障码 typedef union BMS_ERRORCODE { struct { uint32_t DisOverCurrent2st :1;//二级放电过流保护过流 uint32_t ChgOverCurrent :1;//充电过流保护 uint32_t ShortCircut :1;//短路保护 uint32_t UnderVoltage :1;//过放保护 uint32_t OverVoltage :1;//过充保护 uint32_t DisUnderTemp :1;//放电低温保护 uint32_t DisOverTemp :1;//放电高温保护 uint32_t ChgUnderTemp :1;//充电低温保护 uint32_t ChgOverTemp :1;//充电高温保护 uint32_t DisMOS :1;//放电MOS失效 uint32_t ChgMOS :1;//充电MOS失效 uint32_t NTC :1;//NTC失效 uint32_t DisOverCurrentWarn1 :1;//一级放电过流警告 uint32_t DisOverCurrent1st :1;//一级放电过流保护 uint32_t AFE :1;//AFE失效 uint32_t MCU :1;//MCU故障 uint32_t ChgOverVoltageWarn :1;//充电过压警告 uint32_t DisUnderVoltageWarn :1;//放电低压警告 uint32_t ChgOverCurrentWarn :1;//充电过流警告 uint32_t DisOverCurrentWarn :1;//放电过流警告 uint32_t ChgOverTempWarn :1;//充电高温警告 uint32_t ChgUnderTempWarn :1;//充电低温警告 uint32_t DisOverTempWarn :1;//放电高温警告 uint32_t DisUnderTempWarn :1;//放电低温警告 uint32_t MOSOverTempWarn :1;//MOS高温警告 uint32_t RS11 :1; uint32_t RS12 :1; uint32_t RS13 :1; uint32_t RS14 :1; uint32_t RS15 :1; uint32_t RS16 :1; uint32_t RS17 :1; }ERROR_Bit; uint32_t Code; }BMS_ErrorCode_Struct_t; //按键状态 typedef struct { Key_Status_t Key_Add; //+键 Key_Status_t Key_Dec; //-键 Key_Status_t Key_Set; //i键 Key_Status_t Key_Power; //电源键 Key_Status_t Key_Light; //灯键 Key_Status_t Key_Walk; //Walk键 }PBU_HMI_KeyStatus_Struct_t; typedef struct { PBU_HMI_KeyStatus_Struct_t PBU_HMI_KeyStatus; uint8_t KeyTrig_Flag; //按键触发标志 TrueOrFalse_Flag_Struct_t HMI_ACK_Flag; //HMI进入菜单模式反馈标志 uint32_t SendCodeTimeCnt; //发送指令周期计时 uint32_t DelayTimeCnt; //超时计时 }PBU_HMI_Menu_Process_Struct_t; //按键测试 typedef union KEY_STATUS { struct { uint8_t Add :1;//+ uint8_t Dec :1;//- uint8_t Set :1;//Set uint8_t Light :1;//Light uint8_t Walk :1;//Walk uint8_t Power :1;//Power uint8_t RS1 :1; uint8_t RS2 :1; }Status_Bit; uint8_t Status; }KeyTest_Status_Struct_t; typedef struct { KeyTest_Status_Struct_t KeyTest_Status; //测试模式按键状态 uint32_t SendCodeTimeCnt; //发送指令周期计时 }PBU_TestMode_Process_Struct_t; //PBU出厂配置 typedef struct { uint8_t RatedVoltage; //额定电压 uint8_t GearsNum; //助力档位数量 uint8_t NoHMI_Flag; //支持无HMI标识,0x55-不支持,0x-AA支持 uint8_t Rs1; uint8_t Rs2; uint8_t Rs3; uint8_t Rs4; uint8_t Rs5; uint8_t Rs6; uint8_t Rs7; uint8_t Rs8; uint8_t Rs9; uint8_t Rs10; uint8_t Rs11; uint8_t Rs12; uint8_t Rs13; }PBU_ConfigParam_Struct_t; //PBU运行历史信息 typedef struct { uint32_t RunTime; //运行总时间 1min uint32_t PowerOnCnt; //开机次数 uint8_t Rs1; uint8_t Rs2; uint8_t Rs3; uint8_t Rs4; uint8_t Rs5; uint8_t Rs6; uint8_t Rs7; uint8_t Rs8; }PBU_RunLog_Struct_t; //PBU生产信息 typedef struct { char Manufacturer[8]; //生产厂商 ASCII,0x2E结束,无效填充0x20 char MacAddr[8]; //生产地 ASCII,0x2E结束,无效填充0x20 char MacDate[8]; //生产日期 ASCII,0x2E结束,无效填充0x20 char Rs[8]; }PBU_MacInfo_Struct_t; //PBU版本信息 typedef struct { char Mode[16]; //型号 ASCII,0x2E结束,无效填充0x20 char SN_Num[16]; //序列号 ASCII,0x2E结束,无效填充0x20 char HW_Version[16]; //硬件版本 ASCII,0x2E结束,无效填充0x20 char FW_Version[16]; //软件版本 ASCII,0x2E结束,无效填充0x20 }PBU_VerInfo_Struct_t; //PBU校验信息 typedef struct { uint32_t MAC_ID[3]; //物理ID uint8_t CheckCode[12]; //校验码 }PBU_CheckInfo_Struct_t; //PBU运行模式 typedef enum { PBU_RunMode_MC_AssisitCtrl = 0U, //助力控制模式 PBU_RunMode_HMI_Menu, //HMI设置模式 PBU_RunMode_CDL_KeyTest, //按键测试 PBU_RunMode_PowerOff, //关机处理模式 PBU_RunMode_Updating //升级模式 }PBU_RunMode_t; //PBU关机处理 typedef union READY_STATUS { struct { uint8_t MC :1;//接收到MC关机就绪信号 uint8_t BMS :1;//接收到BMS关机就绪信号 uint8_t HMI :1;//接收到HMI关机就绪信号 uint8_t RS1 :1; uint8_t RS2 :1; uint8_t RS3 :1; uint8_t RS4 :1; uint8_t RS5 :1; }Status_Bit; uint8_t Status; }Ready_Status_Struct_t; typedef struct { Ready_Status_Struct_t Ready_Status; uint32_t SendCodeTimeCnt; uint32_t DelayTimeCnt; }PBU_PowerOff_Process_Struct_t; //开机处理 typedef struct { uint8_t PowerKeyStatus; //0-初始状态,1-按下中,2-弹起 uint32_t PowerOnTimeCnt; uint8_t PowerOnOKCnt; }PBU_PowerOn_Process_Struct_t; //配置MC参数 typedef struct { TrueOrFalse_Flag_Struct_t MC_ACK_Flag; uint32_t SendCodeTimeCnt; uint32_t DelayTimeCnt; }PBU_MC_CfgProcess_Struct_t; //PBU故障码 typedef union PBU_ERRORCODE { struct { uint32_t Key_Add :1;//+键故障 uint32_t Key_Dec :1;//-键故障 uint32_t Key_Set :1;//i键故障 uint32_t Key_Light :1;//灯键故障 uint32_t Key_Walk :1;//Walk键故障 uint32_t Key_Power :1;//电源键故障 uint32_t MCU_Fault :1;//MCU故障 66 uint32_t MOS_Fault :1;// 67 uint32_t Hardware_Fault :1;// 68 uint32_t Communication_HMI_Fault :1;// 69 uint32_t Communication_MC_Fault : 1;// 70 uint32_t RS4 :1; uint32_t RS5 :1; uint32_t RS6 :1; uint32_t RS7 :1; uint32_t RS8 :1; uint32_t RS9 :1; uint32_t RS10 :1; uint32_t RS11 :1; uint32_t RS12 :1; uint32_t RS13 :1; uint32_t RS14 :1; uint32_t RS15 :1; uint32_t RS16 :1; uint32_t RS17 :1; uint32_t RS18 :1; uint32_t RS19 :1; uint32_t RS20 :1; uint32_t RS21 :1; uint32_t RS22 :1; uint32_t RS23 :1; uint32_t RS24 :1; }ERROR_Bit; uint32_t Code; }PBU_ErrorCode_Struct_t; /******************************类型定义End***************************/ /******************************全局变量Begin*************************/ extern MC_RunInfo_Struct_t MC_RunInfo; //MC运行信息 extern MC_ErrorCode_Struct_t MC_ErrorCode,MC_ErrorCodeBackup; //MC故障码 extern ControlCode_Struct_t ControlCode; //控制MC指令 extern ControlCode_Struct_t ControlCode_MC_WalkSby; extern PBU_AssitMode_Status_Struct_t PBU_AssitMode_Status; //助力模式状态 extern BMS_RunInfo_Struct_t BMS_RunInfo; //BMS运行信息 extern BMS_ErrorCode_Struct_t BMS_ErrorCode; //BMS故障码 extern PBU_HMI_Menu_Process_Struct_t PBU_HMI_Menu_Process; //PBU进入HMI设置模式处理 extern PBU_TestMode_Process_Struct_t PBU_Test_Process; //PBU进入测试模式处理 extern PBU_ConfigParam_Struct_t PBU_ConfigParam; //PBU配置参数 extern PBU_RunLog_Struct_t PBU_RunLog; //PBU运行历史 extern PBU_MacInfo_Struct_t PBU_MacInfo; //PBU生产信息 extern PBU_VerInfo_Struct_t PBU_VerInfo; //PBU版本信息 extern PBU_CheckInfo_Struct_t PBU_CheckInfo; //PBU校验信息 extern PBU_RunMode_t PBU_RunMode; //PBU运行模式 extern PBU_PowerOff_Process_Struct_t PBU_PowerOff_Process;//PBU关机处理 extern PBU_PowerOn_Process_Struct_t PBU_PowerOn_Process;//PBU开机判断 extern PBU_MC_CfgProcess_Struct_t PBU_MC_Cfg; //PBU配置MC处理 extern uint32_t SysTime_5ms; extern char UserString1[16]; extern char UserString2[16]; extern char UserString3[16]; extern PBU_ErrorCode_Struct_t PBU_ErrorCode,PBU_ErrorCodeBackup; extern PBU_ErrorCode_Struct_t PBU_hardwareErrorCode; extern PBU_ErrorCode_Struct_t PBU_commErrorCode; extern PBU_ErrorCode_Struct_t PBU_TE_ErrorCode; extern _Bool BMS_Online_Flag; extern _Bool HMI_Online_Flag; extern _Bool MC_Online_Flag; extern _Bool TE_Online_Flag; extern uint32_t HMI_Online_TimeCnt; extern uint32_t MC_Online_TimeCnt; extern uint32_t BMS_Online_TimeCnt; extern uint32_t TE_Online_TimeCnt; extern TrueOrFalse_Flag_Struct_t PBU_ErrorFlag; extern TrueOrFalse_Flag_Struct_t BMS_ChargingFlag; extern TrueOrFalse_Flag_Struct_t PBU_TE_FaultDetectFlag; extern uint32_t Vin_test_TimeCnt; extern uint8_t Scan_Key_Start; extern uint8_t LED_Blink_Enable; extern uint32_t PBU_Error_senddata; extern uint32_t ErrorCodeFinal; /******************************全局变量End***************************/ /******************************全局函数Begin*************************/ extern void Var_Init(void); extern void Error_Init(void); /******************************全局函数End***************************/ #endif