var.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697
  1. #ifndef __VAR_H
  2. #define __VAR_H
  3. #include "stm32f1xx_hal.h"
  4. #include "cadence_sensor.h"
  5. #include "stdlib.h"
  6. #include "string.h"
  7. #include "adc.h"
  8. /******************************类型定义Begin*************************/
  9. typedef enum
  10. {
  11. NoName = 0x00,
  12. STM32F103RBT6,
  13. APM32F103RBT6,
  14. HK32F103RBT6,
  15. GD32F103RBT6,
  16. APM32F103RCT7
  17. }MCU_Manufacturter_Struct_t;
  18. typedef enum
  19. {
  20. MC_LightSwitch_OFF = 0xF0,
  21. MC_LightSwitch_ON = 0xF1
  22. }MC_LightSwitch_Struct_t;
  23. //电机运行信息,占用空间32bytes
  24. typedef struct
  25. {
  26. uint16_t BikeSpeed; //车速 0.1km/h,地址偏移0
  27. int16_t MotorSpeed; //输出转速 1rpm,地址偏移2
  28. uint16_t Power; //电功率 1W,地址偏移4
  29. uint16_t BusVoltage; //母线电压 1mV,地址偏移6
  30. uint16_t BusCurrent; //母线电流 1mA,地址偏移8
  31. uint8_t Cadence; //踏频 1rpm,地址偏移10
  32. uint8_t Torque; //踩踏力矩 1Nm,地址偏移11
  33. MC_CadenceDir_Struct_t CadenceDir; //踩踏方向 0-正,1-反,2-停止,地址偏移12
  34. uint8_t GearSt; //助力档位,地址偏移13
  35. MC_LightSwitch_Struct_t LightSwitch; //灯开关 0xF0-关,0xF1-开,地址偏移14
  36. uint8_t SOC; //剩余电量 1%,地址偏移15
  37. uint16_t RemainDistance; //续航里程 1km,地址偏移16
  38. uint16_t ODO_Km; //总里程 1km,地址偏移18
  39. uint8_t PowerPerKm; //平均功耗 0.01Ah/km ,地址偏移20
  40. uint8_t T_PCB; //PCB温度 +40℃,地址偏移21
  41. uint8_t T_Coil; //绕组温度 +40℃,地址偏移22
  42. uint8_t T_MCU; //MCU温度 +40℃,地址偏移23
  43. uint16_t Ride_Km; //开机后骑行里程 0.1km, 地址偏移24
  44. uint16_t Ride_Time; //开机后骑行时间 1s,地址偏移26
  45. uint8_t TorqueSensorData1; //力矩传感器1原始值
  46. uint8_t TorqueSensorData2; //力矩传感器2原始值
  47. uint8_t TorqueSensorData3; //力矩传感器3原始值
  48. uint8_t GearBoxInfo; //自动变速器运行信息 1byte
  49. }MC_RunInfo_Struct_t;
  50. //电机调试信息,占用空间32bytes
  51. typedef struct
  52. {
  53. uint8_t SysFSM1; //系统功能状态机1,赋值助力模式
  54. uint8_t SysFSM2; //系统功能状态机2,赋值助力模式
  55. uint8_t SysFSM3; //系统功能状态机3,赋值助力模式
  56. uint8_t SysFSM4; //系统功能状态机4,赋值助力模式
  57. int16_t IdRef; //D轴参考电流
  58. int16_t IqRef; //Q轴参考电流
  59. int16_t UdRef; //D轴参考电压
  60. int16_t UqRef; //Q轴参考电压
  61. uint16_t PedalTorquePer; //踩踏瞬时力矩
  62. uint16_t PedalTorqueAvg; //踩踏时域滤波力矩
  63. uint16_t PedalTorqueByCad; //踩踏踏频滤波力矩
  64. int16_t IdFdb; //D轴反馈电流
  65. int16_t IqFdb; //Q轴反馈电流
  66. uint16_t AssistOut; //助力输出值
  67. uint8_t RS[8];
  68. }MC_DebugInfo_Struct_t;
  69. //电机故障码,占用空间4bytes
  70. typedef union
  71. {
  72. struct
  73. {
  74. uint32_t Protect_OverCurrent :1;//过流保护
  75. uint32_t Protect_UnderVoltage :1;//低压保护
  76. uint32_t Protect_OverVoltage :1;//过压保护
  77. uint32_t Protect_LockRotor :1;//堵转保护
  78. uint32_t Protect_OverTemp :1;//过热保护
  79. uint32_t Fault_SpeedSensor :1;//速度传感器故障
  80. uint32_t Fault_TorqueSensor :1;//力矩传感器故障
  81. uint32_t Fault_HallSensor :1;//霍尔传感器故障
  82. uint32_t Fault_PhaseLine :1;//相线故障
  83. uint32_t Fault_NtcSensor :1;//温度传感器故障
  84. uint32_t Fault_BMS_Check :1;//BMS校验失败
  85. uint32_t Fault_HMI_Check :1;//HMI校验失败
  86. uint32_t Fault_PBU_Check :1;//PBU校验失败
  87. uint32_t Fault_MCU :1;//MCU故障
  88. uint32_t Fault_CadenceSensor :1;//踏频传感器故障
  89. uint32_t Fault_GasSensor :1;//指拨故障
  90. uint32_t Fault_MOS :1;//MOS短路
  91. uint32_t Protect_VoltageChange :1;//电压波动异常
  92. uint32_t Fault_Circuit :1;//电路故障
  93. uint32_t Fault_TE_MCU :1;//TE MCU故障
  94. uint32_t Fault_TE_Circuit :1;//TE 电路故障
  95. uint32_t Fault_MC_Check :1;//MC校验失败
  96. uint32_t Fault_Machine :1;//机械故障
  97. uint32_t RS2 :1;
  98. uint32_t RS3 :1;
  99. uint32_t RS4 :1;
  100. uint32_t RS5 :1;
  101. uint32_t RS6 :1;
  102. uint32_t RS7 :1;
  103. uint32_t RS8 :1;
  104. uint32_t RS9 :1;
  105. uint32_t RS10 :1;
  106. }ERROR_Bit;
  107. uint32_t Code;
  108. }MC_ErrorCode_Struct_t;
  109. //在线检测结果,占用空间1byte
  110. typedef union ONLINE_STATUS
  111. {
  112. struct
  113. {
  114. uint8_t BMS_OffLine :1;//BMS离线
  115. uint8_t PBU_OffLine :1;//PBU离线
  116. uint8_t HMI_OffLine :1;//HMI离线
  117. uint8_t RS1 :1;
  118. uint8_t RS2 :1;
  119. uint8_t RS3 :1;
  120. uint8_t RS4 :1;
  121. uint8_t RS5 :1;
  122. }Status_Bit;
  123. uint8_t Status;
  124. }OnLine_Status_Struct_t;
  125. //授权校验,占用空间24bytes
  126. typedef struct
  127. {
  128. uint8_t MAC_ID[12]; //物理ID
  129. uint8_t CheckCode[12]; //校验码
  130. }Device_CheckInfo_Struct_t;
  131. typedef enum STARMODE
  132. {
  133. NC = 0U,
  134. MC_StarMode_SOFT, //1
  135. MC_StarMode_NORM, //2
  136. MC_StarMode_DYNAMIC, //3
  137. }MC_StarMode_Struct_t;
  138. typedef struct
  139. {
  140. uint8_t Assist_K_GAIN; //0.01 80-120
  141. uint8_t StarModel_GAIN; //0.01 80-120
  142. }UserAdjParam1_Struct_t;
  143. typedef struct
  144. {
  145. uint8_t MaxCurrent_K_GAIN; //0.01 80-120
  146. uint8_t MaxTorque_K_GAIN; //0.01 80-120
  147. }UserAdjParam2_Struct_t;
  148. typedef enum MC_SUPPORTFLAG
  149. {
  150. MC_SUPPORT_ENABLE = (uint8_t)0xAA, //支持
  151. MC_SUPPORT_DISABLE = (uint8_t)0x55 //不支持
  152. }MC_SupportFlag_Struct_t;
  153. typedef enum MC_SPEED_SIGNAL
  154. {
  155. MC_SPEED_CADENCE_CAL = (uint8_t)0xAA, //根据踏频估算
  156. MC_SPEED_WHEEL_TRIG = (uint8_t)0x55, //根据车轮信号触发
  157. MC_SPEED_COMMUNICATION = (uint8_t)0xEE //根据通信数据,车轮旋转1圈的时间
  158. }MC_SpeedSignal_Struct_t;
  159. typedef enum MC_FRONT_LIGHT_MODE
  160. {
  161. MC_FRONT_LIGHT_MODE1 = (uint8_t)0x10, //模式1,常亮
  162. MC_FRONT_LIGHT_MODE2 = (uint8_t)0x20, //模式2,仪表控制开关
  163. MC_FRONT_LIGHT_MODE3 = (uint8_t)0x30, //模式3,闪烁(功能预留)
  164. }MC_FrontLight_Mode_Struct_t;
  165. typedef enum MC_TAIL_LIGHT_MODE
  166. {
  167. MC_TAIL_LIGHT_MODE1 = (uint8_t)0x01, //模式1,连接尾灯,开灯时低亮,刹车时高亮
  168. MC_TAIL_LIGHT_MODE2 = (uint8_t)0x02, //模式2,连接尾灯,开灯时高亮,刹车时闪烁
  169. MC_TAIL_LIGHT_MODE3 = (uint8_t)0x03, //模式3,连接刹车灯,刹车时高亮
  170. MC_TAIL_LIGHT_MODE4 = (uint8_t)0x04, //模式4,连接刹车灯,刹车时闪烁
  171. MC_TAIL_LIGHT_MODE5 = (uint8_t)0x05, //模式5,常亮
  172. MC_TAIL_LIGHT_MODE6 = (uint8_t)0x06 //模式6,超速报警
  173. }MC_TailLight_Mode_Struct_t;
  174. typedef enum MC_LIGHT_VOLTAGE
  175. {
  176. MC_LIGHT_VOL_6V = (uint8_t)0x06, //灯电压6V
  177. MC_LIGHT_VOL_12V = (uint8_t)0x0C, //灯电压12V
  178. MC_LIGHT_VOL_BATTERY = (uint8_t)0xFF //灯电压随电池电压
  179. }MC_LightVoltage_Struct_t;
  180. typedef union GAS_MODE
  181. {
  182. struct
  183. {
  184. uint8_t CrontrolMode :1; //0-速度模式,1-力矩模式
  185. uint8_t PowerLimitFlag :1; //0-不根据挡位限制,1-根据挡位限制
  186. uint8_t StartMode :1; //0-零速启动,1-带速启动
  187. uint8_t SpeedLimit :5; //车速限制
  188. }Mode_bit;
  189. uint8_t Mode; //0x55-不支持转把模式
  190. }MC_GasMode_Struct_t;
  191. //用户配置参数1,占用空间32bytes
  192. typedef struct
  193. {
  194. uint8_t GasCtrlMode_Param; //指拨模式参数,地址偏移0
  195. MC_StarMode_Struct_t StarModel; //启动模式,地址偏移1
  196. uint16_t StopTime; //停机时间 ms,地址偏移2
  197. uint8_t SpeedLimit; //限速 km/h,地址偏移4
  198. uint8_t Deceleration; //下降速度,地址偏移5
  199. uint8_t TeethNum_F; //前齿数 T,地址偏移6
  200. uint8_t TeethNum_B; //后齿数 T,地址偏移7
  201. uint8_t CurrentLimit; //限流 A,地址偏移8
  202. uint8_t TempTH_Alarm; //高温预警值 +40℃,地址偏移9
  203. uint8_t TempTH_Protect; //高温保护值 +40℃,地址偏移10
  204. MC_SupportFlag_Struct_t NoPBU_Flag; //0x55-不支持,0x-AA支持,地址偏移11
  205. uint8_t WheelSize; //轮胎周长 cm,地址偏移12
  206. uint8_t SerialNum; //系列号,地址偏移13
  207. UserAdjParam1_Struct_t UserAdjParam1_ECO; //用户微调助力比增益和加速度增益,地址偏移14
  208. UserAdjParam1_Struct_t UserAdjParam1_NORM; //用户微调助力比增益和加速度增益,地址偏移16
  209. UserAdjParam1_Struct_t UserAdjParam1_SPORT; //用户微调助力比增益和加速度增益,地址偏移18
  210. UserAdjParam1_Struct_t UserAdjParam1_TURBO; //用户微调助力比增益和加速度增益,地址偏移20
  211. UserAdjParam1_Struct_t UserAdjParam1_SMART; //用户微调助力比增益和加速度增益,地址偏移22
  212. uint8_t SpeedSensorPoles; //速度传感器极数,地址偏移24
  213. uint8_t CadenceStarNum; //踏频启动信号个数,地址偏移25
  214. MC_SpeedSignal_Struct_t SpeedSignal; //0x55-车轮触发,0x-AA踏频计算,0xEE-通讯获取车轮旋转周期,地址偏移26
  215. int8_t WheelSizeAdj; //周长微调值,地址偏移27
  216. uint16_t UV_Protect_TH; //低压保护值,地址偏移28
  217. uint8_t WalkMode_SpeedLimit; //推行模式限速,地址偏移30
  218. uint8_t WalkMode_MotorSpeedSet; //推行模式电机转速设置,地址偏移31
  219. }MC_ConfigParam1_Struct_t;
  220. //用户配置参数2,占用空间32bytes
  221. typedef struct
  222. {
  223. int16_t ZeroAngle_Pitch; //俯仰角零度偏移,地址偏移0
  224. int16_t ZeroAngle_Roll; //横滚角零度偏移,地址偏移2
  225. MC_SupportFlag_Struct_t UseAttitudeAngle_Flag; //支持姿态角度传感器标志,地址偏移4
  226. uint8_t MC_Light_Mode; //前后灯功能,地址偏移5
  227. MC_LightVoltage_Struct_t HeadLightVol; //前灯电压,地址偏移6
  228. MC_LightVoltage_Struct_t TailLightVol; //后灯电压,地址偏移7
  229. uint16_t u16OverspeedWarnVal; //超速告警值,地址偏移8
  230. uint16_t u16EffectVal; //尾灯亮起有效值,地址偏移10
  231. uint16_t u16Prediv; //尾灯亮起时间的分频系数,地址偏移12
  232. int8_t SpeedLimitStartAdj; //起始限速微调,默认0,从限速值开始衰减,地址偏移13
  233. int8_t SpeedLimitEndAdj; //结束限速微调,默认0,从限速值+2.2km/h结束,地址偏移14
  234. int8_t SpeedLimitAdj; //限速微调,默认0,与限速值相同,地址偏移15
  235. uint8_t RS1; //预留,0x00,地址偏移16
  236. UserAdjParam2_Struct_t UserAdjParam2_ECO; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移18
  237. UserAdjParam2_Struct_t UserAdjParam2_NORM; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移20
  238. UserAdjParam2_Struct_t UserAdjParam2_SPORT; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移22
  239. UserAdjParam2_Struct_t UserAdjParam2_TURBO; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移24
  240. UserAdjParam2_Struct_t UserAdjParam2_SMART; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移26
  241. uint8_t RS2[4];
  242. }MC_ConfigParam2_Struct_t;
  243. //姿态传感器数值
  244. typedef struct
  245. {
  246. int16_t Angle_Pitch_Absolute; //俯仰角绝对角度
  247. int16_t Angle_Roll_Absolute; //横滚角绝对角度
  248. int16_t Angle_Pitch_Relative; //俯仰角相对角度
  249. int16_t Angle_Roll_Relative; //横滚角相对角度
  250. }MC_AttitudeAngle_Struct_t;
  251. //马达配置参数,占用空间16bytes
  252. typedef struct
  253. {
  254. uint16_t Rate_Power; //W,地址偏移0
  255. uint16_t Rate_Speed; //rpm,地址偏移2
  256. uint16_t Coil_R; //mOhm,地址偏移4
  257. uint16_t Coil_Lq; //mH,地址偏移6
  258. uint16_t Coil_Ld; //mH,地址偏移8
  259. uint16_t Back_EMF; //Peak Voltage, mV@1000rpm,地址偏移10
  260. uint8_t Rate_Voltage; //Rate Voltage, V,地址偏移12
  261. uint8_t Pole; //极对数
  262. uint8_t RS[2];
  263. }MC_MotorParam_Struct_t;
  264. //MC运行历史,占用空间48bytes
  265. typedef struct
  266. {
  267. uint32_t PowerOnCnt; //开机次数,地址偏移0
  268. uint32_t RunTime; //运行总时间 min,地址偏移4
  269. uint16_t OC_ProtectCnt; //过流保次数 ,地址偏移8
  270. uint16_t UV_ProtectCnt; //低压保护次数,地址偏移10
  271. uint16_t OV_ProtectCnt; //高压保护次数,地址偏移12
  272. uint16_t LockRotor_ProtectCnt; //堵转保护次数 ,地址偏移14
  273. uint16_t OT_ProtectCnt; //温度保护次数,地址偏移16
  274. uint16_t SPS_FaultCnt; //速度传感器错误次数,地址偏移18
  275. uint16_t TQS_FaultCnt; //力矩传感器错误次数 ,地址偏移20
  276. uint16_t Hall_FaultCnt; //霍尔传感器错误次数 ,地址偏移22
  277. uint16_t PhaseLine_FaultCnt; //马达相线错误次数,地址偏移24
  278. uint16_t NTC_FaultCnt; //NTC错误次数,地址偏移26
  279. uint16_t BMS_Check_FaultCnt; //BMS校验错误次数,地址偏移28
  280. uint16_t HMI_Check_FaultCnt; //HMI校验错误次数,地址偏移30
  281. uint16_t PBU_Check_FaultCnt; //PBU校验错误次数 ,地址偏移32
  282. uint8_t T_PCB_Max; //PCB历史最高温,地址偏移34
  283. uint8_t T_PCB_Min; //PCB历史最低温,地址偏移35
  284. uint32_t ODO_Km; //出厂后ODO里程,地址偏移36
  285. uint8_t T_Coil_Max; //绕组历史最高温,地址偏移40
  286. uint8_t T_Coil_Min; //绕组历史最低温,地址偏移41
  287. uint8_t T_MCU_Max; //MCU历史最高温,地址偏移42
  288. uint8_t T_MCU_Min; //MCU历史最低温,地址偏移43
  289. uint32_t ODO_Time; //出厂后ODO时间,地址偏移44
  290. }MC_RunLog1_Struct_t;
  291. //MC运行历史,占用空间24bytes
  292. typedef struct
  293. {
  294. uint16_t MCU_FaultCnt;
  295. uint16_t CadenceSensor_FaultCnt;
  296. uint16_t GasSensor_FaultCnt;
  297. uint16_t MOS_ShortCircuit_FaultCnt;
  298. uint16_t VoltageChangeOrOverSpeed_FaultCnt;
  299. uint16_t Circuit_FaultCnt;
  300. uint16_t TE_MCU_FaultCnt;
  301. uint16_t TE_Circuit_FaultCnt;
  302. }MC_RunLog2_Struct_t;
  303. //MC骑行历史信息,占用空间16bytes
  304. typedef struct
  305. {
  306. uint32_t ODO_Km; //ODO里程,地址偏移0
  307. uint32_t ODO_Time; //ODO时间,地址偏移4
  308. uint32_t TRIP_Km; //TRIP里程,地址偏移8
  309. uint32_t TRIP_Time; //TRIP时间,地址偏移12
  310. }MC_RideLog_Struct_t;
  311. //MC版本信息,占用空间64bytes
  312. typedef struct
  313. {
  314. char Mode[16]; //型号 ASCII,0x2E结束,无效填充0x20
  315. char SN_Num[16]; //序列号 ASCII,0x2E结束,无效填充0x20
  316. char HW_Version[16]; //硬件版本 ASCII,0x2E结束,无效填充0x20
  317. char FW_Version[16]; //软件版本 ASCII,0x2E结束,无效填充0x20
  318. }MC_VerInfo_Struct_t;
  319. //MC生产信息,占用空间32bytes
  320. typedef struct
  321. {
  322. char Manufacturer[8]; //生产厂商 ASCII,0x2E结束,无效填充0x20
  323. char MacAddr[8]; //生产地 ASCII,0x2E结束,无效填充0x20
  324. char MacDate[8]; //生产日期 ASCII,0x2E结束,无效填充0x20
  325. char ProductTag[8]; //产品标识
  326. }MC_MacInfo_Struct_t;
  327. //MC掉电临时保存数据,占用40bytes
  328. typedef struct
  329. {
  330. uint32_t ODO_Km;
  331. uint32_t ODO_Time;
  332. uint32_t Trip_Km;
  333. uint32_t Trip_Time;
  334. uint32_t Run_Time;
  335. uint32_t Log_ODO_Km;
  336. uint32_t Log_ODO_Time;
  337. uint32_t RS[3];
  338. }MC_PowerOffBkp_Struct_t;
  339. //电池运行状态,占用空间1bytes
  340. typedef union
  341. {
  342. struct
  343. {
  344. uint8_t Charge :1;//充电
  345. uint8_t RS1 :1;
  346. uint8_t RS2 :1;
  347. uint8_t RS3 :1;
  348. uint8_t RS4 :1;
  349. uint8_t RS5 :1;
  350. uint8_t RS6 :1;
  351. uint8_t RS7 :1;
  352. }Status_Bit;
  353. uint8_t Status;
  354. }BMS_STATUS_Struct_t;
  355. //电池运行信息,占用空间16bytes
  356. typedef struct
  357. {
  358. uint16_t Voltage; //电压 1mV,地址偏移0
  359. uint16_t Current; //电流 1mA,地址偏移2
  360. uint16_t RC; //剩余容量 1mAh,地址偏移4
  361. uint16_t FCC; //满充容量 1mAh,地址偏移6
  362. uint8_t Cell_NTC; //电芯温度 +40℃,地址偏移8
  363. uint8_t SOC; //剩余电量 1%,地址偏移9
  364. BMS_STATUS_Struct_t Status; //运行状态,地址偏移10
  365. uint8_t SOH; //寿命状态
  366. uint8_t CycleCount; //循环次数
  367. uint16_t RemainChgTime; //剩余充电时间
  368. }BMS_RunInfo_Struct_t;
  369. //电池电芯电压
  370. typedef struct
  371. {
  372. uint16_t Cell1;
  373. uint16_t Cell2;
  374. uint16_t Cell3;
  375. uint16_t Cell4;
  376. uint16_t Cell5;
  377. uint16_t Cell6;
  378. uint16_t Cell7;
  379. uint16_t Cell8;
  380. uint16_t Cell9;
  381. uint16_t Cell10;
  382. uint16_t Cell11;
  383. uint16_t Cell12;
  384. uint16_t Cell13;
  385. uint16_t Cell14;
  386. uint16_t Cell15;
  387. uint16_t Cell16;
  388. }BMS_CellVol_Struct_t;
  389. //电池故障码
  390. typedef union
  391. {
  392. struct
  393. {
  394. uint32_t DOC_Protect2 :1;//二级过流保护
  395. uint32_t COC_Protect :1;//充电过流保护
  396. uint32_t SC_Protect :1;//短路保护
  397. uint32_t UV_Protect :1;//过放保护
  398. uint32_t OV_Protect :1; //过充保护
  399. uint32_t DUT_Protect :1;//放电低温保护
  400. uint32_t DOT_Protect :1;//放电过热保护
  401. uint32_t CUT_Protect :1;//充电低温保护
  402. uint32_t COT_Protect :1;//充电过热保护
  403. uint32_t DMOS_Fault :1;//放电MOS故障
  404. uint32_t CMOS_Fault :1;//充电MOS故障
  405. uint32_t NTC_Fault :1;//温度传感器故障
  406. uint32_t RS1 :1;//预留
  407. uint32_t DOC_Protect1 :1;//一级过流保护
  408. uint32_t AFE_Fault :1;//AFE故障
  409. uint32_t MCU_Fault :1;//MCU故障
  410. uint32_t OV_Alarm :1;//充电过压警告
  411. uint32_t UV_Alarm :1;//放电低压警告
  412. uint32_t COC_Alarm :1;//充电过流警告
  413. uint32_t DOC_Alarm :1;//放电过流警告
  414. uint32_t COT_Alarm :1;//充电过热警告
  415. uint32_t CUT_Alarm :1;//充电低温警告
  416. uint32_t DOT_Alarm :1;//放电过热警告
  417. uint32_t DUT_Alarm :1;//放电低温警告
  418. uint32_t MOS_OT_Alarm :1;//MOS过热警告
  419. uint32_t RS2 :1;
  420. uint32_t RS3 :1;
  421. uint32_t RS4 :1;
  422. uint32_t RS5 :1;
  423. uint32_t RS6 :1;
  424. uint32_t RS7 :1;
  425. uint32_t RS8 :1;
  426. }Error_Bit;
  427. uint32_t Code;
  428. }BMS_ErrorCode_Struct_t;
  429. //BMS设计信息,占用空间16bytes
  430. typedef struct
  431. {
  432. uint16_t Capacity; //电池设计容量,地址偏移0
  433. uint8_t Voltage; //电池设计电压,地址偏移2
  434. char CellMode[8]; //电芯型号,地址偏移3
  435. uint8_t CellNum; //电芯数量
  436. uint8_t RS[4];
  437. }BMS_DesignInfo_Struct_t;
  438. //BMS版本信息,占用空间64bytes
  439. typedef struct
  440. {
  441. char Mode[16]; //型号 ASCII,0x2E结束,无效填充0x20
  442. char SN_Num[16]; //序列号 ASCII,0x2E结束,无效填充0x20
  443. char HW_Version[16]; //硬件版本 ASCII,0x2E结束,无效填充0x20
  444. char FW_Version[16]; //软件版本 ASCII,0x2E结束,无效填充0x20
  445. }BMS_VerInfo_Struct_t;
  446. //BMS生产信息
  447. typedef struct
  448. {
  449. char Manufacturer[8]; //生产厂商 ASCII,0x2E结束,无效填充0x20
  450. char MacAddr[8]; //生产地 ASCII,0x2E结束,无效填充0x20
  451. char MacDate[8]; //生产日期 ASCII,0x2E结束,无效填充0x20
  452. char ProductTag[8]; //产品标识
  453. }BMS_MacInfo_Struct_t;
  454. //BMS使用记录
  455. typedef struct
  456. {
  457. uint8_t Max_Tmp;
  458. uint8_t Min_Tmp;
  459. uint16_t LastChgTime;
  460. uint16_t MaxChgTime;
  461. uint8_t Rsv[10];
  462. }BMS_UsrLog_Struct_t;
  463. //电池电芯放电信息,占用空间204bytes
  464. typedef struct BATTERY
  465. {
  466. uint16_t DesignCap; //设计容量
  467. uint16_t CellParam[101]; //电压-SOC曲线
  468. }BatterCellInfo_Struct_t;
  469. //PBU配置的参数,占用空间8bytes
  470. typedef struct
  471. {
  472. uint8_t GearsNum; //助力档位数量
  473. MC_SupportFlag_Struct_t NoHMI_Flag; //支持无HMI标识,0x55-不支持,0x-AA支持
  474. uint8_t RS[6];
  475. }PBU_ConfigParam_Struct_t;
  476. typedef union TE_ERROR_CODE
  477. {
  478. struct
  479. {
  480. uint16_t BikeSpeed :1;//速度传感器, 电路故障
  481. uint16_t TorqueSensor :1;//力矩传感器, 电路故障
  482. uint16_t Current :1;//母线电流, 电路故障
  483. uint16_t T_Coil :1;//绕组温度, 电路故障
  484. uint16_t HallSensor_A :1;//霍尔传感器A, 电路故障
  485. uint16_t HallSensor_B :1;//霍尔传感器A, 电路故障
  486. uint16_t CadenseSensor_1 :1;//踏频传感器1, 电路故障
  487. uint16_t CadenseSensor_2 :1;//踏频传感器2, 电路故障
  488. uint16_t StopBreak :1;//刹车信号, 电路故障
  489. uint16_t VCC :1;//3.3V异常, 电路故障
  490. uint16_t ClockFreq :1;//系统时钟异常, 主控MCU故障
  491. uint16_t ComFault :1;//串口通讯RX故障,主控MCU故障
  492. uint16_t MCUFault :1;//MCU异常, TE MCU故障
  493. uint16_t RS1 :1;
  494. uint16_t RS2 :1;
  495. uint16_t RS3 :1;
  496. }Status_Bit;
  497. uint16_t Code;
  498. }TE_ErrorCode_Struct_t;
  499. //TE传回传感器状态
  500. typedef struct
  501. {
  502. TE_ErrorCode_Struct_t TE_ErrorCode;
  503. uint16_t MCU_Voltage;
  504. uint16_t SyncClockFreq;
  505. uint16_t RS;
  506. }MC_TE_SensorStatus_Struct_t;
  507. //发给TE传感器结果
  508. typedef struct
  509. {
  510. uint16_t AD_Torque; //力矩传感器AD值,地址偏移0
  511. uint16_t AD_BusCurrent; //母线电流AD值,地址偏移2
  512. uint16_t AD_CoilTemp; //绕组温度AD值,地址偏移4
  513. uint16_t AD_TE_Voltage; //TE电压AD值,地址偏移6
  514. uint16_t CadenceHall_1_Cnt; //踏频霍尔1计数,地址偏移8
  515. uint16_t CadenceHall_2_Cnt; //踏频霍尔2计数,地址偏移10
  516. uint16_t MotorHall_A_Cnt; //马达霍尔1计数,地址偏移12
  517. uint16_t MotorHall_B_Cnt; //马达霍尔2计数,地址偏移14
  518. uint8_t BreakTrgiCnt; //刹车计数,地址偏移16
  519. uint8_t SpeedSensorTrigCnt; //速度传感器计数,地址偏移17
  520. uint16_t SynC_Clock_Freq; //地址偏移18
  521. }MC_TE_SensorData_Struct_t;
  522. typedef enum _TO_TE_SENDSTEP
  523. {
  524. HANDSHAKE = 0U,
  525. SENDSENSOR,
  526. SENDUPDATA,
  527. }To_Te_SendStep;
  528. //助力计算参数
  529. typedef struct
  530. {
  531. uint16_t Gain_K; //助力比系数,放大100倍,偏移地址 0
  532. uint16_t TorqueApp_TH; //i-Sport档位力矩阈值,偏移地址 2
  533. uint16_t Lower_Iq; //助力输出下限值,偏移地址 4
  534. uint16_t Upper_Iq; //助力输出上限值,偏移地址 6
  535. uint8_t AccCnt; //力矩控制ref加速斜率, 偏移地址 8
  536. uint8_t DecCnt; //力矩控制ref减速斜率, 偏移地址 9
  537. uint16_t CurrentMax_K; //最大电流 / 限流值百分比, 偏移地址 10
  538. }nGearParam_Struct_t; //n档位控制参数结构体定义
  539. typedef struct
  540. {
  541. nGearParam_Struct_t Gear_ECO; //ECO档控制参数,偏移地址 0
  542. nGearParam_Struct_t Gear_NORM; //NORM档控制参数,偏移地址 12
  543. nGearParam_Struct_t Gear_SPORT; //SPORT档控制参数,偏移地址 24
  544. nGearParam_Struct_t Gear_TURBO; //TURBO档控制参数,偏移地址 36
  545. nGearParam_Struct_t Gear_SMART; //SMART档控制参数,偏移地址 48
  546. }MC_AssistParam_Struct_t;
  547. typedef struct
  548. {
  549. TrueOrFalse_Flag_Struct_t IsOK_Flag;
  550. uint32_t OK_TrigTime;
  551. }ComOK_Check_Struct_t;
  552. //各个助力档位平均功耗
  553. typedef struct
  554. {
  555. uint16_t GearSt_ECO; //ECO平均功耗,单位mAh/km
  556. uint16_t GearSt_NORM; //NORM平均功耗,单位mAh/km
  557. uint16_t GearSt_SPORT; //SPORT平均功耗,单位mAh/km
  558. uint16_t GearSt_TURBO; //TURBO平均功耗,单位mAh/km
  559. uint16_t GearSt_SMART; //SMART平均功耗,单位mAh/km
  560. uint16_t Rs[3];
  561. }MC_AvgPower_Struct_t;
  562. //传动比计算参数
  563. typedef struct
  564. {
  565. uint16_t RatioPer; //实时传动比,车速(km/h) / 电机转速(rpm)* 102400,车速 = 电机转速 / 4.55 * 前牙盘 / 后牙盘 * 轮胎周长 * 60 / 1000
  566. uint16_t RatioFlt; //传动比滤波值
  567. int32_t RatioFltSum;
  568. uint16_t TargetAcc; //目标值递增阶梯
  569. uint16_t TargetDec; //目标值递减阶梯
  570. uint16_t RatioDefault; //传动比默認值
  571. uint16_t RatioResult; //传动比输出
  572. }Bike_RatioCal_Struct_t;
  573. //硬件版本定义表
  574. extern const uint16_t Ver_Table[11];
  575. /******************************类型定义End***************************/
  576. /**************************全局变量声明Begin*************************/
  577. extern MC_RunInfo_Struct_t MC_RunInfo;
  578. extern MC_DebugInfo_Struct_t MC_DebugInfo;
  579. extern MC_ErrorCode_Struct_t MC_ErrorCode;
  580. extern MC_VerInfo_Struct_t MC_VerInfo;
  581. extern char Firmware_Special[32];
  582. extern uint8_t MC_TagInfo[32];
  583. extern OnLine_Status_Struct_t DeviceOnLine_Status;
  584. extern BMS_RunInfo_Struct_t BMS_RunInfo;
  585. extern BMS_CellVol_Struct_t BMS_CellVol;
  586. extern BMS_ErrorCode_Struct_t BMS_ErrorCode;
  587. extern BMS_DesignInfo_Struct_t BMS_DesignInfo;
  588. extern BMS_VerInfo_Struct_t BMS_VerInfo;
  589. extern BMS_MacInfo_Struct_t BMS_MacInfo;
  590. extern BMS_UsrLog_Struct_t BMS_UsrLog;
  591. extern Device_CheckInfo_Struct_t BMS_CheckInfo;
  592. extern BatterCellInfo_Struct_t BatteryCellInfo;
  593. extern Device_CheckInfo_Struct_t PBU_CheckInfo;
  594. extern PBU_ConfigParam_Struct_t PBU_ConfigParam;
  595. extern Device_CheckInfo_Struct_t HMI_CheckInfo;
  596. extern MC_GasMode_Struct_t MC_GasMode_Param;
  597. extern MC_ConfigParam1_Struct_t MC_ConfigParam1;
  598. extern MC_ConfigParam2_Struct_t MC_ConfigParam2;
  599. extern MC_MotorParam_Struct_t MC_MotorParam;
  600. extern MC_RunLog1_Struct_t MC_RunLog1;
  601. extern MC_RunLog2_Struct_t MC_RunLog2;
  602. extern uint8_t RunLogSaveIndex;
  603. extern uint8_t Secret_Key[8];
  604. extern MC_MacInfo_Struct_t MC_MacInfo;
  605. extern uint8_t UserString1[16];
  606. extern uint8_t UserString2[16];
  607. extern uint8_t UserString3[16];
  608. extern MC_PowerOffBkp_Struct_t MC_PowerOffBkp;
  609. extern Device_CheckInfo_Struct_t MC_CheckInfo;
  610. extern MC_TE_SensorStatus_Struct_t MC_TE_SensorStatus;
  611. extern MC_TE_SensorData_Struct_t MC_TE_SensorData;
  612. extern uint16_t MC_TE_SyncClockFreqScan;
  613. extern TrueOrFalse_Flag_Struct_t TE_MCU_DataRefreshFlag;
  614. extern MC_AssistParam_Struct_t MC_AssisParam;
  615. extern uint8_t MC_WalkMode_Persent;
  616. extern ComOK_Check_Struct_t IsComOK_TE;
  617. extern ComOK_Check_Struct_t IsComOK_PBU;
  618. extern ComOK_Check_Struct_t IsComOK_HMI;
  619. extern ComOK_Check_Struct_t IsComOK_BMS;
  620. extern MC_AttitudeAngle_Struct_t MC_AttitudeAngle;
  621. extern MC_RideLog_Struct_t MC_RideLog;
  622. extern MC_AvgPower_Struct_t MC_AvgPower;
  623. extern MCU_Manufacturter_Struct_t MCUManufacturer;
  624. extern uint16_t SpeedRatio;
  625. extern uint16_t HardwareVersion_AD;
  626. extern TrueOrFalse_Flag_Struct_t VersionIdentifyFinishedFlag;
  627. extern TrueOrFalse_Flag_Struct_t PowerDown_SaveFlag;
  628. extern Bike_RatioCal_Struct_t Bike_RatioCalParam;
  629. /**************************全局变量声明End***************************/
  630. /**************************全局函数声明Begin*************************/
  631. extern void Var_Init(void);
  632. extern void UpdateGearParam(uint8_t SerialNum);
  633. extern void Var_SetToDefaultParam(void);
  634. extern void Var_SetToDefaultLog(void);
  635. /**************************全局函数声明End***************************/
  636. #endif