123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867 |
- #include "var.h"
- #include "adc.h"
- #include "hardware_check.h"
- MC_RunInfo_Struct_t MC_RunInfo; //MC运行信息
- MC_DebugInfo_Struct_t MC_DebugInfo; //MC调试信息
- MC_ErrorCode_Struct_t MC_ErrorCode; //MC故障代码
- MC_VerInfo_Struct_t MC_VerInfo; //MC版本信息
- char Firmware_Special[32] = {0,}; //MC软件版本特性说明
- uint8_t MC_TagInfo[32] = {0xFF,}; //MC生产标签信息
- OnLine_Status_Struct_t DeviceOnLine_Status; //设备在线检测结果
- BMS_RunInfo_Struct_t BMS_RunInfo; //BMS运行信息
- Device_CheckInfo_Struct_t BMS_CheckInfo; //BMS授权校验
- BMS_DesignInfo_Struct_t BMS_DesignInfo; //BMS设计信息
- BatterCellInfo_Struct_t BatteryCellInfo; //电池电芯放电信息
- Device_CheckInfo_Struct_t PBU_CheckInfo; //PBU授权校验
- PBU_ConfigParam_Struct_t PBU_ConfigParam; //PBU配置参数
- Device_CheckInfo_Struct_t HMI_CheckInfo; //HMI授权校验
- MC_GasMode_Struct_t MC_GasMode_Param; //转把模式控制参数
- MC_ConfigParam1_Struct_t MC_ConfigParam1; //MC配置参数1
- MC_ConfigParam2_Struct_t MC_ConfigParam2; //MC配置参数1
- MC_TorqueCorrectParam_Struct_t MC_TorqueCorrectParam; //力矩传感器校正信息
- MC_MotorParam_Struct_t MC_MotorParam; //马达参数
- MC_RunLog1_Struct_t MC_RunLog1; //MC历史信息1
- MC_RunLog2_Struct_t MC_RunLog2; //MC历史信息2
- uint8_t RunLogSaveIndex = 0; //MC历史信息存储序号,0:不存储,1:存储MC_RunLog1,2:存储MC_RunLog2
- uint8_t Secret_Key[8]; //授权验证密钥
- MC_MacInfo_Struct_t MC_MacInfo; //MC生产信息
- uint8_t UserString1[16]; //MC自定义字符串1
- uint8_t UserString2[16]; //MC自定义字符串2
- uint8_t UserString3[16]; //MC自定义字符串3
- MC_PowerOffBkp_Struct_t MC_PowerOffBkp; //MC关机时刻临时存储的数据
- Device_CheckInfo_Struct_t MC_CheckInfo; //MC授权信息
- MC_TE_SensorStatus_Struct_t MC_TE_SensorStatus; //TE传回传感器状态
- MC_TE_SensorData_Struct_t MC_TE_SensorData; //发给TE传感器结果
- uint16_t MC_TE_SyncClockFreqScan; //TE同步时钟频率
- TrueOrFalse_Flag_Struct_t TE_MCU_DataRefreshFlag = FALSE; //TE MCU数据更新标志
- MC_AssistParam_Struct_t MC_AssisParam; //助力输出计算参数
- uint8_t MC_WalkMode_Persent = 100; //推行模式最高转速百分比设置
- ComOK_Check_Struct_t IsComOK_TE = {FALSE, 0}; //TE通信状态标志
- ComOK_Check_Struct_t IsComOK_PBU = {FALSE, 0}; //PBU通信状态标志
- ComOK_Check_Struct_t IsComOK_HMI = {FALSE, 0}; //HMI通信状态标志
- ComOK_Check_Struct_t IsComOK_BMS = {FALSE, 0}; //BMS通信状态标志
- MC_AttitudeAngle_Struct_t MC_AttitudeAngle; //姿态传感器数值
- MC_RideLog_Struct_t MC_RideLog; //骑行历史
- MC_AvgPower_Struct_t MC_AvgPower; //助力平均功耗
- MCU_Manufacturter_Struct_t MCUManufacturer; //MCU生厂商
- uint16_t SpeedRatio; //传动比计算结果
- uint16_t HardwareVersion_AD=0; //硬件识别AD
- TrueOrFalse_Flag_Struct_t VersionIdentifyFinishedFlag = FALSE; //硬件识别结束标识
- TrueOrFalse_Flag_Struct_t PowerDown_SaveFlag = FALSE; //断电标识
- Bike_RatioCal_Struct_t Bike_RatioCalParam = {0,0,0,100,10,0,0};//传动比计算
- //BMS默认设计信息
- const BMS_DesignInfo_Struct_t BMS_DesignInfo_Default =
- {
- (uint16_t)10400, //设计容量
- (uint8_t)36, //设计电压
- {0,0,0,0,0,0,0,0} //电芯型号
- };
- //电池电芯默认放电参数
- const BatterCellInfo_Struct_t BatteryCellInfoDefault =
- {
- 15000,
- {
- 4152,
- 4104,
- 4089,
- 4078,
- 4070,
- 4064,
- 4059,
- 4055,
- 4051,
- 4047,
- 4043,
- 4039,
- 4034,
- 4028,
- 4021,
- 4013,
- 4004,
- 3995,
- 3984,
- 3973,
- 3962,
- 3951,
- 3940,
- 3930,
- 3919,
- 3910,
- 3901,
- 3892,
- 3883,
- 3875,
- 3867,
- 3858,
- 3850,
- 3843,
- 3834,
- 3826,
- 3817,
- 3809,
- 3799,
- 3790,
- 3780,
- 3769,
- 3759,
- 3748,
- 3737,
- 3727,
- 3716,
- 3706,
- 3696,
- 3687,
- 3677,
- 3669,
- 3660,
- 3652,
- 3645,
- 3637,
- 3630,
- 3623,
- 3617,
- 3611,
- 3605,
- 3599,
- 3593,
- 3587,
- 3582,
- 3576,
- 3572,
- 3566,
- 3561,
- 3556,
- 3551,
- 3546,
- 3540,
- 3534,
- 3528,
- 3523,
- 3516,
- 3510,
- 3503,
- 3495,
- 3487,
- 3479,
- 3470,
- 3461,
- 3451,
- 3440,
- 3428,
- 3415,
- 3401,
- 3387,
- 3374,
- 3365,
- 3356,
- 3346,
- 3336,
- 3325,
- 3313,
- 3296,
- 3271,
- 3219,
- 3100,
- }
- };
- //PBU默认配置
- const PBU_ConfigParam_Struct_t PBU_ConfigParam_Default =
- {
- 4, //档位数量
- MC_SUPPORT_DISABLE, //是否支持无PBU操作
- };
- //MC默认配置参数1,占用32bytes
- const MC_ConfigParam1_Struct_t MC_ConfigParam1_Default =
- {
- (uint8_t)0x55, //指拨模式参数,0x55-不支持
- (MC_StarMode_Struct_t)MC_StarMode_NORM, //启动模式
- (uint16_t)100, //停机时间 ms
- (uint8_t)25, //限速 km/h
- (uint8_t)3, //下降速度
- (uint8_t)16, //前齿数 T
- (uint8_t)16, //后齿数 T
- (uint8_t)15, //限流 A
- (uint8_t)135, //高温预警值 +40℃
- (uint8_t)165, //高温保护值 +40℃
- (MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE, //无码表支持,0x55-不支持,0x-AA支持
- (uint8_t)219, //轮胎周长 cm
- (uint8_t)2, //系列号,
- {100,100}, //ECO
- {100,100}, //NORM
- {100,100}, //SPORT
- {100,100}, //TURBO
- {100,100}, //SMART
- (uint8_t)1, //速度传感器极数
- (uint8_t)2, //踏频启动信号个数
- (MC_SpeedSignal_Struct_t)MC_SPEED_WHEEL_TRIG, //速度信号来源,0x55-车轮触发,0x-AA踏频估算,0x-EE通信获取车轮旋转周期
- (int8_t)0, //轮胎周长微调值
- (uint16_t)3000, //低压保护阈值,单位mV,针对单节电芯的设置值
- (uint8_t)60, //推行限速值,单位0.1km/h
- (uint8_t)135 //推行模式电机转速设置值
- };
- //MC配置参数2,占用32bytes
- const MC_ConfigParam2_Struct_t MC_ConfigParam2_Default =
- {
- (int16_t)0, //俯仰角零偏
- (int16_t)0, //横滚角零偏
- (MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE, //0x55-不支持,0x-AA支持
- (uint8_t)0x02, //前后灯模式
- (MC_LightVoltage_Struct_t)12, //前灯电压
- (MC_LightVoltage_Struct_t)12, //后灯电压
- (uint16_t)150, //超速报警
- (uint16_t)75, //尾灯控制高电平系数
- (uint16_t)150, //尾灯控制周期系数
- (int8_t)0, //限速起始偏移
- (int8_t)0, //限速结束偏移
- (int8_t)0, //限速偏移
- (uint8_t)0, //预留
- {100,100}, //ECO
- {100,100}, //NORM
- {100,100}, //SPORT
- {100,100}, //TURBO
- {100,100}, //SMART
- };
- const MC_TorqueCorrectParam_Struct_t MC_TorqueCorrectParam_Default =
- {
- (uint16_t)400,
- (uint8_t)100
- };
- //MC默认马达参数,占用16bytes
- #if defined (VOLANS_36V)
- const MC_MotorParam_Struct_t MC_MotorParam_Default =
- {
- (uint16_t)250, //W
- (uint16_t)1200, //rpm
- (uint16_t)200, //mohm
- (uint16_t)10, //mH
- (uint16_t)10, //mH
- (uint16_t)36000, //mV
- (uint8_t)36, //V
- (uint8_t)8
- };
- #elif defined (VOLANS_48V)
- const MC_MotorParam_Struct_t MC_MotorParam_Default =
- {
- (uint16_t)250, //W
- (uint16_t)1600, //rpm
- (uint16_t)200, //mohm
- (uint16_t)10, //mH
- (uint16_t)10, //mH
- (uint16_t)48000, //mV
- (uint8_t)48, //V
- (uint8_t)8
- };
- #endif
- //MC默认历史信息,占用48bytes
- const MC_RunLog1_Struct_t MC_RunLog1_Default =
- {
- (uint32_t)1, //开机次数
- (uint32_t)0, //运行总时间 min
- (uint16_t)0, //过流保次数
- (uint16_t)0, //低压保护次数
- (uint16_t)0, //高压保护次数
- (uint16_t)0, //堵转保护次数
- (uint16_t)0, //温度保护次数
- (uint16_t)0, //速度传感器错误次数
- (uint16_t)0, //力矩传感器错误次数
- (uint16_t)0, //霍尔传感器错误次数
- (uint16_t)0, //马达相线错误次数
- (uint16_t)0, //NTC错误次数
- (uint16_t)0, //BMS校验错误次数
- (uint16_t)0, //HMI校验错误次数
- (uint16_t)0, //PBU校验错误次数
- (uint8_t)65, //PCB历史最高温
- (uint8_t)65, //PCB历史最低温
- (uint32_t)0, //ODO里程
- (uint8_t)65, //绕组历史最高温
- (uint8_t)65, //绕组历史最低温
- (uint8_t)65, //MCU历史最高温
- (uint8_t)65, //MCU历史最低温
- (uint32_t)0 //ODO时间
- };
- //MC默认历史信息,占用24bytes
- const MC_RunLog2_Struct_t MC_RunLog2_Default =
- {
- (uint16_t)0, //MCU故障次数
- (uint16_t)0, //踏频传感器故障次数
- (uint16_t)0, //指拨传感器故障次数
- (uint16_t)0, //MOS短路次数
- (uint16_t)0, //电压异常次数
- (uint16_t)0, //电路故障次数
- (uint16_t)0, //TE MCU故障次数
- (uint16_t)0, //TE 电路故障次数
- };
- //平均功耗默认值
- const MC_AvgPower_Struct_t MC_AvgPower_Default =
- {
- (uint16_t)100,
- (uint16_t)160,
- (uint16_t)190,
- (uint16_t)270,
- (uint16_t)180
- };
- //MC骑行历史信息,占用32bytes
- const MC_RideLog_Struct_t MC_RideLog_Default =
- {
- (uint32_t)0,
- (uint32_t)0,
- (uint32_t)0,
- (uint32_t)0
- };
- //默认密钥,占用8bytes
- const uint8_t Secret_Key_Default[8] = "AVONITOM";
- const uint16_t Ver_Table[11] =
- {
- 372, 744, 1116, 1489, 1861, 2233, 2605, 2978, 3350, 3722, 4095
- };
- /************Volans助力参数************/
- //ECO档位助力参数
- const nGearParam_Struct_t GearParam_Default_ECO_Volans =
- {
- (uint16_t)392,
- (uint16_t)0,
- (uint16_t)100,
- (uint16_t)800,
- (uint8_t)2,
- (uint8_t)1,
- (uint16_t)512
- };
- //NORM档位助力参数
- const nGearParam_Struct_t GearParam_Default_NORM_Volans =
- {
- (uint16_t)786,
- (uint16_t)0,
- (uint16_t)100,
- (uint16_t)1000,
- (uint8_t)2,
- (uint8_t)1,
- (uint16_t)686
- };
- //SPORT档位助力参数
- const nGearParam_Struct_t GearParam_Default_SPORT_Volans =
- {
- (uint16_t)1309,
- (uint16_t)700,
- (uint16_t)100,
- (uint16_t)1300,
- (uint8_t)3,
- (uint8_t)1,
- (uint16_t)870
- };
- //TURBO档位助力参数
- const nGearParam_Struct_t GearParam_Default_TURBO_Volans =
- {
- (uint16_t)1964,
- (uint16_t)840,
- (uint16_t)100,
- (uint16_t)2100,
- (uint8_t)5,
- (uint8_t)1,
- (uint16_t)1024
- };
- //SMART档位助力参数
- const nGearParam_Struct_t GearParam_Default_SMART_Volans =
- {
- (uint16_t)0,
- (uint16_t)460,
- (uint16_t)100,
- (uint16_t)2100,
- (uint8_t)4,
- (uint8_t)1,
- (uint16_t)1024
- };
- /************Volans Plus助力参数************/
- //ECO档位助力参数
- const nGearParam_Struct_t GearParam_Default_ECO_Volans_Plus =
- {
- (uint16_t)452,
- (uint16_t)0,
- (uint16_t)100,
- (uint16_t)840,
- (uint8_t)2,
- (uint8_t)1,
- (uint16_t)512
- };
- //NORM档位助力参数
- const nGearParam_Struct_t GearParam_Default_NORM_Volans_Plus =
- {
- (uint16_t)954,
- (uint16_t)0,
- (uint16_t)100,
- (uint16_t)1200,
- (uint8_t)2,
- (uint8_t)1,
- (uint16_t)686
- };
- //SPORT档位助力参数
- const nGearParam_Struct_t GearParam_Default_SPORT_Volans_Plus =
- {
- (uint16_t)1504,
- (uint16_t)700,
- (uint16_t)100,
- (uint16_t)1590,
- (uint8_t)3,
- (uint8_t)1,
- (uint16_t)870
- };
- //TURBO档位助力参数
- const nGearParam_Struct_t GearParam_Default_TURBO_Volans_Plus =
- {
- (uint16_t)2354,
- (uint16_t)840,
- (uint16_t)100,
- (uint16_t)2100,
- (uint8_t)5,
- (uint8_t)1,
- (uint16_t)1024
- };
- //SMART档位助力参数
- const nGearParam_Struct_t GearParam_Default_SMART_Volans_Plus =
- {
- (uint16_t)0,
- (uint16_t)460,
- (uint16_t)100,
- (uint16_t)2100,
- (uint8_t)4,
- (uint8_t)1,
- (uint16_t)1024
- };
- /************Pegasi助力参数************/
- //ECO档位助力参数
- const nGearParam_Struct_t GearParam_Default_ECO_Pegasi =
- {
- (uint16_t)476,
- (uint16_t)560,
- (uint16_t)0,
- (uint16_t)937,
- (uint8_t)2,
- (uint8_t)1,
- (uint16_t)338
- };
- //NORM档位助力参数
- const nGearParam_Struct_t GearParam_Default_NORM_Pegasi =
- {
- (uint16_t)1142,
- (uint16_t)700,
- (uint16_t)0,
- (uint16_t)1250,
- (uint8_t)3,
- (uint8_t)2,
- (uint16_t)489
- };
- //SPORT档位助力参数
- const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi =
- {
- (uint16_t)1903,
- (uint16_t)840,
- (uint16_t)0,
- (uint16_t)1459,
- (uint8_t)4,
- (uint8_t)2,
- (uint16_t)686
- };
- //TURBO档位助力参数
- const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi =
- {
- (uint16_t)2857,
- (uint16_t)980,
- (uint16_t)0,
- (uint16_t)2100,
- (uint8_t)5,
- (uint8_t)3,
- (uint16_t)1024
- };
- //SMART档位助力参数
- const nGearParam_Struct_t GearParam_Default_SMART_Pegasi =
- {
- (uint16_t)0,
- (uint16_t)1200,
- (uint16_t)0,
- (uint16_t)2100,
- (uint8_t)4,
- (uint8_t)2,
- (uint16_t)1024
- };
- /************Pegasi Plus助力参数************/
- //ECO档位助力参数
- const nGearParam_Struct_t GearParam_Default_ECO_Pegasi_Plus =
- {
- (uint16_t)523,
- (uint16_t)560,
- (uint16_t)100,
- (uint16_t)871,
- (uint8_t)1,
- (uint8_t)1,
- (uint16_t)235
- };
- //NORM档位助力参数
- const nGearParam_Struct_t GearParam_Default_NORM_Pegasi_Plus =
- {
- (uint16_t)1198,
- (uint16_t)700,
- (uint16_t)100,
- (uint16_t)1055,
- (uint8_t)2,
- (uint8_t)1,
- (uint16_t)331
- };
- //SPORT档位助力参数
- const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi_Plus =
- {
- (uint16_t)1712,
- (uint16_t)840,
- (uint16_t)100,
- (uint16_t)1464,
- (uint8_t)3,
- (uint8_t)1,
- (uint16_t)512
- };
- //TURBO档位助力参数
- const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi_Plus =
- {
- (uint16_t)2861,
- (uint16_t)980,
- (uint16_t)100,
- (uint16_t)2100,
- (uint8_t)5,
- (uint8_t)2,
- (uint16_t)1024
- };
- //SMART档位助力参数
- const nGearParam_Struct_t GearParam_Default_SMART_Pegasi_Plus =
- {
- (uint16_t)0,
- (uint16_t)1850,
- (uint16_t)100,
- (uint16_t)2100,
- (uint8_t)4,
- (uint8_t)1,
- (uint16_t)1024
- };
- //全局函数定义
- //MC存储的参数初始化为默认值
- void Var_SetToDefaultParam(void)
- {
- //校验码
- strncpy((char*)MC_CheckInfo.CheckCode, (char*)"000000000000", 12);
-
- //校验密钥
- memcpy(Secret_Key, Secret_Key_Default, sizeof(Secret_Key_Default));
-
- //力矩传感器校正参数
- memcpy((uint8_t*)&MC_TorqueCorrectParam.StarData, (uint8_t*)&MC_TorqueCorrectParam_Default.StarData, sizeof(MC_TorqueCorrectParam_Default));
-
- //配置参数1
- memcpy((uint8_t*)&MC_ConfigParam1.GasCtrlMode_Param, (uint8_t*)&MC_ConfigParam1_Default.GasCtrlMode_Param, sizeof(MC_ConfigParam1_Default));
- MC_GasMode_Param.Mode = MC_ConfigParam1.GasCtrlMode_Param;
-
- //配置参数2
- memcpy((uint8_t*)&MC_ConfigParam2.ZeroAngle_Pitch, (uint8_t*)&MC_ConfigParam2_Default.ZeroAngle_Pitch, sizeof(MC_ConfigParam2_Default));
-
- //马达参数
- memcpy((uint8_t*)&MC_MotorParam.Rate_Power, (uint8_t*)&MC_MotorParam_Default.Rate_Power, sizeof(MC_MotorParam_Default));
-
- //电池放电参数
- memcpy((uint8_t*)&BatteryCellInfo.DesignCap, (uint8_t*)&BatteryCellInfoDefault.DesignCap, sizeof(BatterCellInfo_Struct_t));
- }
- //MC存储的记录初始化为0
- void Var_SetToDefaultLog(void)
- {
- //历史信息1
- memcpy((uint8_t*)&MC_RunLog1.PowerOnCnt, (uint8_t*)&MC_RunLog1_Default.PowerOnCnt, sizeof(MC_RunLog1_Default));
-
- //历史信息2
- memcpy((uint8_t*)&MC_RunLog2.MCU_FaultCnt, (uint8_t*)&MC_RunLog2_Default.MCU_FaultCnt, sizeof(MC_RunLog2_Default));
-
- //骑行历史信息
- memcpy((uint8_t*)&MC_RideLog.ODO_Km, (uint8_t*)&MC_RideLog_Default.ODO_Km, sizeof(MC_RideLog_Default));
-
- //平均功耗值
- MC_AvgPower = MC_AvgPower_Default;
- }
- //变量初始化
- void Var_Init(void)
- {
- //MC故障码初始化为0
- MC_ErrorCode.Code = 0;
-
- //TE故障码初始化为0
- MC_TE_SensorStatus.TE_ErrorCode.Code = 0;
-
- //设备在线检测结果初始化为离线
- DeviceOnLine_Status.Status = 0x07;
-
- //BMS校验信息初始化为0
- memset((uint8_t*)BMS_CheckInfo.MAC_ID, 0, sizeof(BMS_CheckInfo));
-
- //HMI校验信息初始化为0
- memset((uint8_t*)HMI_CheckInfo.MAC_ID, 0, sizeof(HMI_CheckInfo));
-
- //PBU校验信息初始化为0
- memset((uint8_t*)PBU_CheckInfo.MAC_ID, 0, sizeof(PBU_CheckInfo));
-
- //BMS设计信息初始化为默认值
- memcpy((uint8_t*)&BMS_DesignInfo.Capacity, (uint8_t*)&BMS_DesignInfo_Default.Capacity, sizeof(BMS_DesignInfo_Struct_t));
-
- //PBU配置参数初始化为默认值
- memcpy((uint8_t*)&PBU_ConfigParam.GearsNum, (uint8_t*)&PBU_ConfigParam_Default.GearsNum, sizeof(PBU_ConfigParam_Struct_t));
-
- //MC版本信息初始化,Mode和SN从EEPROM读取
- strncpy(MC_VerInfo.HW_Version, (char*)"QD007H. ", 16);
- #if defined BARD_250K
- strncpy(MC_VerInfo.FW_Version, (char*)"V6r2r2_20231121C", 16);
- #elif defined BARD_125K
- strncpy(MC_VerInfo.FW_Version, (char*)"V2r3r2_20231121C", 16);
- #else
- Error();
- #endif
-
- #if NormalWork
- MC_VerInfo.FW_Version[15] = '.';
- #endif
-
- //软件标识
- strncpy(Firmware_Special, (char*)"TC011000-MS0000-V0r0. ", 32);
- //编译时间
- do
- {
- uint8_t String_BuildDate[] = __DATE__; //Mouth Date Year,例如Jan 13 2022
- uint8_t String_BuildTime[] = __TIME__; //HH:MM:SS,例如18:00:00
- //年
- Firmware_Special[26] = (String_BuildDate[9] - '0') * 10 + (String_BuildDate[10] - '0');
- //月
- if(strncasecmp((char*)String_BuildDate, "Jan", 3) == 0) Firmware_Special[27] = 1;
- else if(strncasecmp((char*)String_BuildDate, "Feb", 3) == 0) Firmware_Special[27] = 2;
- else if(strncasecmp((char*)String_BuildDate, "Mar", 3) == 0) Firmware_Special[27] = 3;
- else if(strncasecmp((char*)String_BuildDate, "Apr", 3) == 0) Firmware_Special[27] = 4;
- else if(strncasecmp((char*)String_BuildDate, "May", 3) == 0) Firmware_Special[27] = 5;
- else if(strncasecmp((char*)String_BuildDate, "Jun", 3) == 0) Firmware_Special[27] = 6;
- else if(strncasecmp((char*)String_BuildDate, "Jul", 3) == 0) Firmware_Special[27] = 7;
- else if(strncasecmp((char*)String_BuildDate, "Aug", 3) == 0) Firmware_Special[27] = 8;
- else if(strncasecmp((char*)String_BuildDate, "Sep", 3) == 0) Firmware_Special[27] = 9;
- else if(strncasecmp((char*)String_BuildDate, "Oct", 3) == 0) Firmware_Special[27] = 10;
- else if(strncasecmp((char*)String_BuildDate, "Nov", 3) == 0) Firmware_Special[27] = 11;
- else if(strncasecmp((char*)String_BuildDate, "Dec", 3) == 0) Firmware_Special[27] = 12;
- else Firmware_Special[27] = 0;
- //日
- Firmware_Special[28] = (String_BuildDate[4] == 0x20 ? 0 : String_BuildDate[4] - '0') * 10 + (String_BuildDate[5] - '0');
- //时
- Firmware_Special[29] = (String_BuildTime[0] == 0x20 ? 0 : String_BuildTime[0] - '0') * 10 + (String_BuildTime[1] - '0');
- //分
- Firmware_Special[30] = (String_BuildTime[3] == 0x20 ? 0 : String_BuildTime[3] - '0') * 10 + (String_BuildTime[4] - '0');
- //秒
- Firmware_Special[31] = (String_BuildTime[6] == 0x20 ? 0 : String_BuildTime[6] - '0') * 10 + (String_BuildTime[7] - '0');
- }while(0);
-
- //MCU型号
- if(MCUManufacturer == NoName) MC_VerInfo.HW_Version[10] = '0';
- else if(MCUManufacturer == STM32F103RBT6) MC_VerInfo.HW_Version[10] = '1';
- else if(MCUManufacturer == APM32F103RBT6) MC_VerInfo.HW_Version[10] = '2';
- else if(MCUManufacturer == APM32F103RCT7) MC_VerInfo.HW_Version[10] = '2';
- else if(MCUManufacturer == HK32F103RBT6) MC_VerInfo.HW_Version[10] = '3';
- else if(MCUManufacturer == GD32F103RBT6) MC_VerInfo.HW_Version[10] = '4';
- else MC_VerInfo.HW_Version[10] = '0';
-
- //电机型号
- strncpy(MC_VerInfo.Mode, (char*)"VL6500 & VS7500.", 16);
-
- //电机序列号
- strncpy(MC_VerInfo.SN_Num, (char*)"0000000000000000", 16);
-
- //生产信息
- strncpy(MC_MacInfo.Manufacturer, (char*)"MOTINOVA", 8); //生产信息
- strncpy(MC_MacInfo.MacAddr, (char*)"WUHAN. ", 8);
- strncpy(MC_MacInfo.MacDate, (char*)"20210901", 8);
- //产品标签
- /*
- Digit1-2: MO(Battery:BT, Controller:CT, BB:BB, Charger:CG, Display:DP, Motor:MO)
- Digit3-4: MA(MOTINOVA)
- Digit5-10: 000001(Consecutive number)
- Digit11-17: V1.2202(Hardware version:"Version." + Date(YYMM))
- Digit18-24: /261022(Production Date:/DDMMYY)
- Digit25-26: FI(Customer:Fishcer)
- Digit27-31: 65347(Customer Article No.)
- */
- //strncpy(MC_TagInfo, (char*)"MOMA000001V1.2202/261022FI65347 ", 32);
- //MCU ID读取
- memcpy((uint8_t*)MC_CheckInfo.MAC_ID, (uint8_t*)(0x1FFFF7E8), 12);
-
- //MC存储数据初始化为默认值
- Var_SetToDefaultParam();
- Var_SetToDefaultLog();
-
- //传动比计算初始值,车速 = 电机转速 / 4.55 * 前牙盘 / 后牙盘* 周长(cm) * 60 / 1000,周长按cm算相当于放大100倍
- Bike_RatioCalParam.RatioDefault = (uint32_t)((MC_ConfigParam1.TeethNum_F * (MC_ConfigParam1.WheelSize + MC_ConfigParam1.WheelSizeAdj) * 60) << 10) / (4550 * MC_ConfigParam1.TeethNum_B);
- Bike_RatioCalParam.RatioResult = Bike_RatioCalParam.RatioDefault;
- }
- //根据电机型号系列号调用不同的助力参数
- void UpdateGearParam(uint8_t SerialNum)
- {
- //根据电机系列号初始化
- switch(SerialNum)
- {
- case 1://Volans
- {
- //助力参数初始化
- memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Volans.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Volans.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Volans.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Volans.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Volans.Gain_K, sizeof(nGearParam_Struct_t));
- if(MC_TorqueCorrectParam.CalibrateEnableFlag == 0xAA)
- {
- MC_AssisParam.Gear_ECO.Gain_K = 627;
- MC_AssisParam.Gear_NORM.Gain_K = 1021;
- MC_AssisParam.Gear_SPORT.Gain_K = 1570;
- MC_AssisParam.Gear_SPORT.TorqueApp_TH = 560;
- MC_AssisParam.Gear_TURBO.Gain_K = 2356;
- MC_AssisParam.Gear_TURBO.TorqueApp_TH = 560;
- }
- break;
- }
- case 2://Volans Plus
- {
- //助力参数初始化
- memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- if(MC_TorqueCorrectParam.CalibrateEnableFlag == 0xAA)
- {
- MC_AssisParam.Gear_ECO.Gain_K = 714;
- MC_AssisParam.Gear_NORM.Gain_K = 1142;
- MC_AssisParam.Gear_SPORT.Gain_K = 1908;
- MC_AssisParam.Gear_SPORT.TorqueApp_TH = 560;
- MC_AssisParam.Gear_TURBO.Gain_K = 2862;
- MC_AssisParam.Gear_TURBO.TorqueApp_TH = 560;
- }
- break;
- }
- case 3://Pegasi
- {
- //助力参数初始化
- memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Pegasi.Gain_K, sizeof(nGearParam_Struct_t));
- break;
- }
- case 4://Pegasi Plus
- {
- //助力参数初始化
- memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Pegasi_Plus.Gain_K, sizeof(nGearParam_Struct_t));
- break;
- }
- default:
- {
- //默认处理
-
- break;
- }
- }
- //根据配置参数调整各挡位助力比
- if((MC_ConfigParam1.UserAdjParam1_ECO.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_ECO.Assist_K_GAIN >= 80))
- MC_AssisParam.Gear_ECO.Gain_K = (MC_AssisParam.Gear_ECO.Gain_K * MC_ConfigParam1.UserAdjParam1_ECO.Assist_K_GAIN) / 100;
- if((MC_ConfigParam1.UserAdjParam1_NORM.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_NORM.Assist_K_GAIN >= 80))
- MC_AssisParam.Gear_NORM.Gain_K = (MC_AssisParam.Gear_NORM.Gain_K * MC_ConfigParam1.UserAdjParam1_NORM.Assist_K_GAIN) / 100;
- if((MC_ConfigParam1.UserAdjParam1_SPORT.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_SPORT.Assist_K_GAIN >= 80))
- MC_AssisParam.Gear_SPORT.Gain_K = (MC_AssisParam.Gear_SPORT.Gain_K * MC_ConfigParam1.UserAdjParam1_SPORT.Assist_K_GAIN) / 100;
- if((MC_ConfigParam1.UserAdjParam1_TURBO.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_TURBO.Assist_K_GAIN >= 80))
- MC_AssisParam.Gear_TURBO.Gain_K = (MC_AssisParam.Gear_TURBO.Gain_K * MC_ConfigParam1.UserAdjParam1_TURBO.Assist_K_GAIN) / 100;
- if((MC_ConfigParam1.UserAdjParam1_SMART.Assist_K_GAIN <= 120) && (MC_ConfigParam1.UserAdjParam1_SMART.Assist_K_GAIN >= 80))
- MC_AssisParam.Gear_SMART.TorqueApp_TH = (MC_AssisParam.Gear_SMART.TorqueApp_TH * MC_ConfigParam1.UserAdjParam1_SMART.Assist_K_GAIN) / 100;
-
- //根据配置参数调整各挡位加速度
- if(MC_ConfigParam1.UserAdjParam1_ECO.StarModel_GAIN <= 90)
- MC_AssisParam.Gear_ECO.AccCnt -= 1;
- else if(MC_ConfigParam1.UserAdjParam1_ECO.StarModel_GAIN >= 110)
- MC_AssisParam.Gear_ECO.AccCnt += 1;
- if(MC_ConfigParam1.UserAdjParam1_NORM.StarModel_GAIN <= 90)
- MC_AssisParam.Gear_NORM.AccCnt -= 1;
- else if(MC_ConfigParam1.UserAdjParam1_NORM.StarModel_GAIN >= 110)
- MC_AssisParam.Gear_NORM.AccCnt += 1;
- if(MC_ConfigParam1.UserAdjParam1_SPORT.StarModel_GAIN <= 90)
- MC_AssisParam.Gear_SPORT.AccCnt -= 1;
- else if(MC_ConfigParam1.UserAdjParam1_SPORT.StarModel_GAIN >= 110)
- MC_AssisParam.Gear_SPORT.AccCnt += 1;
- if(MC_ConfigParam1.UserAdjParam1_TURBO.StarModel_GAIN <= 90)
- MC_AssisParam.Gear_TURBO.AccCnt -= 1;
- else if(MC_ConfigParam1.UserAdjParam1_TURBO.StarModel_GAIN >= 110)
- MC_AssisParam.Gear_TURBO.AccCnt += 1;
- if(MC_ConfigParam1.UserAdjParam1_SMART.StarModel_GAIN <= 90) MC_AssisParam.Gear_SMART.AccCnt -= 1;
- else if(MC_ConfigParam1.UserAdjParam1_SMART.StarModel_GAIN >= 110)
- MC_AssisParam.Gear_SMART.AccCnt += 1;
-
- //根据配置参数调整各挡位最大力矩
- if((MC_ConfigParam2.UserAdjParam2_ECO.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_ECO.MaxTorque_K_GAIN >= 80))
- MC_AssisParam.Gear_ECO.Upper_Iq = (MC_AssisParam.Gear_ECO.Upper_Iq * MC_ConfigParam2.UserAdjParam2_ECO.MaxTorque_K_GAIN) / 100;
- if((MC_ConfigParam2.UserAdjParam2_NORM.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_NORM.MaxTorque_K_GAIN >= 80))
- MC_AssisParam.Gear_NORM.Upper_Iq = (MC_AssisParam.Gear_NORM.Upper_Iq * MC_ConfigParam2.UserAdjParam2_NORM.MaxTorque_K_GAIN) / 100;
- if((MC_ConfigParam2.UserAdjParam2_SPORT.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_SPORT.MaxTorque_K_GAIN >= 80))
- MC_AssisParam.Gear_SPORT.Upper_Iq = (MC_AssisParam.Gear_SPORT.Upper_Iq * MC_ConfigParam2.UserAdjParam2_SPORT.MaxTorque_K_GAIN) / 100;
- if((MC_ConfigParam2.UserAdjParam2_TURBO.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_TURBO.MaxTorque_K_GAIN >= 80))
- MC_AssisParam.Gear_TURBO.Upper_Iq = (MC_AssisParam.Gear_TURBO.Upper_Iq * MC_ConfigParam2.UserAdjParam2_TURBO.MaxTorque_K_GAIN) / 100;
- if((MC_ConfigParam2.UserAdjParam2_SMART.MaxTorque_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_SMART.MaxTorque_K_GAIN >= 80))
- MC_AssisParam.Gear_SMART.Upper_Iq = (MC_AssisParam.Gear_SMART.Upper_Iq * MC_ConfigParam2.UserAdjParam2_SMART.MaxTorque_K_GAIN) / 100;
-
- //根据配置参数调整各挡位最大电流
- if((MC_ConfigParam2.UserAdjParam2_ECO.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_ECO.MaxCurrent_K_GAIN >= 80))
- MC_AssisParam.Gear_ECO.CurrentMax_K = (MC_AssisParam.Gear_ECO.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_ECO.MaxCurrent_K_GAIN) / 100;
- if((MC_ConfigParam2.UserAdjParam2_NORM.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_NORM.MaxCurrent_K_GAIN >= 80))
- MC_AssisParam.Gear_NORM.CurrentMax_K = (MC_AssisParam.Gear_NORM.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_NORM.MaxCurrent_K_GAIN) / 100;
- if((MC_ConfigParam2.UserAdjParam2_SPORT.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_SPORT.MaxCurrent_K_GAIN >= 80))
- MC_AssisParam.Gear_SPORT.CurrentMax_K = (MC_AssisParam.Gear_SPORT.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_SPORT.MaxCurrent_K_GAIN) / 100;
- if((MC_ConfigParam2.UserAdjParam2_TURBO.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_TURBO.MaxCurrent_K_GAIN >= 80))
- MC_AssisParam.Gear_TURBO.CurrentMax_K = (MC_AssisParam.Gear_TURBO.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_TURBO.MaxCurrent_K_GAIN) / 100;
- if((MC_ConfigParam2.UserAdjParam2_SMART.MaxCurrent_K_GAIN <= 120) && (MC_ConfigParam2.UserAdjParam2_SMART.MaxCurrent_K_GAIN >= 80))
- MC_AssisParam.Gear_SMART.CurrentMax_K = (MC_AssisParam.Gear_SMART.CurrentMax_K * MC_ConfigParam2.UserAdjParam2_SMART.MaxCurrent_K_GAIN) / 100;
- }
|