var.c 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  1. #include "var.h"
  2. #include "adc.h"
  3. #include "hardware_check.h"
  4. MC_RunInfo_Struct_t MC_RunInfo; //MC运行信息
  5. MC_ErrorCode_Struct_t MC_ErrorCode; //MC故障代码
  6. MC_VerInfo_Struct_t MC_VerInfo; //MC版本信息
  7. char Firmware_Special[32]; //MC软件版本特性说明
  8. OnLine_Status_Struct_t DeviceOnLine_Status; //设备在线检测结果
  9. BMS_RunInfo_Struct_t BMS_RunInfo; //BMS运行信息
  10. Device_CheckInfo_Struct_t BMS_CheckInfo; //BMS授权校验
  11. BMS_DesignInfo_Struct_t BMS_DesignInfo; //BMS设计信息
  12. Device_CheckInfo_Struct_t PBU_CheckInfo; //PBU授权校验
  13. PBU_ConfigParam_Struct_t PBU_ConfigParam; //PBU配置参数
  14. Device_CheckInfo_Struct_t HMI_CheckInfo; //HMI授权校验
  15. MC_ConfigParam1_Struct_t MC_ConfigParam1; //MC配置参数1
  16. MC_ConfigParam2_Struct_t MC_ConfigParam2; //MC配置参数1
  17. MC_TorqueCorrectParam_Struct_t MC_TorqueCorrectParam; //力矩传感器校正信息
  18. MC_MotorParam_Struct_t MC_MotorParam; //马达参数
  19. MC_RunLog1_Struct_t MC_RunLog1; //MC历史信息1
  20. MC_RunLog2_Struct_t MC_RunLog2; //MC历史信息2
  21. uint8_t RunLogSaveIndex = 0; //MC历史信息存储序号,0:不存储,1:存储MC_RunLog1,2:存储MC_RunLog2
  22. uint8_t Secret_Key[8]; //授权验证密钥
  23. MC_MacInfo_Struct_t MC_MacInfo; //MC生产信息
  24. uint8_t UserString1[16]; //MC自定义字符串1
  25. uint8_t UserString2[16]; //MC自定义字符串2
  26. uint8_t UserString3[16]; //MC自定义字符串3
  27. MC_PowerOffBkp_Struct_t MC_PowerOffBkp; //MC关机时刻临时存储的数据
  28. Device_CheckInfo_Struct_t MC_CheckInfo; //MC授权信息
  29. MC_TE_SensorStatus_Struct_t MC_TE_SensorStatus; //TE传回传感器状态
  30. MC_TE_SensorData_Struct_t MC_TE_SensorData; //发给TE传感器结果
  31. uint16_t MC_TE_SyncClockFreqScan; //TE同步时钟频率
  32. TrueOrFalse_Flag_Struct_t TE_MCU_DataRefreshFlag = FALSE; //TE MCU数据更新标志
  33. MC_AssistParam_Struct_t MC_AssisParam; //助力输出计算参数
  34. uint8_t MC_WalkMode_Persent = 100; //推行模式最高转速百分比设置
  35. ComOK_Check_Struct_t IsComOK_TE = {FALSE, 0}; //TE通信状态标志
  36. ComOK_Check_Struct_t IsComOK_PBU = {FALSE, 0}; //PBU通信状态标志
  37. ComOK_Check_Struct_t IsComOK_HMI = {FALSE, 0}; //HMI通信状态标志
  38. ComOK_Check_Struct_t IsComOK_BMS = {FALSE, 0}; //BMS通信状态标志
  39. MC_AttitudeAngle_Struct_t MC_AttitudeAngle; //姿态传感器数值
  40. MC_RideLog_Struct_t MC_RideLog; //骑行历史
  41. MC_AvgPower_Struct_t MC_AvgPower; //助力平均功耗
  42. MCU_Manufacturter_Struct_t MCUManufacturer; //MCU生厂商
  43. uint16_t SpeedRatio;
  44. uint16_t HardwareVersion_AD=0;
  45. TrueOrFalse_Flag_Struct_t VersionIdentifyFinishedFlag = FALSE;
  46. TrueOrFalse_Flag_Struct_t PowerDown_SaveFlag = FALSE;
  47. //BMS默认设计信息
  48. const BMS_DesignInfo_Struct_t BMS_DesignInfo_Default =
  49. {
  50. (uint16_t)10400, //设计容量
  51. (uint8_t)36, //设计电压
  52. {0,0,0,0,0,0,0,0} //电芯型号
  53. };
  54. //PBU默认配置
  55. const PBU_ConfigParam_Struct_t PBU_ConfigParam_Default =
  56. {
  57. 4, //档位数量
  58. MC_SUPPORT_DISABLE, //是否支持无PBU操作
  59. };
  60. //MC默认配置参数1,占用32bytes
  61. const MC_ConfigParam1_Struct_t MC_ConfigParam1_Default =
  62. {
  63. (MC_SupportFlag_Struct_t)MC_SUPPORT_ENABLE, //支持指拨模式,0x55-不支持,0x-AA支持
  64. (MC_StarMode_Struct_t)MC_StarMode_NORM, //启动模式
  65. (uint16_t)100, //停机时间 ms
  66. (uint8_t)25, //限速 km/h
  67. (uint8_t)3, //下降速度
  68. (uint8_t)14, //前齿数 T
  69. (uint8_t)9, //后齿数 T
  70. (uint8_t)15, //限流 A
  71. (uint8_t)135, //高温预警值 +40℃
  72. (uint8_t)165, //高温保护值 +40℃
  73. (MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE, //无码表支持,0x55-不支持,0x-AA支持
  74. (uint8_t)219, //轮胎周长 cm
  75. (uint8_t)0, //系列号,
  76. {100,100}, //ECO
  77. {100,100}, //NORM
  78. {100,100}, //SPORT
  79. {100,100}, //TURBO
  80. {100,100}, //SMART
  81. (uint8_t)1, //速度传感器极数
  82. (uint8_t)2, //踏频启动信号个数
  83. (MC_SpeedSignal_Struct_t)MC_SPEED_WHEEL_TRIG, //速度信号来源,0x55-车轮触发,0x-AA踏频估算,0x-EE通信获取车轮旋转周期
  84. (int8_t)0, //轮胎周长微调值
  85. (uint16_t)3000, //低压保护阈值,单位mV,针对单节电芯的设置值
  86. (uint8_t)60, //推行限速值,单位0.1km/h
  87. (uint8_t)135 //推行模式电机转速设置值
  88. };
  89. //MC配置参数2,占用32bytes
  90. const MC_ConfigParam2_Struct_t MC_ConfigParam2_Default =
  91. {
  92. (int16_t)0,
  93. (int16_t)0,
  94. (MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE, //0x55-不支持,0x-AA支持
  95. (MC_TailLight_Mode_Struct_t)MC_TAIL_LIGHT_MODE2,
  96. (MC_LightVoltage_Struct_t)MC_LIGHT_VOL_12V,
  97. (MC_LightVoltage_Struct_t)MC_LIGHT_VOL_12V,
  98. };
  99. const MC_TorqueCorrectParam_Struct_t MC_TorqueCorrectParam_Default =
  100. {
  101. (uint16_t)400,
  102. (uint8_t)100
  103. };
  104. //MC默认马达参数,占用16bytes
  105. const MC_MotorParam_Struct_t MC_MotorParam_Default =
  106. {
  107. (uint16_t)250, //W
  108. (uint16_t)1200, //rpm
  109. (uint16_t)200, //mohm
  110. (uint16_t)10, //mH
  111. (uint16_t)10, //mH
  112. (uint16_t)36000, //mV
  113. (uint8_t)36 //V
  114. };
  115. //MC默认历史信息,占用48bytes
  116. const MC_RunLog1_Struct_t MC_RunLog1_Default =
  117. {
  118. (uint32_t)1, //开机次数
  119. (uint32_t)0, //运行总时间 min
  120. (uint16_t)0, //过流保次数
  121. (uint16_t)0, //低压保护次数
  122. (uint16_t)0, //高压保护次数
  123. (uint16_t)0, //堵转保护次数
  124. (uint16_t)0, //温度保护次数
  125. (uint16_t)0, //速度传感器错误次数
  126. (uint16_t)0, //力矩传感器错误次数
  127. (uint16_t)0, //霍尔传感器错误次数
  128. (uint16_t)0, //马达相线错误次数
  129. (uint16_t)0, //NTC错误次数
  130. (uint16_t)0, //BMS校验错误次数
  131. (uint16_t)0, //HMI校验错误次数
  132. (uint16_t)0, //PBU校验错误次数
  133. (uint8_t)65, //PCB历史最高温
  134. (uint8_t)65, //PCB历史最低温
  135. (uint8_t)0, //空出预留
  136. (uint8_t)0, //空出预留
  137. (uint8_t)0, //空出预留
  138. (uint8_t)0, //空出预留
  139. (uint8_t)65, //绕组历史最高温
  140. (uint8_t)65, //绕组历史最低温
  141. (uint8_t)65, //MCU历史最高温
  142. (uint8_t)65 //MCU历史最低温
  143. };
  144. //MC默认历史信息,占用24bytes
  145. const MC_RunLog2_Struct_t MC_RunLog2_Default =
  146. {
  147. (uint16_t)0, //MCU故障次数
  148. (uint16_t)0, //踏频传感器故障次数
  149. (uint16_t)0, //指拨传感器故障次数
  150. (uint16_t)0, //MOS短路次数
  151. (uint16_t)0, //电压异常次数
  152. (uint16_t)0, //电路故障次数
  153. (uint16_t)0, //TE MCU故障次数
  154. (uint16_t)0, //TE 电路故障次数
  155. };
  156. //平均功耗默认值
  157. const MC_AvgPower_Struct_t MC_AvgPower_Default =
  158. {
  159. (uint16_t)90, //ECO
  160. (uint16_t)135,//TURBO
  161. (uint16_t)180,//SPORT
  162. (uint16_t)225,//TURBO
  163. (uint16_t)200,//SMART
  164. (uint16_t)180,//SMART_T
  165. (uint16_t)270 //5
  166. };
  167. //MC骑行历史信息,占用32bytes
  168. const MC_RideLog_Struct_t MC_RideLog_Default =
  169. {
  170. (uint32_t)0,
  171. (uint32_t)0,
  172. (uint32_t)0,
  173. (uint32_t)0
  174. };
  175. //默认密钥,占用8bytes
  176. const uint8_t Secret_Key_Default[8] = "AVONITOM";
  177. const uint16_t Ver_Table[11] =
  178. {
  179. 372, 744, 1116, 1489, 1861, 2233, 2605, 2978, 3350, 3722, 4095
  180. };
  181. /************Volans助力参数************/
  182. //ECO档位助力参数
  183. const nGearParam_Struct_t GearParam_Default_ECO_Volans =
  184. {
  185. (uint16_t)392,
  186. (uint16_t)0,
  187. (uint16_t)100,
  188. (uint16_t)800,
  189. (uint8_t)2,
  190. (uint8_t)1,
  191. (uint16_t)512
  192. };
  193. //NORM档位助力参数
  194. const nGearParam_Struct_t GearParam_Default_NORM_Volans =
  195. {
  196. (uint16_t)786,
  197. (uint16_t)0,
  198. (uint16_t)100,
  199. (uint16_t)1000,
  200. (uint8_t)2,
  201. (uint8_t)1,
  202. (uint16_t)686
  203. };
  204. //SPORT档位助力参数
  205. const nGearParam_Struct_t GearParam_Default_SPORT_Volans =
  206. {
  207. (uint16_t)1309,
  208. (uint16_t)700,
  209. (uint16_t)100,
  210. (uint16_t)1300,
  211. (uint8_t)3,
  212. (uint8_t)1,
  213. (uint16_t)870
  214. };
  215. //TURBO档位助力参数
  216. const nGearParam_Struct_t GearParam_Default_TURBO_Volans =
  217. {
  218. (uint16_t)1964,
  219. (uint16_t)840,
  220. (uint16_t)100,
  221. (uint16_t)2100,
  222. (uint8_t)5,
  223. (uint8_t)1,
  224. (uint16_t)1024
  225. };
  226. //SMART档位助力参数
  227. const nGearParam_Struct_t GearParam_Default_SMART_Volans =
  228. {
  229. (uint16_t)0,
  230. (uint16_t)500,
  231. (uint16_t)100,
  232. (uint16_t)2100,
  233. (uint8_t)4,
  234. (uint8_t)1,
  235. (uint16_t)1024
  236. };
  237. /************Volans Plus助力参数************/
  238. //ECO档位助力参数
  239. const nGearParam_Struct_t GearParam_Default_ECO_Volans_Plus =
  240. {
  241. (uint16_t)461,
  242. (uint16_t)0,
  243. (uint16_t)300,
  244. (uint16_t)840,
  245. (uint8_t)2,
  246. (uint8_t)1,
  247. (uint16_t)342
  248. };
  249. //NORM档位助力参数
  250. const nGearParam_Struct_t GearParam_Default_NORM_Volans_Plus =
  251. {
  252. (uint16_t)1029,
  253. (uint16_t)0,
  254. (uint16_t)300,
  255. (uint16_t)1200,
  256. (uint8_t)2,
  257. (uint8_t)1,
  258. (uint16_t)512
  259. };
  260. //SPORT档位助力参数
  261. const nGearParam_Struct_t GearParam_Default_SPORT_Volans_Plus =
  262. {
  263. (uint16_t)2262,
  264. (uint16_t)840,
  265. (uint16_t)300,
  266. (uint16_t)1850,
  267. (uint8_t)4,
  268. (uint8_t)1,
  269. (uint16_t)768
  270. };
  271. //TURBO档位助力参数
  272. const nGearParam_Struct_t GearParam_Default_TURBO_Volans_Plus =
  273. {
  274. (uint16_t)2824,
  275. (uint16_t)840,
  276. (uint16_t)300,
  277. (uint16_t)2000,
  278. (uint8_t)5,
  279. (uint8_t)1,
  280. (uint16_t)912
  281. };
  282. //5档助力参数
  283. const nGearParam_Struct_t GearParam_Default_5_Volans_Plus =
  284. {
  285. (uint16_t)3388,
  286. (uint16_t)840,
  287. (uint16_t)300,
  288. (uint16_t)2200,
  289. (uint8_t)7,
  290. (uint8_t)1,
  291. (uint16_t)1024
  292. };
  293. //SMART档位助力参数
  294. const nGearParam_Struct_t GearParam_Default_SMART_Volans_Plus =
  295. {
  296. (uint16_t)0,
  297. (uint16_t)350,
  298. (uint16_t)300,
  299. (uint16_t)2100,
  300. (uint8_t)4,
  301. (uint8_t)1,
  302. (uint16_t)1024
  303. };
  304. //SMART_T档位助力参数
  305. const nGearParam_Struct_t GearParam_Default_SMART_T_Volans_Plus =
  306. {
  307. (uint16_t)0,
  308. (uint16_t)500,
  309. (uint16_t)300,
  310. (uint16_t)2100,
  311. (uint8_t)4,
  312. (uint8_t)1,
  313. (uint16_t)867
  314. };
  315. /************Pegasi助力参数************/
  316. //ECO档位助力参数
  317. const nGearParam_Struct_t GearParam_Default_ECO_Pegasi =
  318. {
  319. (uint16_t)476,
  320. (uint16_t)560,
  321. (uint16_t)0,
  322. (uint16_t)937,
  323. (uint8_t)2,
  324. (uint8_t)1,
  325. (uint16_t)338
  326. };
  327. //NORM档位助力参数
  328. const nGearParam_Struct_t GearParam_Default_NORM_Pegasi =
  329. {
  330. (uint16_t)1142,
  331. (uint16_t)700,
  332. (uint16_t)0,
  333. (uint16_t)1250,
  334. (uint8_t)3,
  335. (uint8_t)2,
  336. (uint16_t)489
  337. };
  338. //SPORT档位助力参数
  339. const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi =
  340. {
  341. (uint16_t)1903,
  342. (uint16_t)840,
  343. (uint16_t)0,
  344. (uint16_t)1459,
  345. (uint8_t)4,
  346. (uint8_t)2,
  347. (uint16_t)686
  348. };
  349. //TURBO档位助力参数
  350. const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi =
  351. {
  352. (uint16_t)2857,
  353. (uint16_t)980,
  354. (uint16_t)0,
  355. (uint16_t)2100,
  356. (uint8_t)5,
  357. (uint8_t)3,
  358. (uint16_t)1024
  359. };
  360. //SMART档位助力参数
  361. const nGearParam_Struct_t GearParam_Default_SMART_Pegasi =
  362. {
  363. (uint16_t)0,
  364. (uint16_t)1200,
  365. (uint16_t)0,
  366. (uint16_t)2100,
  367. (uint8_t)4,
  368. (uint8_t)2,
  369. (uint16_t)1024
  370. };
  371. /************Pegasi Plus助力参数************/
  372. //ECO档位助力参数
  373. const nGearParam_Struct_t GearParam_Default_ECO_Pegasi_Plus =
  374. {
  375. (uint16_t)523,
  376. (uint16_t)560,
  377. (uint16_t)100,
  378. (uint16_t)871,
  379. (uint8_t)1,
  380. (uint8_t)1,
  381. (uint16_t)235
  382. };
  383. //NORM档位助力参数
  384. const nGearParam_Struct_t GearParam_Default_NORM_Pegasi_Plus =
  385. {
  386. (uint16_t)1198,
  387. (uint16_t)700,
  388. (uint16_t)100,
  389. (uint16_t)1055,
  390. (uint8_t)2,
  391. (uint8_t)1,
  392. (uint16_t)331
  393. };
  394. //SPORT档位助力参数
  395. const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi_Plus =
  396. {
  397. (uint16_t)1712,
  398. (uint16_t)840,
  399. (uint16_t)100,
  400. (uint16_t)1464,
  401. (uint8_t)3,
  402. (uint8_t)1,
  403. (uint16_t)512
  404. };
  405. //TURBO档位助力参数
  406. const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi_Plus =
  407. {
  408. (uint16_t)2861,
  409. (uint16_t)980,
  410. (uint16_t)100,
  411. (uint16_t)2100,
  412. (uint8_t)5,
  413. (uint8_t)2,
  414. (uint16_t)1024
  415. };
  416. //SMART档位助力参数
  417. const nGearParam_Struct_t GearParam_Default_SMART_Pegasi_Plus =
  418. {
  419. (uint16_t)0,
  420. (uint16_t)1850,
  421. (uint16_t)100,
  422. (uint16_t)2100,
  423. (uint8_t)4,
  424. (uint8_t)1,
  425. (uint16_t)1024
  426. };
  427. //全局函数定义
  428. //MC存储的参数初始化为默认值
  429. void Var_SetToDefaultParam(void)
  430. {
  431. //校验码
  432. strncpy((char*)MC_CheckInfo.CheckCode, (char*)"000000000000", 12);
  433. //校验密钥
  434. memcpy(Secret_Key, Secret_Key_Default, sizeof(Secret_Key_Default));
  435. //力矩传感器校正参数
  436. memcpy((uint8_t*)&MC_TorqueCorrectParam.StarData, (uint8_t*)&MC_TorqueCorrectParam_Default.StarData, sizeof(MC_TorqueCorrectParam_Default));
  437. //配置参数1
  438. memcpy((uint8_t*)&MC_ConfigParam1.GasCtrlMode_Flag, (uint8_t*)&MC_ConfigParam1_Default.GasCtrlMode_Flag, sizeof(MC_ConfigParam1_Default));
  439. //配置参数2
  440. memcpy((uint8_t*)&MC_ConfigParam2.ZeroAngle_Pitch, (uint8_t*)&MC_ConfigParam2_Default.ZeroAngle_Pitch, sizeof(MC_ConfigParam2_Default));
  441. //马达参数
  442. memcpy((uint8_t*)&MC_MotorParam.Rate_Power, (uint8_t*)&MC_MotorParam_Default.Rate_Power, sizeof(MC_MotorParam_Default));
  443. }
  444. //MC存储的记录初始化为0
  445. void Var_SetToDefaultLog(void)
  446. {
  447. //历史信息1
  448. memcpy((uint8_t*)&MC_RunLog1.PowerOnCnt, (uint8_t*)&MC_RunLog1_Default.PowerOnCnt, sizeof(MC_RunLog1_Default));
  449. //历史信息2
  450. memcpy((uint8_t*)&MC_RunLog2.MCU_FaultCnt, (uint8_t*)&MC_RunLog2_Default.MCU_FaultCnt, sizeof(MC_RunLog2_Default));
  451. //骑行历史信息
  452. memcpy((uint8_t*)&MC_RideLog.ODO_Km, (uint8_t*)&MC_RideLog_Default.ODO_Km, sizeof(MC_RideLog_Default));
  453. //平均功耗值
  454. MC_AvgPower = MC_AvgPower_Default;
  455. }
  456. //变量初始化
  457. void Var_Init(void)
  458. {
  459. //MC故障码初始化为0
  460. MC_ErrorCode.Code = 0;
  461. //TE故障码初始化为0
  462. MC_TE_SensorStatus.TE_ErrorCode.Code = 0;
  463. //设备在线检测结果初始化为离线
  464. DeviceOnLine_Status.Status = 0x07;
  465. //BMS校验信息初始化为0
  466. memset((uint8_t*)BMS_CheckInfo.MAC_ID, 0, sizeof(BMS_CheckInfo));
  467. //HMI校验信息初始化为0
  468. memset((uint8_t*)HMI_CheckInfo.MAC_ID, 0, sizeof(HMI_CheckInfo));
  469. //PBU校验信息初始化为0
  470. memset((uint8_t*)PBU_CheckInfo.MAC_ID, 0, sizeof(PBU_CheckInfo));
  471. //BMS设计信息初始化为默认值
  472. memcpy((uint8_t*)&BMS_DesignInfo.Capacity, (uint8_t*)&BMS_DesignInfo_Default.Capacity, sizeof(BMS_DesignInfo_Struct_t));
  473. //PBU配置参数初始化为默认值
  474. memcpy((uint8_t*)&PBU_ConfigParam.GearsNum, (uint8_t*)&PBU_ConfigParam_Default.GearsNum, sizeof(PBU_ConfigParam_Struct_t));
  475. //MC版本信息初始化,Mode和SN从EEPROM读取
  476. strncpy(MC_VerInfo.HW_Version, (char*)"QD007H. ", 16);
  477. strncpy(MC_VerInfo.FW_Version, (char*)"V2r2r0_20250719.", 16);
  478. #if defined MS2305
  479. strncpy(Firmware_Special, (char*)"TC033001-MS2305-V1r3. ", 32);
  480. #elif defined MS2304
  481. strncpy(Firmware_Special, (char*)"TC033001-MS2304-V1r2. ", 32);
  482. #else
  483. error();
  484. #endif
  485. //编译时间
  486. do
  487. {
  488. uint8_t String_BuildDate[] = __DATE__; //Mouth Date Year,例如Jan 13 2022
  489. uint8_t String_BuildTime[] = __TIME__; //HH:MM:SS,例如18:00:00
  490. //年
  491. Firmware_Special[26] = (String_BuildDate[9] - '0') * 10 + (String_BuildDate[10] - '0');
  492. //月
  493. if(strncasecmp((char*)String_BuildDate, "Jan", 3) == 0) Firmware_Special[27] = 1;
  494. else if(strncasecmp((char*)String_BuildDate, "Feb", 3) == 0) Firmware_Special[27] = 2;
  495. else if(strncasecmp((char*)String_BuildDate, "Mar", 3) == 0) Firmware_Special[27] = 3;
  496. else if(strncasecmp((char*)String_BuildDate, "Apr", 3) == 0) Firmware_Special[27] = 4;
  497. else if(strncasecmp((char*)String_BuildDate, "May", 3) == 0) Firmware_Special[27] = 5;
  498. else if(strncasecmp((char*)String_BuildDate, "Jun", 3) == 0) Firmware_Special[27] = 6;
  499. else if(strncasecmp((char*)String_BuildDate, "Jul", 3) == 0) Firmware_Special[27] = 7;
  500. else if(strncasecmp((char*)String_BuildDate, "Aug", 3) == 0) Firmware_Special[27] = 8;
  501. else if(strncasecmp((char*)String_BuildDate, "Sep", 3) == 0) Firmware_Special[27] = 9;
  502. else if(strncasecmp((char*)String_BuildDate, "Oct", 3) == 0) Firmware_Special[27] = 10;
  503. else if(strncasecmp((char*)String_BuildDate, "Nov", 3) == 0) Firmware_Special[27] = 11;
  504. else if(strncasecmp((char*)String_BuildDate, "Dec", 3) == 0) Firmware_Special[27] = 12;
  505. else Firmware_Special[27] = 0;
  506. //日
  507. Firmware_Special[28] = (String_BuildDate[4] == 0x20 ? 0 : String_BuildDate[4] - '0') * 10 + (String_BuildDate[5] - '0');
  508. //时
  509. Firmware_Special[29] = (String_BuildTime[0] == 0x20 ? 0 : String_BuildTime[0] - '0') * 10 + (String_BuildTime[1] - '0');
  510. //分
  511. Firmware_Special[30] = (String_BuildTime[3] == 0x20 ? 0 : String_BuildTime[3] - '0') * 10 + (String_BuildTime[4] - '0');
  512. //秒
  513. Firmware_Special[31] = (String_BuildTime[6] == 0x20 ? 0 : String_BuildTime[6] - '0') * 10 + (String_BuildTime[7] - '0');
  514. }while(0);
  515. if(MCUManufacturer == NoName) MC_VerInfo.HW_Version[10] = '0';
  516. else if(MCUManufacturer == STM32F103RBT6) MC_VerInfo.HW_Version[10] = '1';
  517. else if(MCUManufacturer == APM32F103RBT6) MC_VerInfo.HW_Version[10] = '2';
  518. else if(MCUManufacturer == HK32F103RBT6) MC_VerInfo.HW_Version[10] = '3';
  519. else if(MCUManufacturer == GD32F103RBT6) MC_VerInfo.HW_Version[10] = '4';
  520. else MC_VerInfo.HW_Version[10] = '0';
  521. //电机型号
  522. strncpy(MC_VerInfo.Mode, (char*)"VS7500. ", 16);
  523. //电机序列号
  524. strncpy(MC_VerInfo.SN_Num, (char*)"0000000000000000", 16);
  525. //生产信息
  526. strncpy(MC_MacInfo.Manufacturer, (char*)"MOTINOVA", 8); //生产信息
  527. strncpy(MC_MacInfo.MacAddr, (char*)"WUHAN. ", 8);
  528. strncpy(MC_MacInfo.MacDate, (char*)"20210901", 8);
  529. //MCU ID读取
  530. memcpy((uint8_t*)MC_CheckInfo.MAC_ID, (uint8_t*)(0x1FFFF7E8), 12);
  531. //MC存储数据初始化为默认值
  532. Var_SetToDefaultParam();
  533. Var_SetToDefaultLog();
  534. }
  535. //根据电机型号系列号调用不同的助力参数
  536. void UpdateGearParam(uint8_t SerialNum)
  537. {
  538. switch(SerialNum)
  539. {
  540. case 1://Volans
  541. {
  542. //助力参数初始化
  543. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  544. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  545. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  546. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  547. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  548. break;
  549. }
  550. case 2://Volans Plus
  551. {
  552. //助力参数初始化
  553. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  554. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  555. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  556. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  557. memcpy((uint8_t*)&MC_AssisParam.Gear_5.Gain_K, (uint8_t*)&GearParam_Default_5_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  558. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  559. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART_T.Gain_K, (uint8_t*)&GearParam_Default_SMART_T_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  560. break;
  561. }
  562. case 3://Pegasi
  563. {
  564. //助力参数初始化
  565. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  566. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  567. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  568. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  569. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  570. break;
  571. }
  572. case 4://Pegasi Plus
  573. {
  574. //助力参数初始化
  575. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  576. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  577. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  578. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  579. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  580. break;
  581. }
  582. default:
  583. {
  584. //默认处理
  585. break;
  586. }
  587. }
  588. }