var.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. #ifndef __VAR_H
  2. #define __VAR_H
  3. #include "stm32f1xx_hal.h"
  4. #include "key_drivers.h"
  5. #include "stdlib.h"
  6. #include "string.h"
  7. /******************************类型定义Begin*************************/
  8. typedef enum
  9. {
  10. TRUE = 0U,
  11. FALSE,
  12. }TrueOrFalse_Flag_Struct_t;
  13. //电机运行信息
  14. typedef struct
  15. {
  16. uint16_t BikeSpeed; //车速 0.1km/h,地址偏移0
  17. int16_t MotorSpeed; //输出转速 1rpm,地址偏移2
  18. uint16_t Power; //电功率 1W,地址偏移4
  19. uint16_t BusVoltage; //母线电压 1mV,地址偏移6
  20. uint16_t BusCurrent; //母线电流 1mA,地址偏移8
  21. uint8_t Cadence; //踏频 1rpm,地址偏移10
  22. uint8_t Torque; //踩踏力矩 1Nm,地址偏移11
  23. uint8_t CadenceDir; //踩踏方向 0-正,1-反,2-停止,地址偏移12
  24. uint8_t GearSt; //助力档位,地址偏移13
  25. uint8_t LightSwitch; //灯开关 0xF0-关,0xF1-开,地址偏移14
  26. uint8_t SOC; //剩余电量 1%,地址偏移15
  27. uint16_t RemainDistance; //续航里程 1km,地址偏移16
  28. uint16_t ODO_Km; //总里程 1km,地址偏移18
  29. uint8_t PowerPerKm; //平均功耗 0.01Ah/km ,地址偏移20
  30. uint8_t T_PCB; //PCB温度 +40℃,地址偏移21
  31. uint8_t T_Roil; //绕组温度 +40℃,地址偏移22
  32. uint8_t T_MCU; //MCU温度 +40℃,地址偏移23
  33. uint32_t ODO_Time; //骑行总时间 1s,地址偏移24
  34. uint8_t RS[4];
  35. }MC_RunInfo_Struct_t;
  36. //电机故障码
  37. typedef union MC_ERRORCODE
  38. {
  39. struct
  40. {
  41. uint32_t Protect_OverCurrent :1;//过流保护
  42. uint32_t Protect_UnderVoltage :1;//低压保护
  43. uint32_t Protect_OverVoltage :1;//过压保护
  44. uint32_t Protect_LockRotor :1;//堵转保护
  45. uint32_t Protect_OverTemp :1;//过热保护
  46. uint32_t Fault_SpeedSensor :1;//速度传感器故障
  47. uint32_t Fault_TorqueSensor :1;//力矩传感器故障
  48. uint32_t Fault_HallSensor :1;//霍尔传感器故障
  49. uint32_t Fault_PhaseLine :1;//相线故障
  50. uint32_t Fault_NtcSensor :1;//温度传感器故障
  51. uint32_t Fault_BMS_Check :1;//BMS校验失败
  52. uint32_t Fault_HMI_Check :1;//HMI校验失败
  53. uint32_t Fault_PBU_Check :1;//PBU校验失败
  54. uint32_t Fault_MCU :1;//MCU故障
  55. uint32_t Fault_CadenceSensor :1;//踏频传感器故障
  56. uint32_t Fault_GasSensor :1;//指拨故障
  57. uint32_t Fault_MOS :1;//MOS短路
  58. uint32_t Protect_VoltageChange :1;//电压波动异常
  59. uint32_t Fault_Circuit :1;//电路故障
  60. uint32_t Fault_TE_MCU :1;//TE MCU故障
  61. uint32_t Fault_TE_Circuit :1;//TE 电路故障
  62. uint32_t RS1 :1;
  63. uint32_t RS2 :1;
  64. uint32_t RS3 :1;
  65. uint32_t RS4 :1;
  66. uint32_t RS5 :1;
  67. uint32_t RS6 :1;
  68. uint32_t RS7 :1;
  69. uint32_t RS8 :1;
  70. uint32_t RS9 :1;
  71. uint32_t RS10 :1;
  72. uint32_t RS11 :1;
  73. }ERROR_Bit;
  74. uint32_t Code;
  75. }MC_ErrorCode_Struct_t;
  76. //控制电机指令
  77. typedef enum PBU_AssistMode_Flag
  78. {
  79. PBU_AssistMode_Flag_Gear = 0U, //档位调节模式
  80. PBU_AssistMode_Flag_Smart, //智能模式
  81. PBU_AssistMode_Flag_Walk, //推行模式
  82. PBU_AssistMode_Flag_WalkSby, //推行等待模式
  83. }PBU_AssistMode_Flag_Struct_t;
  84. typedef struct
  85. {
  86. uint32_t SendCodeTimeCnt_WalkSby; //发送预推行周期计时
  87. TrueOrFalse_Flag_Struct_t HMI_ACK_Flag; //HMI反馈标志
  88. uint32_t DelayTimeCnt; //超时计时
  89. }PBU_WalkSbyProcess_Struct_t;
  90. typedef struct
  91. {
  92. PBU_AssistMode_Flag_Struct_t PBU_AssistMode_Flag; //当前助力模式
  93. uint32_t SendCodeTimeCnt_Ctl; //发送指令周期计时
  94. uint32_t WalkDelayTimeCnt; //推行超时退出计时
  95. uint8_t GearStBak_Walk; //推行模式助力档位备份
  96. uint8_t GearStBak_Smart; //智能模式助力档位备份
  97. TrueOrFalse_Flag_Struct_t IsSmartEtrWalk_Flag; //进入Walk前是否Smart标志
  98. PBU_WalkSbyProcess_Struct_t PBU_WalkSbyProcess; //预推行模式处理
  99. }PBU_AssitMode_Status_Struct_t;
  100. typedef struct
  101. {
  102. uint8_t GearSt; //助力档位
  103. uint8_t LightSwitch; //灯开关 0xF0-关,0xF1-开
  104. }ControlCode_Struct_t;
  105. //电池运行状态
  106. typedef union BMS_STATUS
  107. {
  108. struct
  109. {
  110. uint8_t Charge :1;//充电
  111. uint8_t Discharge :1;//放电
  112. uint8_t RS1 :1;
  113. uint8_t RS2 :1;
  114. uint8_t RS3 :1;
  115. uint8_t RS4 :1;
  116. uint8_t RS5 :1;
  117. uint8_t RS6 :1;
  118. }Status_Bit;
  119. uint8_t Status;
  120. }BMS_STATUS_Struct_t;
  121. //电池运行信息
  122. typedef struct
  123. {
  124. uint16_t Voltage; //电压 1mV,地址偏移0
  125. uint16_t Current; //电流 1mA,地址偏移2
  126. uint16_t RC; //剩余容量 1mAh,地址偏移4
  127. uint16_t FCC; //满充容量 1mAh,地址偏移6
  128. uint8_t Cell_NTC; //电芯温度 +40℃,地址偏移8
  129. uint8_t SOC; //剩余电量 1%,地址偏移9
  130. BMS_STATUS_Struct_t Status; //运行状态,地址偏移10
  131. }BMS_RunInfo_Struct_t;
  132. //电池故障码
  133. typedef union BMS_ERRORCODE
  134. {
  135. struct
  136. {
  137. uint32_t DisOverCurrent2st :1;//二级放电过流保护过流
  138. uint32_t ChgOverCurrent :1;//充电过流保护
  139. uint32_t ShortCircut :1;//短路保护
  140. uint32_t UnderVoltage :1;//过放保护
  141. uint32_t OverVoltage :1;//过充保护
  142. uint32_t DisUnderTemp :1;//放电低温保护
  143. uint32_t DisOverTemp :1;//放电高温保护
  144. uint32_t ChgUnderTemp :1;//充电低温保护
  145. uint32_t ChgOverTemp :1;//充电高温保护
  146. uint32_t DisMOS :1;//放电MOS失效
  147. uint32_t ChgMOS :1;//充电MOS失效
  148. uint32_t NTC :1;//NTC失效
  149. uint32_t DisOverCurrentWarn1 :1;//一级放电过流警告
  150. uint32_t DisOverCurrent1st :1;//一级放电过流保护
  151. uint32_t AFE :1;//AFE失效
  152. uint32_t MCU :1;//MCU故障
  153. uint32_t ChgOverVoltageWarn :1;//充电过压警告
  154. uint32_t DisUnderVoltageWarn :1;//放电低压警告
  155. uint32_t ChgOverCurrentWarn :1;//充电过流警告
  156. uint32_t DisOverCurrentWarn :1;//放电过流警告
  157. uint32_t ChgOverTempWarn :1;//充电高温警告
  158. uint32_t ChgUnderTempWarn :1;//充电低温警告
  159. uint32_t DisOverTempWarn :1;//放电高温警告
  160. uint32_t DisUnderTempWarn :1;//放电低温警告
  161. uint32_t MOSOverTempWarn :1;//MOS高温警告
  162. uint32_t RS11 :1;
  163. uint32_t RS12 :1;
  164. uint32_t RS13 :1;
  165. uint32_t RS14 :1;
  166. uint32_t RS15 :1;
  167. uint32_t RS16 :1;
  168. uint32_t RS17 :1;
  169. }ERROR_Bit;
  170. uint32_t Code;
  171. }BMS_ErrorCode_Struct_t;
  172. //按键状态
  173. typedef struct
  174. {
  175. Key_Status_t Key_Add; //+键
  176. Key_Status_t Key_Dec; //-键
  177. Key_Status_t Key_Set; //i键
  178. Key_Status_t Key_Power; //电源键
  179. Key_Status_t Key_Light; //灯键
  180. Key_Status_t Key_Walk; //Walk键
  181. }PBU_HMI_KeyStatus_Struct_t;
  182. typedef struct
  183. {
  184. PBU_HMI_KeyStatus_Struct_t PBU_HMI_KeyStatus;
  185. uint8_t KeyTrig_Flag; //按键触发标志
  186. TrueOrFalse_Flag_Struct_t HMI_ACK_Flag; //HMI进入菜单模式反馈标志
  187. uint32_t SendCodeTimeCnt; //发送指令周期计时
  188. uint32_t DelayTimeCnt; //超时计时
  189. }PBU_HMI_Menu_Process_Struct_t;
  190. //按键测试
  191. typedef union KEY_STATUS
  192. {
  193. struct
  194. {
  195. uint8_t Add :1;//+
  196. uint8_t Dec :1;//-
  197. uint8_t Set :1;//Set
  198. uint8_t Light :1;//Light
  199. uint8_t Walk :1;//Walk
  200. uint8_t Power :1;//Power
  201. uint8_t RS1 :1;
  202. uint8_t RS2 :1;
  203. }Status_Bit;
  204. uint8_t Status;
  205. }KeyTest_Status_Struct_t;
  206. typedef struct
  207. {
  208. KeyTest_Status_Struct_t KeyTest_Status; //测试模式按键状态
  209. uint32_t SendCodeTimeCnt; //发送指令周期计时
  210. }PBU_TestMode_Process_Struct_t;
  211. //PBU出厂配置
  212. typedef struct
  213. {
  214. uint8_t RatedVoltage; //额定电压
  215. uint8_t GearsNum; //助力档位数量
  216. uint8_t NoHMI_Flag; //支持无HMI标识,0x55-不支持,0x-AA支持
  217. uint8_t Rs1;
  218. uint8_t Rs2;
  219. uint8_t Rs3;
  220. uint8_t Rs4;
  221. uint8_t Rs5;
  222. uint8_t Rs6;
  223. uint8_t Rs7;
  224. uint8_t Rs8;
  225. uint8_t Rs9;
  226. uint8_t Rs10;
  227. uint8_t Rs11;
  228. uint8_t Rs12;
  229. uint8_t Rs13;
  230. }PBU_ConfigParam_Struct_t;
  231. //PBU运行历史信息
  232. typedef struct
  233. {
  234. uint32_t RunTime; //运行总时间 1min
  235. uint32_t PowerOnCnt; //开机次数
  236. uint8_t Rs1;
  237. uint8_t Rs2;
  238. uint8_t Rs3;
  239. uint8_t Rs4;
  240. uint8_t Rs5;
  241. uint8_t Rs6;
  242. uint8_t Rs7;
  243. uint8_t Rs8;
  244. }PBU_RunLog_Struct_t;
  245. //PBU生产信息
  246. typedef struct
  247. {
  248. char Manufacturer[8]; //生产厂商 ASCII,0x2E结束,无效填充0x20
  249. char MacAddr[8]; //生产地 ASCII,0x2E结束,无效填充0x20
  250. char MacDate[8]; //生产日期 ASCII,0x2E结束,无效填充0x20
  251. char Rs[8];
  252. }PBU_MacInfo_Struct_t;
  253. //PBU版本信息
  254. typedef struct
  255. {
  256. char Mode[16]; //型号 ASCII,0x2E结束,无效填充0x20
  257. char SN_Num[16]; //序列号 ASCII,0x2E结束,无效填充0x20
  258. char HW_Version[16]; //硬件版本 ASCII,0x2E结束,无效填充0x20
  259. char FW_Version[16]; //软件版本 ASCII,0x2E结束,无效填充0x20
  260. }PBU_VerInfo_Struct_t;
  261. //PBU校验信息
  262. typedef struct
  263. {
  264. uint32_t MAC_ID[3]; //物理ID
  265. uint8_t CheckCode[12]; //校验码
  266. }PBU_CheckInfo_Struct_t;
  267. //PBU运行模式
  268. typedef enum
  269. {
  270. PBU_RunMode_MC_AssisitCtrl = 0U, //助力控制模式
  271. PBU_RunMode_HMI_Menu, //HMI设置模式
  272. PBU_RunMode_CDL_KeyTest, //按键测试
  273. PBU_RunMode_PowerOff, //关机处理模式
  274. PBU_RunMode_Updating //升级模式
  275. }PBU_RunMode_t;
  276. //PBU关机处理
  277. typedef union READY_STATUS
  278. {
  279. struct
  280. {
  281. uint8_t MC :1;//接收到MC关机就绪信号
  282. uint8_t BMS :1;//接收到BMS关机就绪信号
  283. uint8_t HMI :1;//接收到HMI关机就绪信号
  284. uint8_t RS1 :1;
  285. uint8_t RS2 :1;
  286. uint8_t RS3 :1;
  287. uint8_t RS4 :1;
  288. uint8_t RS5 :1;
  289. }Status_Bit;
  290. uint8_t Status;
  291. }Ready_Status_Struct_t;
  292. typedef struct
  293. {
  294. Ready_Status_Struct_t Ready_Status;
  295. uint32_t SendCodeTimeCnt;
  296. uint32_t DelayTimeCnt;
  297. }PBU_PowerOff_Process_Struct_t;
  298. //开机处理
  299. typedef struct
  300. {
  301. uint8_t PowerKeyStatus; //0-初始状态,1-按下中,2-弹起
  302. uint32_t PowerOnTimeCnt;
  303. uint8_t PowerOnOKCnt;
  304. }PBU_PowerOn_Process_Struct_t;
  305. //配置MC参数
  306. typedef struct
  307. {
  308. TrueOrFalse_Flag_Struct_t MC_ACK_Flag;
  309. uint32_t SendCodeTimeCnt;
  310. uint32_t DelayTimeCnt;
  311. }PBU_MC_CfgProcess_Struct_t;
  312. //PBU故障码
  313. typedef union PBU_ERRORCODE
  314. {
  315. struct
  316. {
  317. uint32_t Key_Add :1;//+键故障
  318. uint32_t Key_Dec :1;//-键故障
  319. uint32_t Key_Set :1;//i键故障
  320. uint32_t Key_Light :1;//灯键故障
  321. uint32_t Key_Walk :1;//Walk键故障
  322. uint32_t Key_Power :1;//电源键故障
  323. uint32_t MCU_Fault :1;//MCU故障 66
  324. uint32_t MOS_Fault :1;// 67
  325. uint32_t Hardware_Fault :1;// 68
  326. uint32_t Communication_HMI_Fault :1;// 69
  327. uint32_t Communication_MC_Fault : 1;// 70
  328. uint32_t RS4 :1;
  329. uint32_t RS5 :1;
  330. uint32_t RS6 :1;
  331. uint32_t RS7 :1;
  332. uint32_t RS8 :1;
  333. uint32_t RS9 :1;
  334. uint32_t RS10 :1;
  335. uint32_t RS11 :1;
  336. uint32_t RS12 :1;
  337. uint32_t RS13 :1;
  338. uint32_t RS14 :1;
  339. uint32_t RS15 :1;
  340. uint32_t RS16 :1;
  341. uint32_t RS17 :1;
  342. uint32_t RS18 :1;
  343. uint32_t RS19 :1;
  344. uint32_t RS20 :1;
  345. uint32_t RS21 :1;
  346. uint32_t RS22 :1;
  347. uint32_t RS23 :1;
  348. uint32_t RS24 :1;
  349. }ERROR_Bit;
  350. uint32_t Code;
  351. }PBU_ErrorCode_Struct_t;
  352. /******************************类型定义End***************************/
  353. /******************************全局变量Begin*************************/
  354. extern MC_RunInfo_Struct_t MC_RunInfo; //MC运行信息
  355. extern MC_ErrorCode_Struct_t MC_ErrorCode,MC_ErrorCodeBackup; //MC故障码
  356. extern ControlCode_Struct_t ControlCode; //控制MC指令
  357. extern ControlCode_Struct_t ControlCode_MC_WalkSby;
  358. extern PBU_AssitMode_Status_Struct_t PBU_AssitMode_Status; //助力模式状态
  359. extern BMS_RunInfo_Struct_t BMS_RunInfo; //BMS运行信息
  360. extern BMS_ErrorCode_Struct_t BMS_ErrorCode; //BMS故障码
  361. extern PBU_HMI_Menu_Process_Struct_t PBU_HMI_Menu_Process; //PBU进入HMI设置模式处理
  362. extern PBU_TestMode_Process_Struct_t PBU_Test_Process; //PBU进入测试模式处理
  363. extern PBU_ConfigParam_Struct_t PBU_ConfigParam; //PBU配置参数
  364. extern PBU_RunLog_Struct_t PBU_RunLog; //PBU运行历史
  365. extern PBU_MacInfo_Struct_t PBU_MacInfo; //PBU生产信息
  366. extern PBU_VerInfo_Struct_t PBU_VerInfo; //PBU版本信息
  367. extern PBU_CheckInfo_Struct_t PBU_CheckInfo; //PBU校验信息
  368. extern PBU_RunMode_t PBU_RunMode; //PBU运行模式
  369. extern PBU_PowerOff_Process_Struct_t PBU_PowerOff_Process;//PBU关机处理
  370. extern PBU_PowerOn_Process_Struct_t PBU_PowerOn_Process;//PBU开机判断
  371. extern PBU_MC_CfgProcess_Struct_t PBU_MC_Cfg; //PBU配置MC处理
  372. extern uint32_t SysTime_5ms;
  373. extern char UserString1[16];
  374. extern char UserString2[16];
  375. extern char UserString3[16];
  376. extern PBU_ErrorCode_Struct_t PBU_ErrorCode,PBU_ErrorCodeBackup;
  377. extern PBU_ErrorCode_Struct_t PBU_hardwareErrorCode;
  378. extern PBU_ErrorCode_Struct_t PBU_commErrorCode;
  379. extern PBU_ErrorCode_Struct_t PBU_TE_ErrorCode;
  380. extern _Bool BMS_Online_Flag;
  381. extern _Bool HMI_Online_Flag;
  382. extern _Bool MC_Online_Flag;
  383. extern _Bool TE_Online_Flag;
  384. extern uint32_t HMI_Online_TimeCnt;
  385. extern uint32_t MC_Online_TimeCnt;
  386. extern uint32_t BMS_Online_TimeCnt;
  387. extern uint32_t TE_Online_TimeCnt;
  388. extern TrueOrFalse_Flag_Struct_t PBU_ErrorFlag;
  389. extern TrueOrFalse_Flag_Struct_t BMS_ChargingFlag;
  390. extern TrueOrFalse_Flag_Struct_t PBU_TE_FaultDetectFlag;
  391. extern uint32_t Vin_test_TimeCnt;
  392. extern uint8_t Scan_Key_Start;
  393. extern uint8_t LED_Blink_Enable;
  394. extern uint32_t PBU_Error_senddata;
  395. extern uint32_t ErrorCodeFinal;
  396. /******************************全局变量End***************************/
  397. /******************************全局函数Begin*************************/
  398. extern void Var_Init(void);
  399. extern void Error_Init(void);
  400. /******************************全局函数End***************************/
  401. #endif