var.c 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887
  1. #include "var.h"
  2. #include "torque_sensor.h"
  3. MC_RunInfo_Struct_t MC_RunInfo; //MC运行信息
  4. MC_DebugInfo_Struct_t MC_DebugInfo; //MC调试信息
  5. MC_ErrorCode_Struct_t MC_ErrorCode; //MC故障代码
  6. MC_VerInfo_Struct_t MC_VerInfo; //MC版本信息
  7. char Firmware_Special[32] = {0,}; //MC软件版本特性说明
  8. uint8_t MC_TagInfo[32] = {0xFF,}; //MC生产标签信息
  9. OnLine_Status_Struct_t DeviceOnLine_Status; //设备在线检测结果
  10. BMS_RunInfo_Struct_t BMS_RunInfo; //BMS运行信息
  11. BMS_CellVol_Struct_t BMS_CellVol; //BMS电芯电压
  12. BMS_ErrorCode_Struct_t BMS_ErrorCode; //BMS故障码
  13. BMS_DesignInfo_Struct_t BMS_DesignInfo; //BMS设计信息
  14. BMS_VerInfo_Struct_t BMS_VerInfo; //BMS版本信息
  15. BMS_MacInfo_Struct_t BMS_MacInfo; //BMS生产信息
  16. BMS_UsrLog_Struct_t BMS_UsrLog; //BMS使用记录
  17. Device_CheckInfo_Struct_t BMS_CheckInfo; //BMS授权校验
  18. BatterCellInfo_Struct_t BatteryCellInfo; //电池电芯放电信息
  19. Device_CheckInfo_Struct_t PBU_CheckInfo; //PBU授权校验
  20. PBU_ConfigParam_Struct_t PBU_ConfigParam; //PBU配置参数
  21. Device_CheckInfo_Struct_t HMI_CheckInfo; //HMI授权校验
  22. MC_GasMode_Struct_t MC_GasMode_Param; //转把模式控制参数
  23. MC_ConfigParam1_Struct_t MC_ConfigParam1; //MC配置参数1
  24. MC_ConfigParam2_Struct_t MC_ConfigParam2; //MC配置参数1
  25. MC_MotorParam_Struct_t MC_MotorParam; //马达参数
  26. MC_RunLog1_Struct_t MC_RunLog1; //MC历史信息1
  27. MC_RunLog2_Struct_t MC_RunLog2; //MC历史信息2
  28. uint8_t RunLogSaveIndex = 0; //MC历史信息存储序号,0:不存储,1:存储MC_RunLog1,2:存储MC_RunLog2
  29. uint8_t Secret_Key[8]; //授权验证密钥
  30. MC_MacInfo_Struct_t MC_MacInfo; //MC生产信息
  31. uint8_t UserString1[16]; //MC自定义字符串1
  32. uint8_t UserString2[16]; //MC自定义字符串2
  33. uint8_t UserString3[16]; //MC自定义字符串3
  34. MC_PowerOffBkp_Struct_t MC_PowerOffBkp; //MC关机时刻临时存储的数据
  35. Device_CheckInfo_Struct_t MC_CheckInfo; //MC授权信息
  36. MC_TE_SensorStatus_Struct_t MC_TE_SensorStatus; //TE传回传感器状态
  37. MC_TE_SensorData_Struct_t MC_TE_SensorData; //发给TE传感器结果
  38. uint16_t MC_TE_SyncClockFreqScan; //TE同步时钟频率
  39. TrueOrFalse_Flag_Struct_t TE_MCU_DataRefreshFlag = FALSE; //TE MCU数据更新标志
  40. MC_AssistParam_Struct_t MC_AssisParam; //助力输出计算参数
  41. uint8_t MC_WalkMode_Persent = 100; //推行模式最高转速百分比设置
  42. ComOK_Check_Struct_t IsComOK_TE = {FALSE, 0}; //TE通信状态标志
  43. ComOK_Check_Struct_t IsComOK_PBU = {FALSE, 0}; //PBU通信状态标志
  44. ComOK_Check_Struct_t IsComOK_HMI = {FALSE, 0}; //HMI通信状态标志
  45. ComOK_Check_Struct_t IsComOK_BMS = {FALSE, 0}; //BMS通信状态标志
  46. MC_AttitudeAngle_Struct_t MC_AttitudeAngle; //姿态传感器数值
  47. MC_RideLog_Struct_t MC_RideLog; //骑行历史
  48. MC_AvgPower_Struct_t MC_AvgPower; //助力平均功耗
  49. MCU_Manufacturter_Struct_t MCUManufacturer; //MCU生厂商
  50. uint16_t SpeedRatio;
  51. uint16_t HardwareVersion_AD=0;
  52. TrueOrFalse_Flag_Struct_t VersionIdentifyFinishedFlag = FALSE;
  53. TrueOrFalse_Flag_Struct_t PowerDown_SaveFlag = FALSE;
  54. TrueOrFalse_Flag_Struct_t IsFirstPowerOnFlag = FALSE;
  55. Bike_RatioCal_Struct_t Bike_RatioCalParam = {0,0,0,100,10,0,0};//传动比计算
  56. //BMS默认设计信息
  57. const BMS_DesignInfo_Struct_t BMS_DesignInfo_Default =
  58. {
  59. (uint16_t)10400, //设计容量
  60. (uint8_t)36, //设计电压
  61. {0,0,0,0,0,0,0,0} //电芯型号
  62. };
  63. //电池电芯默认放电参数
  64. const BatterCellInfo_Struct_t BatteryCellInfoDefault =
  65. {
  66. 15000,
  67. {
  68. 4152, //100%
  69. 4104, //99%
  70. 4089,
  71. 4078,
  72. 4070,
  73. 4064,
  74. 4059,
  75. 4055,
  76. 4051,
  77. 4047,
  78. 4043,
  79. 4039,
  80. 4034,
  81. 4028,
  82. 4021,
  83. 4013,
  84. 4004,
  85. 3995,
  86. 3984,
  87. 3973,
  88. 3962,
  89. 3951,
  90. 3940,
  91. 3930,
  92. 3919,
  93. 3910,
  94. 3901,
  95. 3892,
  96. 3883,
  97. 3875,
  98. 3867,
  99. 3858,
  100. 3850,
  101. 3843,
  102. 3834,
  103. 3826,
  104. 3817,
  105. 3809,
  106. 3799,
  107. 3790,
  108. 3780,
  109. 3769,
  110. 3759,
  111. 3748,
  112. 3737,
  113. 3727,
  114. 3716,
  115. 3706,
  116. 3696,
  117. 3687,
  118. 3677,
  119. 3669,
  120. 3660,
  121. 3652,
  122. 3645,
  123. 3637,
  124. 3630,
  125. 3623,
  126. 3617,
  127. 3611,
  128. 3605,
  129. 3599,
  130. 3593,
  131. 3587,
  132. 3582,
  133. 3576,
  134. 3572,
  135. 3566,
  136. 3561,
  137. 3556,
  138. 3551,
  139. 3546,
  140. 3540,
  141. 3534,
  142. 3528,
  143. 3523,
  144. 3516,
  145. 3510,
  146. 3503,
  147. 3495,
  148. 3487,
  149. 3479,
  150. 3470,
  151. 3461,
  152. 3451,
  153. 3440,
  154. 3428,
  155. 3415,
  156. 3401,
  157. 3387,
  158. 3374,
  159. 3365,
  160. 3356,
  161. 3346,
  162. 3336,
  163. 3325,
  164. 3313,
  165. 3296,
  166. 3271,
  167. 3219, //1%
  168. 3100, //0%
  169. }
  170. };
  171. //PBU默认配置
  172. const PBU_ConfigParam_Struct_t PBU_ConfigParam_Default =
  173. {
  174. 4, //档位数量
  175. MC_SUPPORT_DISABLE, //是否支持无PBU操作
  176. };
  177. //MC默认配置参数1,占用32bytes
  178. #if defined (PEGASI_36V)
  179. const MC_ConfigParam1_Struct_t MC_ConfigParam1_Default =
  180. {
  181. (uint8_t)0x55, //指拨模式参数,0x55-不支持
  182. (MC_StarMode_Struct_t)MC_StarMode_NORM, //启动模式
  183. (uint16_t)100, //停机时间 ms
  184. (uint8_t)25, //限速 km/h
  185. (uint8_t)3, //下降速度
  186. (uint8_t)16, //前齿数 T
  187. (uint8_t)16, //后齿数 T
  188. (uint8_t)17, //限流 A
  189. (uint8_t)135, //高温预警值 +40℃
  190. (uint8_t)165, //高温保护值 +40℃
  191. (MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE, //无码表支持,0x55-不支持,0x-AA支持
  192. (uint8_t)219, //轮胎周长 cm
  193. (uint8_t)3, //系列号,
  194. {100,100}, //ECO
  195. {100,100}, //NORM
  196. {100,100}, //SPORT
  197. {100,100}, //TURBO
  198. {100,100}, //SMART
  199. (uint8_t)1, //速度传感器极数
  200. (uint8_t)2, //踏频启动信号个数
  201. (MC_SpeedSignal_Struct_t)MC_SPEED_WHEEL_TRIG, //速度信号来源,0x55-车轮触发,0x-AA踏频估算,0x-EE通信获取车轮旋转周期
  202. (int8_t)0, //轮胎周长微调值
  203. (uint16_t)3000, //低压保护阈值,单位mV,针对单节电芯的设置值
  204. (uint8_t)60, //推行限速值,单位0.1km/h
  205. (uint8_t)135 //推行模式电机转速设置值
  206. };
  207. #elif defined (PEGASI_48V)
  208. const MC_ConfigParam1_Struct_t MC_ConfigParam1_Default =
  209. {
  210. (uint8_t)0x55, //指拨模式参数,0x55-不支持
  211. (MC_StarMode_Struct_t)MC_StarMode_NORM, //启动模式
  212. (uint16_t)100, //停机时间 ms
  213. (uint8_t)25, //限速 km/h
  214. (uint8_t)3, //下降速度
  215. (uint8_t)16, //前齿数 T
  216. (uint8_t)16, //后齿数 T
  217. (uint8_t)17, //限流 A
  218. (uint8_t)135, //高温预警值 +40℃
  219. (uint8_t)165, //高温保护值 +40℃
  220. (MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE, //无码表支持,0x55-不支持,0x-AA支持
  221. (uint8_t)219, //轮胎周长 cm
  222. (uint8_t)4, //系列号,
  223. {100,100}, //ECO
  224. {100,100}, //NORM
  225. {100,100}, //SPORT
  226. {100,100}, //TURBO
  227. {100,100}, //SMART
  228. (uint8_t)1, //速度传感器极数
  229. (uint8_t)2, //踏频启动信号个数
  230. (MC_SpeedSignal_Struct_t)MC_SPEED_WHEEL_TRIG, //速度信号来源,0x55-车轮触发,0x-AA踏频估算,0x-EE通信获取车轮旋转周期
  231. (int8_t)0, //轮胎周长微调值
  232. (uint16_t)3000, //低压保护阈值,单位mV,针对单节电芯的设置值
  233. (uint8_t)60, //推行限速值,单位0.1km/h
  234. (uint8_t)135 //推行模式电机转速设置值
  235. };
  236. #endif
  237. //MC配置参数2,占用32bytes
  238. const MC_ConfigParam2_Struct_t MC_ConfigParam2_Default =
  239. {
  240. (int16_t)0, //俯仰角零偏
  241. (int16_t)0, //横滚角零偏
  242. (MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE, //0x55-不支持,0x-AA支持
  243. (uint8_t)0x02, //前后灯模式
  244. (uint8_t)12, //前灯电压
  245. (uint8_t)12, //后灯电压
  246. (uint16_t)150, //超速报警
  247. (uint16_t)75, //尾灯控制高电平系数
  248. (uint16_t)150, //尾灯控制周期系数
  249. (int8_t)0, //限速起始偏移
  250. (int8_t)0, //限速结束偏移
  251. (int8_t)0, //限速偏移
  252. (uint8_t)0, //预留
  253. {100,100}, //ECO
  254. {100,100}, //NORM
  255. {100,100}, //SPORT
  256. {100,100}, //TURBO
  257. {100,100}, //SMART
  258. };
  259. //MC默认马达参数,占用16bytes
  260. #if defined (PEGASI_36V)
  261. const MC_MotorParam_Struct_t MC_MotorParam_Default =
  262. {
  263. (uint16_t)250, //W
  264. (uint16_t)1400, //rpm
  265. (uint16_t)200, //mohm
  266. (uint16_t)10, //mH
  267. (uint16_t)10, //mH
  268. (uint16_t)36000, //mV
  269. (uint8_t)36 //V
  270. };
  271. #elif defined (PEGASI_48V)
  272. const MC_MotorParam_Struct_t MC_MotorParam_Default =
  273. {
  274. (uint16_t)250, //W
  275. (uint16_t)1800, //rpm
  276. (uint16_t)200, //mohm
  277. (uint16_t)10, //mH
  278. (uint16_t)10, //mH
  279. (uint16_t)48000, //mV
  280. (uint8_t)48 //V
  281. };
  282. #endif
  283. //MC默认历史信息,占用48bytes
  284. const MC_RunLog1_Struct_t MC_RunLog1_Default =
  285. {
  286. (uint32_t)1, //开机次数
  287. (uint32_t)0, //运行总时间 min
  288. (uint16_t)0, //过流保次数
  289. (uint16_t)0, //低压保护次数
  290. (uint16_t)0, //高压保护次数
  291. (uint16_t)0, //堵转保护次数
  292. (uint16_t)0, //温度保护次数
  293. (uint16_t)0, //速度传感器错误次数
  294. (uint16_t)0, //力矩传感器错误次数
  295. (uint16_t)0, //霍尔传感器错误次数
  296. (uint16_t)0, //马达相线错误次数
  297. (uint16_t)0, //NTC错误次数
  298. (uint16_t)0, //BMS校验错误次数
  299. (uint16_t)0, //HMI校验错误次数
  300. (uint16_t)0, //PBU校验错误次数
  301. (uint8_t)65, //PCB历史最高温
  302. (uint8_t)65, //PCB历史最低温
  303. (uint32_t)0, //ODO里程
  304. (uint8_t)65, //绕组历史最高温
  305. (uint8_t)65, //绕组历史最低温
  306. (uint8_t)65, //MCU历史最高温
  307. (uint8_t)65, //MCU历史最低温
  308. (uint32_t)0 //ODO时间
  309. };
  310. //MC默认历史信息,占用24bytes
  311. const MC_RunLog2_Struct_t MC_RunLog2_Default =
  312. {
  313. (uint16_t)0, //MCU故障次数
  314. (uint16_t)0, //踏频传感器故障次数
  315. (uint16_t)0, //指拨传感器故障次数
  316. (uint16_t)0, //MOS短路次数
  317. (uint16_t)0, //电压异常次数
  318. (uint16_t)0, //电路故障次数
  319. (uint16_t)0, //TE MCU故障次数
  320. (uint16_t)0, //TE 电路故障次数
  321. };
  322. //平均功耗默认值
  323. const MC_AvgPower_Struct_t MC_AvgPower_Default =
  324. {
  325. (uint16_t)100,
  326. (uint16_t)160,
  327. (uint16_t)190,
  328. (uint16_t)270,
  329. (uint16_t)180
  330. };
  331. //MC骑行历史信息,占用32bytes
  332. const MC_RideLog_Struct_t MC_RideLog_Default =
  333. {
  334. (uint32_t)0,
  335. (uint32_t)0,
  336. (uint32_t)0,
  337. (uint32_t)0
  338. };
  339. //默认密钥,占用8bytes
  340. const uint8_t Secret_Key_Default[8] = "AVONITOM";
  341. const uint16_t Ver_Table[11] =
  342. {
  343. 372, 744, 1116, 1489, 1861, 2233, 2605, 2978, 3350, 3722, 4095
  344. };
  345. /************Volans助力参数************/
  346. //ECO档位助力参数
  347. const nGearParam_Struct_t GearParam_Default_ECO_Volans =
  348. {
  349. (uint16_t)392,
  350. (uint16_t)0,
  351. (uint16_t)100,
  352. (uint16_t)800,
  353. (uint8_t)2,
  354. (uint8_t)1,
  355. (uint16_t)512
  356. };
  357. //NORM档位助力参数
  358. const nGearParam_Struct_t GearParam_Default_NORM_Volans =
  359. {
  360. (uint16_t)786,
  361. (uint16_t)0,
  362. (uint16_t)100,
  363. (uint16_t)1000,
  364. (uint8_t)2,
  365. (uint8_t)1,
  366. (uint16_t)686
  367. };
  368. //SPORT档位助力参数
  369. const nGearParam_Struct_t GearParam_Default_SPORT_Volans =
  370. {
  371. (uint16_t)1309,
  372. (uint16_t)700,
  373. (uint16_t)100,
  374. (uint16_t)1300,
  375. (uint8_t)3,
  376. (uint8_t)1,
  377. (uint16_t)870
  378. };
  379. //TURBO档位助力参数
  380. const nGearParam_Struct_t GearParam_Default_TURBO_Volans =
  381. {
  382. (uint16_t)1964,
  383. (uint16_t)840,
  384. (uint16_t)100,
  385. (uint16_t)2100,
  386. (uint8_t)5,
  387. (uint8_t)1,
  388. (uint16_t)1024
  389. };
  390. //SMART档位助力参数
  391. const nGearParam_Struct_t GearParam_Default_SMART_Volans =
  392. {
  393. (uint16_t)0,
  394. (uint16_t)460,
  395. (uint16_t)100,
  396. (uint16_t)2100,
  397. (uint8_t)4,
  398. (uint8_t)1,
  399. (uint16_t)1024
  400. };
  401. /************Volans Plus助力参数************/
  402. //ECO档位助力参数
  403. const nGearParam_Struct_t GearParam_Default_ECO_Volans_Plus =
  404. {
  405. (uint16_t)452,
  406. (uint16_t)0,
  407. (uint16_t)100,
  408. (uint16_t)840,
  409. (uint8_t)2,
  410. (uint8_t)1,
  411. (uint16_t)512
  412. };
  413. //NORM档位助力参数
  414. const nGearParam_Struct_t GearParam_Default_NORM_Volans_Plus =
  415. {
  416. (uint16_t)954,
  417. (uint16_t)0,
  418. (uint16_t)100,
  419. (uint16_t)1200,
  420. (uint8_t)2,
  421. (uint8_t)1,
  422. (uint16_t)686
  423. };
  424. //SPORT档位助力参数
  425. const nGearParam_Struct_t GearParam_Default_SPORT_Volans_Plus =
  426. {
  427. (uint16_t)1504,
  428. (uint16_t)700,
  429. (uint16_t)100,
  430. (uint16_t)1590,
  431. (uint8_t)3,
  432. (uint8_t)1,
  433. (uint16_t)870
  434. };
  435. //TURBO档位助力参数
  436. const nGearParam_Struct_t GearParam_Default_TURBO_Volans_Plus =
  437. {
  438. (uint16_t)2354,
  439. (uint16_t)840,
  440. (uint16_t)100,
  441. (uint16_t)2100,
  442. (uint8_t)5,
  443. (uint8_t)1,
  444. (uint16_t)1024
  445. };
  446. //SMART档位助力参数
  447. const nGearParam_Struct_t GearParam_Default_SMART_Volans_Plus =
  448. {
  449. (uint16_t)0,
  450. (uint16_t)460,
  451. (uint16_t)100,
  452. (uint16_t)2100,
  453. (uint8_t)4,
  454. (uint8_t)1,
  455. (uint16_t)1024
  456. };
  457. /************Pegasi助力参数************/
  458. //ECO档位助力参数
  459. const nGearParam_Struct_t GearParam_Default_ECO_Pegasi =
  460. {
  461. (uint16_t)714,
  462. (uint16_t)0,
  463. (uint16_t)100,
  464. (uint16_t)937,
  465. (uint8_t)2,
  466. (uint8_t)1,
  467. (uint16_t)512
  468. };
  469. //NORM档位助力参数
  470. const nGearParam_Struct_t GearParam_Default_NORM_Pegasi =
  471. {
  472. (uint16_t)1370,
  473. (uint16_t)0,
  474. (uint16_t)100,
  475. (uint16_t)1250,
  476. (uint8_t)3,
  477. (uint8_t)2,
  478. (uint16_t)686
  479. };
  480. //SPORT档位助力参数
  481. const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi =
  482. {
  483. (uint16_t)2100,
  484. (uint16_t)560,
  485. (uint16_t)100,
  486. (uint16_t)1459,
  487. (uint8_t)4,
  488. (uint8_t)2,
  489. (uint16_t)870
  490. };
  491. //TURBO档位助力参数
  492. const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi =
  493. {
  494. (uint16_t)3200,
  495. (uint16_t)700,
  496. (uint16_t)100,
  497. (uint16_t)2100,
  498. (uint8_t)5,
  499. (uint8_t)3,
  500. (uint16_t)1024
  501. };
  502. //SMART档位助力参数
  503. const nGearParam_Struct_t GearParam_Default_SMART_Pegasi =
  504. {
  505. (uint16_t)0,
  506. (uint16_t)460,
  507. (uint16_t)0,
  508. (uint16_t)2100,
  509. (uint8_t)4,
  510. (uint8_t)2,
  511. (uint16_t)1024
  512. };
  513. /************Pegasi Plus助力参数************/
  514. //ECO档位助力参数
  515. const nGearParam_Struct_t GearParam_Default_ECO_Pegasi_Plus =
  516. {
  517. (uint16_t)714,
  518. (uint16_t)0,
  519. (uint16_t)100,
  520. (uint16_t)937,
  521. (uint8_t)2,
  522. (uint8_t)1,
  523. (uint16_t)512
  524. };
  525. //NORM档位助力参数
  526. const nGearParam_Struct_t GearParam_Default_NORM_Pegasi_Plus =
  527. {
  528. (uint16_t)1428,
  529. (uint16_t)0,
  530. (uint16_t)100,
  531. (uint16_t)1250,
  532. (uint8_t)3,
  533. (uint8_t)2,
  534. (uint16_t)686
  535. };
  536. //SPORT档位助力参数
  537. const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi_Plus =
  538. {
  539. (uint16_t)2142,
  540. (uint16_t)560,
  541. (uint16_t)100,
  542. (uint16_t)1459,
  543. (uint8_t)4,
  544. (uint8_t)2,
  545. (uint16_t)870
  546. };
  547. //TURBO档位助力参数
  548. const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi_Plus =
  549. {
  550. (uint16_t)3200,
  551. (uint16_t)700,
  552. (uint16_t)100,
  553. (uint16_t)2100,
  554. (uint8_t)5,
  555. (uint8_t)3,
  556. (uint16_t)1024
  557. };
  558. //SMART档位助力参数
  559. const nGearParam_Struct_t GearParam_Default_SMART_Pegasi_Plus =
  560. {
  561. (uint16_t)0,
  562. (uint16_t)460,
  563. (uint16_t)0,
  564. (uint16_t)2100,
  565. (uint8_t)4,
  566. (uint8_t)2,
  567. (uint16_t)1024
  568. };
  569. //全局函数定义
  570. //MC存储的参数初始化为默认值
  571. void Var_SetToDefaultParam(void)
  572. {
  573. //校验码
  574. strncpy((char*)MC_CheckInfo.CheckCode, (char*)"000000000000", 12);
  575. //力矩传感器还原为初始值
  576. TorqueSensor_ParamSetDefaultData_Init(&TorqueSensor_1_Param, ADC1_Result[ADC1_RANK_TORQUE_SENSOR_1]);
  577. TorqueSensor_ParamSetDefaultData_Init(&TorqueSensor_2_Param, ADC1_Result[ADC1_RANK_TORQUE_SENSOR_2]);
  578. TorqueSensor_ParamSetDefaultData_Init(&TorqueSensor_3_Param, ADC1_Result[ADC1_RANK_TORQUE_SENSOR_3]);
  579. //校验密钥
  580. memcpy(Secret_Key, Secret_Key_Default, sizeof(Secret_Key_Default));
  581. //启动值设为默认值
  582. TorqueSensorStartData = TORQUE_SENSOR_STARTDATA;
  583. //配置参数1
  584. memcpy((uint8_t*)&MC_ConfigParam1.GasCtrlMode_Param, (uint8_t*)&MC_ConfigParam1_Default.GasCtrlMode_Param, sizeof(MC_ConfigParam1_Default));
  585. MC_GasMode_Param.Mode = MC_ConfigParam1.GasCtrlMode_Param;
  586. //配置参数2
  587. memcpy((uint8_t*)&MC_ConfigParam2.ZeroAngle_Pitch, (uint8_t*)&MC_ConfigParam2_Default.ZeroAngle_Pitch, sizeof(MC_ConfigParam2_Default));
  588. //马达参数
  589. memcpy((uint8_t*)&MC_MotorParam.Rate_Power, (uint8_t*)&MC_MotorParam_Default.Rate_Power, sizeof(MC_MotorParam_Default));
  590. //电池放电参数
  591. memcpy((uint8_t*)&BatteryCellInfo.DesignCap, (uint8_t*)&BatteryCellInfoDefault.DesignCap, sizeof(BatterCellInfo_Struct_t));
  592. }
  593. //MC存储的记录初始化
  594. void Var_SetToDefaultLog(void)
  595. {
  596. //历史信息1
  597. memcpy((uint8_t*)&MC_RunLog1.PowerOnCnt, (uint8_t*)&MC_RunLog1_Default.PowerOnCnt, sizeof(MC_RunLog1_Default));
  598. //历史信息2
  599. memcpy((uint8_t*)&MC_RunLog2.MCU_FaultCnt, (uint8_t*)&MC_RunLog2_Default.MCU_FaultCnt, sizeof(MC_RunLog2_Default));
  600. //骑行历史信息
  601. memcpy((uint8_t*)&MC_RideLog.ODO_Km, (uint8_t*)&MC_RideLog_Default.ODO_Km, sizeof(MC_RideLog_Default));
  602. //平均功耗值
  603. MC_AvgPower = MC_AvgPower_Default;
  604. }
  605. //变量初始化
  606. void Var_Init(void)
  607. {
  608. //MC故障码初始化为0
  609. MC_ErrorCode.Code = 0;
  610. //TE故障码初始化为0
  611. MC_TE_SensorStatus.TE_ErrorCode.Code = 0;
  612. //力矩传感器故障状态清零
  613. TorsueSensorFaultStatus.FaultStatusCode = 0;
  614. //设备在线检测结果初始化为离线
  615. DeviceOnLine_Status.Status = 0x07;
  616. //BMS校验信息初始化为0
  617. memset((uint8_t*)BMS_CheckInfo.MAC_ID, 0, sizeof(BMS_CheckInfo));
  618. //HMI校验信息初始化为0
  619. memset((uint8_t*)HMI_CheckInfo.MAC_ID, 0, sizeof(HMI_CheckInfo));
  620. //PBU校验信息初始化为0
  621. memset((uint8_t*)PBU_CheckInfo.MAC_ID, 0, sizeof(PBU_CheckInfo));
  622. //BMS设计信息初始化为默认值
  623. memcpy((uint8_t*)&BMS_DesignInfo.Capacity, (uint8_t*)&BMS_DesignInfo_Default.Capacity, sizeof(BMS_DesignInfo_Struct_t));
  624. //PBU配置参数初始化为默认值
  625. memcpy((uint8_t*)&PBU_ConfigParam.GearsNum, (uint8_t*)&PBU_ConfigParam_Default.GearsNum, sizeof(PBU_ConfigParam_Struct_t));
  626. //硬件版本,8位板号,2位电压标识,2位MCU型号,4位物理ID CRC32
  627. #if defined (PEGASI_36V)
  628. strncpy(MC_VerInfo.HW_Version, (char*)" 36 ", 16);
  629. #elif defined (PEGASI_48V)
  630. strncpy(MC_VerInfo.HW_Version, (char*)" 48 ", 16);
  631. #else
  632. Error
  633. #endif
  634. //软件版本
  635. #if defined BARD_250K
  636. strncpy(MC_VerInfo.FW_Version, (char*)"V7r2r3_20240620C", 16);
  637. #elif defined BARD_125K
  638. strncpy(MC_VerInfo.FW_Version, (char*)"V3r4r3_20231118C", 16);
  639. #else
  640. Error();
  641. #endif
  642. #if NormalWork
  643. MC_VerInfo.FW_Version[15] = '.';
  644. #endif
  645. //软件标识
  646. strncpy(Firmware_Special, (char*)"EC2024X039-GA0067-V0r1. ", 32);
  647. //编译时间
  648. do
  649. {
  650. uint8_t String_BuildDate[] = __DATE__; //Mouth Date Year,例如Jan 13 2022
  651. uint8_t String_BuildTime[] = __TIME__; //HH:MM:SS,例如18:00:00
  652. //年
  653. Firmware_Special[26] = (String_BuildDate[9] - '0') * 10 + (String_BuildDate[10] - '0');
  654. //月
  655. if(strncasecmp((char*)String_BuildDate, "Jan", 3) == 0) Firmware_Special[27] = 1;
  656. else if(strncasecmp((char*)String_BuildDate, "Feb", 3) == 0) Firmware_Special[27] = 2;
  657. else if(strncasecmp((char*)String_BuildDate, "Mar", 3) == 0) Firmware_Special[27] = 3;
  658. else if(strncasecmp((char*)String_BuildDate, "Apr", 3) == 0) Firmware_Special[27] = 4;
  659. else if(strncasecmp((char*)String_BuildDate, "May", 3) == 0) Firmware_Special[27] = 5;
  660. else if(strncasecmp((char*)String_BuildDate, "Jun", 3) == 0) Firmware_Special[27] = 6;
  661. else if(strncasecmp((char*)String_BuildDate, "Jul", 3) == 0) Firmware_Special[27] = 7;
  662. else if(strncasecmp((char*)String_BuildDate, "Aug", 3) == 0) Firmware_Special[27] = 8;
  663. else if(strncasecmp((char*)String_BuildDate, "Sep", 3) == 0) Firmware_Special[27] = 9;
  664. else if(strncasecmp((char*)String_BuildDate, "Oct", 3) == 0) Firmware_Special[27] = 10;
  665. else if(strncasecmp((char*)String_BuildDate, "Nov", 3) == 0) Firmware_Special[27] = 11;
  666. else if(strncasecmp((char*)String_BuildDate, "Dec", 3) == 0) Firmware_Special[27] = 12;
  667. else Firmware_Special[27] = 0;
  668. //日
  669. Firmware_Special[28] = (String_BuildDate[4] == 0x20 ? 0 : String_BuildDate[4] - '0') * 10 + (String_BuildDate[5] - '0');
  670. //时
  671. Firmware_Special[29] = (String_BuildTime[0] == 0x20 ? 0 : String_BuildTime[0] - '0') * 10 + (String_BuildTime[1] - '0');
  672. //分
  673. Firmware_Special[30] = (String_BuildTime[3] == 0x20 ? 0 : String_BuildTime[3] - '0') * 10 + (String_BuildTime[4] - '0');
  674. //秒
  675. Firmware_Special[31] = (String_BuildTime[6] == 0x20 ? 0 : String_BuildTime[6] - '0') * 10 + (String_BuildTime[7] - '0');
  676. }while(0);
  677. //MCU型号
  678. if(MCUManufacturer == NoName) MC_VerInfo.HW_Version[10] = '0';
  679. else if(MCUManufacturer == STM32F103RBT6) MC_VerInfo.HW_Version[10] = '1';
  680. else if(MCUManufacturer == APM32F103RBT6) MC_VerInfo.HW_Version[10] = '2';
  681. else if(MCUManufacturer == APM32F103RCT7) MC_VerInfo.HW_Version[10] = '2';
  682. else if(MCUManufacturer == HK32F103RBT6) MC_VerInfo.HW_Version[10] = '3';
  683. else if(MCUManufacturer == GD32F103RBT6) MC_VerInfo.HW_Version[10] = '4';
  684. else MC_VerInfo.HW_Version[10] = '0';
  685. //电机型号
  686. strncpy(MC_VerInfo.Mode, (char*)"PG80XX & PSX0XX.", 16);
  687. //电机序列号
  688. strncpy(MC_VerInfo.SN_Num, (char*)"0000000000000000", 16);
  689. //生产信息
  690. strncpy(MC_MacInfo.Manufacturer, (char*)"MOTINOVA", 8); //生产信息
  691. strncpy(MC_MacInfo.MacAddr, (char*)"WUHAN. ", 8);
  692. strncpy(MC_MacInfo.MacDate, (char*)"20210901", 8);
  693. //产品标签
  694. /*
  695. Digit1-2: MO(Battery:BT, Controller:CT, BB:BB, Charger:CG, Display:DP, Motor:MO)
  696. Digit3-4: MA(MOTINOVA)
  697. Digit5-10: 000001(Consecutive number)
  698. Digit11-17: V1.2202(Hardware version:"Version." + Date(YYMM))
  699. Digit18-24: /261022(Production Date:/DDMMYY)
  700. Digit25-26: FI(Customer:Fishcer)
  701. Digit27-31: 65347(Customer Article No.)
  702. */
  703. //strncpy(MC_TagInfo, (char*)"MOMA000001V1.2202/261022FI65347 ", 32);
  704. //MCU ID读取
  705. memcpy((uint8_t*)MC_CheckInfo.MAC_ID, (uint8_t*)(0x1FFFF7E8), 12);
  706. //MC存储数据初始化为默认值
  707. Var_SetToDefaultParam();
  708. Var_SetToDefaultLog();
  709. //传动比计算初始值,车速 = 电机转速 / 4.55 * 前牙盘 / 后牙盘* 周长(cm) * 60 / 1000,周长按cm算相当于放大100倍
  710. Bike_RatioCalParam.RatioDefault = (uint32_t)((MC_ConfigParam1.TeethNum_F * (MC_ConfigParam1.WheelSize + MC_ConfigParam1.WheelSizeAdj) * 60) << 10) / (4550 * MC_ConfigParam1.TeethNum_B);
  711. Bike_RatioCalParam.RatioResult = Bike_RatioCalParam.RatioDefault;
  712. }
  713. //根据电机型号系列号调用不同的助力参数
  714. void UpdateGearParam(uint8_t SerialNum)
  715. {
  716. //根据电机系列号初始化
  717. switch(SerialNum)
  718. {
  719. case 1://Volans
  720. {
  721. //助力参数初始化
  722. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  723. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  724. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  725. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  726. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  727. break;
  728. }
  729. case 2://Volans Plus
  730. {
  731. //助力参数初始化
  732. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  733. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  734. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  735. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  736. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  737. break;
  738. }
  739. case 3://Pegasi
  740. {
  741. //助力参数初始化
  742. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  743. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  744. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  745. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  746. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
  747. break;
  748. }
  749. case 4://Pegasi Plus
  750. {
  751. //助力参数初始化
  752. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  753. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  754. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  755. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  756. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  757. break;
  758. }
  759. default:
  760. {
  761. //默认处理
  762. break;
  763. }
  764. }
  765. //根据配置参数调整各挡位助力比
  766. if((MC_ConfigParam1.UserAdjParam1_ECO.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_ECO.Assist_K_GAIN >= 80))
  767. MC_AssisParam.Gear_ECO.Gain_K = (MC_AssisParam.Gear_ECO.Gain_K * MC_ConfigParam1.UserAdjParam1_ECO.Assist_K_GAIN) / 100;
  768. if((MC_ConfigParam1.UserAdjParam1_NORM.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_NORM.Assist_K_GAIN >= 80))
  769. MC_AssisParam.Gear_NORM.Gain_K = (MC_AssisParam.Gear_NORM.Gain_K * MC_ConfigParam1.UserAdjParam1_NORM.Assist_K_GAIN) / 100;
  770. if((MC_ConfigParam1.UserAdjParam1_SPORT.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_SPORT.Assist_K_GAIN >= 80))
  771. MC_AssisParam.Gear_SPORT.Gain_K = (MC_AssisParam.Gear_SPORT.Gain_K * MC_ConfigParam1.UserAdjParam1_SPORT.Assist_K_GAIN) / 100;
  772. if((MC_ConfigParam1.UserAdjParam1_TURBO.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_TURBO.Assist_K_GAIN >= 80))
  773. MC_AssisParam.Gear_TURBO.Gain_K = (MC_AssisParam.Gear_TURBO.Gain_K * MC_ConfigParam1.UserAdjParam1_TURBO.Assist_K_GAIN) / 100;
  774. if((MC_ConfigParam1.UserAdjParam1_SMART.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_SMART.Assist_K_GAIN >= 80))
  775. MC_AssisParam.Gear_SMART.TorqueApp_TH = (MC_AssisParam.Gear_SMART.TorqueApp_TH * MC_ConfigParam1.UserAdjParam1_SMART.Assist_K_GAIN) / 100;
  776. //根据配置参数调整各挡位加速度
  777. if(MC_ConfigParam1.UserAdjParam1_ECO.StarModel_GAIN <= 90)
  778. MC_AssisParam.Gear_ECO.AccCnt -= 1;
  779. else if(MC_ConfigParam1.UserAdjParam1_ECO.StarModel_GAIN >= 110)
  780. MC_AssisParam.Gear_ECO.AccCnt += 1;
  781. if(MC_ConfigParam1.UserAdjParam1_NORM.StarModel_GAIN <= 90)
  782. MC_AssisParam.Gear_NORM.AccCnt -= 1;
  783. else if(MC_ConfigParam1.UserAdjParam1_NORM.StarModel_GAIN >= 110)
  784. MC_AssisParam.Gear_NORM.AccCnt += 1;
  785. if(MC_ConfigParam1.UserAdjParam1_SPORT.StarModel_GAIN <= 90)
  786. MC_AssisParam.Gear_SPORT.AccCnt -= 1;
  787. else if(MC_ConfigParam1.UserAdjParam1_SPORT.StarModel_GAIN >= 110)
  788. MC_AssisParam.Gear_SPORT.AccCnt += 1;
  789. if(MC_ConfigParam1.UserAdjParam1_TURBO.StarModel_GAIN <= 90)
  790. MC_AssisParam.Gear_TURBO.AccCnt -= 1;
  791. else if(MC_ConfigParam1.UserAdjParam1_TURBO.StarModel_GAIN >= 110)
  792. MC_AssisParam.Gear_TURBO.AccCnt += 1;
  793. if(MC_ConfigParam1.UserAdjParam1_SMART.StarModel_GAIN <= 90) MC_AssisParam.Gear_SMART.AccCnt -= 1;
  794. else if(MC_ConfigParam1.UserAdjParam1_SMART.StarModel_GAIN >= 110)
  795. MC_AssisParam.Gear_SMART.AccCnt += 1;
  796. //根据配置参数调整各挡位最大力矩
  797. if((MC_ConfigParam2.UserAdjParam2_ECO.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_ECO.MaxTorque_K_GAIN >= 80))
  798. MC_AssisParam.Gear_ECO.Upper_Iq = (MC_AssisParam.Gear_ECO.Upper_Iq * MC_ConfigParam2.UserAdjParam2_ECO.MaxTorque_K_GAIN) / 100;
  799. if((MC_ConfigParam2.UserAdjParam2_NORM.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_NORM.MaxTorque_K_GAIN >= 80))
  800. MC_AssisParam.Gear_NORM.Upper_Iq = (MC_AssisParam.Gear_NORM.Upper_Iq * MC_ConfigParam2.UserAdjParam2_NORM.MaxTorque_K_GAIN) / 100;
  801. if((MC_ConfigParam2.UserAdjParam2_SPORT.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_SPORT.MaxTorque_K_GAIN >= 80))
  802. MC_AssisParam.Gear_SPORT.Upper_Iq = (MC_AssisParam.Gear_SPORT.Upper_Iq * MC_ConfigParam2.UserAdjParam2_SPORT.MaxTorque_K_GAIN) / 100;
  803. if((MC_ConfigParam2.UserAdjParam2_TURBO.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_TURBO.MaxTorque_K_GAIN >= 80))
  804. MC_AssisParam.Gear_TURBO.Upper_Iq = (MC_AssisParam.Gear_TURBO.Upper_Iq * MC_ConfigParam2.UserAdjParam2_TURBO.MaxTorque_K_GAIN) / 100;
  805. if((MC_ConfigParam2.UserAdjParam2_SMART.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_SMART.MaxTorque_K_GAIN >= 80))
  806. MC_AssisParam.Gear_SMART.Upper_Iq = (MC_AssisParam.Gear_SMART.Upper_Iq * MC_ConfigParam2.UserAdjParam2_SMART.MaxTorque_K_GAIN) / 100;
  807. //根据配置参数调整各挡位最大电流
  808. if((MC_ConfigParam2.UserAdjParam2_ECO.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_ECO.MaxCurrent_K_GAIN >= 80))
  809. MC_AssisParam.Gear_ECO.CurrentMax_K = (MC_AssisParam.Gear_ECO.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_ECO.MaxCurrent_K_GAIN) / 100;
  810. if((MC_ConfigParam2.UserAdjParam2_NORM.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_NORM.MaxCurrent_K_GAIN >= 80))
  811. MC_AssisParam.Gear_NORM.CurrentMax_K = (MC_AssisParam.Gear_NORM.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_NORM.MaxCurrent_K_GAIN) / 100;
  812. if((MC_ConfigParam2.UserAdjParam2_SPORT.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_SPORT.MaxCurrent_K_GAIN >= 80))
  813. MC_AssisParam.Gear_SPORT.CurrentMax_K = (MC_AssisParam.Gear_SPORT.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_SPORT.MaxCurrent_K_GAIN) / 100;
  814. if((MC_ConfigParam2.UserAdjParam2_TURBO.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_TURBO.MaxCurrent_K_GAIN >= 80))
  815. MC_AssisParam.Gear_TURBO.CurrentMax_K = (MC_AssisParam.Gear_TURBO.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_TURBO.MaxCurrent_K_GAIN) / 100;
  816. if((MC_ConfigParam2.UserAdjParam2_SMART.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_SMART.MaxCurrent_K_GAIN >= 80))
  817. MC_AssisParam.Gear_SMART.CurrentMax_K = (MC_AssisParam.Gear_SMART.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_SMART.MaxCurrent_K_GAIN) / 100;
  818. }