You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

784 lines
29 KiB

#ifndef __CAN_APP_H
#define __CAN_APP_H
#include "common.h"
extern u16 CAN_AppUpdata_time;
void Can1_CommunicationInit(void);
void Can1_CommunicationTask(void);
//qiuadd
typedef struct {
uint8_t motorMcu1ProgState : 1; // Startbit=0, Length=1: 电机MCU1程序状态
uint8_t motorMcu2ProgState : 1; // Startbit=1, Length=1: 电机MCU2程序状态
uint8_t motorAssistMode : 2; // Startbit=2, Length=2: 电机的助力模式(0:无助力 1:踩踏助力 2:转把助力 )
uint8_t motorState : 4; // Startbit=4, Length=4: 电机状态(Min=0, Max=15)
uint8_t motorMaxFaultLevel : 2; // Startbit=8, Length=2: 电机最高故障等级(Min=0, Max=3)
uint8_t pedalAssistRatio : 8; // Startbit=10, Length=8: 踩踏助力比例(Unit=%,Min=0, Max=255 → 0~255%)
uint8_t motorAssistRatio : 8; // Startbit=18, Length=8: 踩踏助力比例(同上面表格可能重复,按实际调整) // 若表格是“踩踏助力比例”重复,这里需确认;假设是新字段:
uint16_t systemAssistTorque : 14; // Startbit=26, Length=14: 系统助力扭矩(Unit=NM,Min=0, Max=1638.3 → 0~16383/10)
int16_t motorBusVoltage : 12; // Startbit=40, Length=12: 电机母线电压(Unit=V,Factor=0.1 → 实际值=raw*0.1,Min=-200, Max=200)// 有符号,因 Min=-200
int16_t motorBusCurrent : 12; // Startbit=52, Length=12: 电机母线电流(Unit=A,Factor=0.1 → 实际值=raw*0.1)
}MCUCanSend01;
typedef union
{
MCUCanSend01 Part01;
} MCUCanUnion01;
typedef struct {
uint8_t mosUpperShortFault : 1; // 0:MOS 上管击穿故障
uint8_t mosLowerShortFault : 1; // 1:MOS 下管击穿故障
uint8_t hardwareOverCurrent : 1; // 2:硬件过流故障
uint8_t opAmpFault : 1; // 3:运放故障
uint8_t hallFault : 1; // 4:霍尔故障
uint8_t motorPhaseLoss : 1; // 5:电机缺相故障
uint8_t opAmpSeriousFault : 1; // 6:运放严重故障
uint8_t brakeFault : 1; // 7:刹车故障
uint8_t motorEncoderCommFault : 1; // 8:电机编码器通信故障
uint8_t motorEncoderLearnFault : 1; // 9:电机编码器强拉学习故障
uint8_t throttleFault : 1; // 10:转把故障
uint8_t hallAngleBigFault : 1; // 11:霍尔角度偏大故障
uint8_t powerDownFault : 1; // 12:掉电故障
uint8_t seriousUnderVoltage : 1; // 13:严重欠压故障
uint8_t headLightFault : 1; // 14:大灯故障
uint8_t turnSignalLightFault : 1; // 15:转向灯故障
uint8_t chipLowVoltage : 1; // 16:芯片低压故障
uint8_t clockSlowFault : 1; // 17:时钟频率慢故障
uint8_t clockFastFault : 1; // 18:时钟频率快故障
uint8_t clockAbnormalFault : 1; // 19:时钟异常故障
uint8_t stackAbnormalFault : 1; // 20:堆栈异常故障
uint8_t ramAbnormalFault : 1; // 21:RAM 异常故障
uint8_t flashAbnormal : 1; // 22: Flash 异常故障
uint8_t watchdogReset : 1; // 23: 看门狗复位故障
uint8_t cpuAbnormal : 1; // 24: CPU 异常故障
uint8_t driverSelfCheck : 1; // 25: 驱动 IC 使能口回检故障
uint8_t tailLampFault : 1; // 26: 尾灯故障
uint8_t ntcShort : 1; // 27: NTC 短路故障
uint8_t ntcOpen : 1; // 28: NTC 断路故障
uint8_t crankAngleComTimeOut : 1; // 29: 曲柄角度编码通信超时异常故障
uint8_t crankAngleFieldErr : 1; // 30: 曲柄角度编码磁场强度异常故障
uint8_t motorAngleComOverTimeOut : 1; // 31: 电机角度编码通信超时异常故障
uint8_t motorAngleFieldErr : 1; // 32: 电机角度编码磁场强度异常故障
uint8_t torqueComTimeOut : 1; // 33: 扭矩传感器通信超时故障
uint8_t torqueRangeErr : 1; // 34: 扭矩传感器超范围故障
uint8_t torqueDataErr : 1; // 35: 扭矩传感器数据有效性故障
uint8_t torqueDataNoChange : 1; // 36: 扭矩传感器数据不变故障
uint8_t torqueInitErr : 1; // 37: 扭矩传感器初始化故障
uint8_t wheelSpeedFault : 1; // 38: 轮速传感器故障
uint8_t CenElecCrolSpiHardErr : 1; // 39: 中控与电控 SPI 硬件故障
uint8_t CenElecCtrlSpiOverTimeOut : 1; // 40: 中控与电控 SPI 通信超时故障
uint8_t CenElecCtrlSpiCrcErr : 1; // 41: 中控与电控 SPI CRC 故障
uint8_t threePhaseZeroErr : 1; // 42: 三相零点故障
uint8_t busCurrentZeroErr : 1; // 43: 母线电流零点故障
uint8_t driverFault : 1; // 44: 驱动 IC 故障
uint8_t softwareOverCurrent : 1; // 45: 软件过流故障
uint8_t busUnderVolt : 1; // 46: 母线欠压故障
uint8_t busOverVolt : 1; // 47: 母线过压故障
uint8_t ElecCtrlLightOverTemp : 1; // 48: 电控一般过温故障
uint8_t ElecCtrlSeriousOverTemp : 1; // 49: 电控严重过温故障
uint8_t motorStallFault : 1; // 50: 电机堵转故障
uint8_t eepromFault : 1; // 51: EEPROM 故障
uint8_t dialKeyShort : 1; // 52: 指拨按键短路故障
uint8_t threePhaseUnbalance : 1; // 53: 三相不平衡故障
uint8_t batteryComTimeOut : 1; // 54: 电池通信超时故障
uint8_t batteryCrcErr : 1; // 55: 电池通信 CRC 故障
uint8_t reserved : 2; // 56: 预留
uint8_t dialComTimeOut : 1; // 58: 指拨通信超时故障
} MCUCanSend02;
typedef union
{
MCUCanSend02 Part02;
} MCUCanUnion02;
typedef struct {
uint8_t motorGeneralOverload : 1; // 0: 电机一般过载故障
uint8_t motorSeriousOverload : 1; // 1: 电机严重过载故障
uint8_t batteryPlugGeneral : 1; // 2: 电池接插件电流一般过载故障
uint8_t batteryPlugSerious : 1; // 3: 电池接插件电流严重过载故障
uint8_t crankAngleValidErr : 1; // 4: 曲柄角度编码数据有效性故障
uint8_t crankSpeedOverRange : 1; // 5: 曲柄速度超范围故障
uint8_t motorAngleValidErr : 1; // 6: 电机角度编码数据有效性故障
uint8_t currentSensorErr : 1; // 7: 电流传感器故障
uint8_t power5VGood : 1; // 8: 5VPowerGood
uint8_t power12VGood : 1; // 9: 12VPowerGood
uint32_t warnCode : 16; // 32~47: 警告码(示例行 10 对应值 4194303)
uint32_t faultCode : 16; // 48~63: 故障码(示例行 32、48 对应值 65535)
} MCUCanSend03;
typedef union
{
MCUCanSend03 Part03;
} MCUCanUnion03;
typedef struct {
uint16_t pedalSpeed;//踏频转速
uint16_t motorSpeed;//电机转速
uint16_t wheelSpeed;//轮速
uint16_t vehicleSpeed;//瞬时车速
} MCUCanSend04;
typedef union
{
MCUCanSend04 Part04;
} MCUCanUnion04;
typedef struct {
uint16_t averageSpeed;//平均车速
uint16_t maxSpeed;//最大车速
uint16_t wheelDiameter;//周长
} MCUCanSend05;
typedef union
{
MCUCanSend05 Part05;
} MCUCanUnion05;
typedef struct {
uint8_t gear1Ratio;//1档比例
uint8_t gear2Ratio;//2档比例
uint8_t gear3Ratio;//3档比例
uint8_t gear4Ratio;//4档比例
uint8_t gear5Ratio;//5档比例
uint8_t gear6Ratio;//6档比例
uint16_t reserved;//预留
} MCUCanSend06;
typedef union
{
MCUCanSend06 Part06;
} MCUCanUnion06;
typedef struct {
uint16_t gear1RemainMile;//1档比例剩余里程
uint16_t gear2RemainMile;//2档比例剩余里程
uint16_t gear3RemainMile;//3档比例剩余里程
uint16_t gear4RemainMile;//4档比例剩余里程
uint16_t gear5RemainMile;//5档比例剩余里程
uint16_t gear6RemainMile;//6档比例剩余里程
uint16_t reserved;//预留
} MCUCanSend07;
typedef union
{
MCUCanSend07 Part07;
} MCUCanUnion07;
typedef struct {
uint32_t pedalTurnAll;//踩踏总圈数
uint32_t wheelTurnAll;//轮圈总群数
} MCUCanSend08;
typedef union
{
MCUCanSend08 Part08;
} MCUCanUnion08;
typedef struct {
uint32_t ridingSingleTime;//骑行单词时间
uint32_t ridingAllTime;//骑行总时间
} MCUCanSend09;
typedef union
{
MCUCanSend09 Part09;
} MCUCanUnion09;
typedef struct {
uint32_t ridingSingleMile;//骑行单词里程
uint32_t ridingAllMile;//骑行总里程
} MCUCanSend0A;
typedef union
{
MCUCanSend0A Part0A;
} MCUCanUnion0A;
typedef struct {
uint16_t pedalTorqueFilter;//踏板滤波扭矩
uint16_t motorTorque;//电机输出扭矩
uint16_t torqueZeroFst;//扭矩零点1
uint16_t torqueZeroSed;//扭矩零点2
} MCUCanSend0B;
typedef union
{
MCUCanSend0B Part0B;
} MCUCanUnion0B;
typedef struct {
uint8_t blindingFlag;//仪表连接成功标志
uint8_t authenticationFlag;//鉴权成功标志
uint32_t bootTime;//开机次数
uint16_t duNTC;//三合一NTC
} MCUCanSend0C;
typedef union
{
MCUCanSend0C Part0C;
} MCUCanUnion0C;
typedef struct {
uint8_t gearMaxLevel;//档位配置最大扭矩
uint8_t gearAuxiliaryLevel;//档位配置辅助等级
uint8_t gearRoadCondition;//档位路况识别灵敏度
uint8_t gearStartupSensitivity;//档位配置启动响应
} MCUCanSend0D;
typedef union
{
MCUCanSend0D Part0D;
} MCUCanUnion0D;
typedef struct {
uint16_t motorTemperature;//电机温度
uint16_t mcuTemperature;//控制器温度
uint16_t rotorAngleZero;//转子零位角度
uint16_t rotorAngle;//转子实时角度
} MCUCanSend0E;
typedef union
{
MCUCanSend0E Part0E;
} MCUCanUnion0E;
typedef struct {
uint16_t leftPedalAD;//左踏板原始AD值
uint16_t rightPedalAD;//右踏板原始AD值
uint16_t torqueSeorTemperature1;//扭矩传感器温度数据1
uint16_t torqueSeorTemperature2;//扭矩传感器温度数据2
} MCUCanSend0F;
typedef union
{
MCUCanSend0F Part0F;
} MCUCanUnion0F;
typedef struct {
uint16_t pedalAngle;//曲柄角度
uint16_t motorMaxTorque;//电机最大允许扭矩
uint16_t faultLimit;//故障允许输出
uint16_t gearRatio;//齿轮变速比
} MCUCanSend10;
typedef union
{
MCUCanSend10 Part10;
} MCUCanUnion10;
typedef struct {
uint32_t sysClock;//系统运行时钟
} MCUCanSend11;
typedef union
{
MCUCanSend11 Part11;
} MCUCanUnion11;
typedef struct {
uint16_t gear1Range :12;//档位1自学习剩余续航里程
uint16_t gear2Range :12;//档位2自学习剩余续航里程
uint16_t gear3Range :12;//档位3自学习剩余续航里程
uint16_t gear4Range :12;//档位4自学习剩余续航里程
uint16_t gear5Range :12;//Autio自学习剩余续航里程
} MCUCanSend13;
typedef union
{
MCUCanSend13 Part13;
} MCUCanUnion13;
typedef struct {
uint8_t funcCode;//功能码
uint16_t regsAddr;//寄存器地址
uint8_t regsNum;//返回数据个数
uint16_t regs1Data;//数据1
uint16_t regs2Data;//数据2
} MCUCanSend4F;
typedef union
{
MCUCanSend4F Part4F;
} MCUCanUnion4F;
typedef struct {
uint8_t idle :2; //是否空闲 0:工作 1:空闲
uint32_t heartbeatCnt :32;//心跳
uint32_t reserved :28;//保留
} MCUCanSend25;
typedef union
{
MCUCanSend25 Part25;
} MCUCanUnion25;
typedef struct {
uint8_t resetAck :8; //恢复出厂设置应答
} MCUCanSend2A;
typedef union
{
MCUCanSend2A Part2A;
} MCUCanUnion2A;
typedef struct {
uint32_t singleCalorie :32; //单次卡路里
uint32_t totalCalorie :32; //总卡路里
} MCUCanSend15;
typedef union
{
MCUCanSend15 Part15;
} MCUCanUnion15;
typedef struct {
uint8_t bikeCode[4]; //车型编码
uint16_t perimeter; //轮胎周长
uint16_t diskTorque; //牙盘扭矩
} MCUCanSend16;
typedef union
{
MCUCanSend16 Part16;
} MCUCanUnion16;
typedef struct {
uint16_t crankRealTimeTorque; //曲柄实时力矩
uint16_t loopAverTorque; //圈平均力矩
uint16_t realTimeSpeed; //实时速度
uint8_t crankRealTimeAngle; //曲柄实时角度
uint8_t pedalSpeed; //踏频
} MCUCanSend17;
typedef union
{
MCUCanSend17 Part17;
} MCUCanUnion17;
typedef struct {
uint16_t pulseRechgCurr :16; //回馈电流
uint8_t shifterGear :8; //后变速器档位
uint8_t throttle :2; //是否存在转把
uint16_t throttleVolt :14; //是否存在转把
uint8_t halfSlopeStartSens :4; //半坡起步灵敏度
uint8_t sensorMode :2; //助力模式状态
} MCUCanSend18;
typedef union
{
MCUCanSend18 Part18;
} MCUCanUnion18;
typedef struct {
uint8_t autoYorN :1; //是否支持auto模式
uint8_t holdYorN :1; //是否支持hold模式
uint8_t rearGearShiftYorN :1; //是否支持后变速档位
uint8_t sellAreaYorN :1; //是否支持销售区域配置
uint8_t halfSlopeStart :1; //是否支持半坡起步功能
uint8_t boostYorN :1; //是否支持Boost模式
uint8_t sensorMode :1; //是否支持助理传感器模式切换
uint8_t cruiseControl :1; //是否支持定速巡航功能
} MCUCanSend19;
typedef union
{
MCUCanSend19 Part19;
} MCUCanUnion19;
typedef struct {
uint16_t areaSitua :16; //销售地区状态
} MCUCanSend1A;
typedef union
{
MCUCanSend1A Part1A;
} MCUCanUnion1A;
typedef struct {
uint8_t boostAllow :1; //当前是否允许进入Boost模式,会动态变化
uint16_t boostLeftTime :11; //当前boost模式的剩余时间,单位:秒,给以后动态显示倒记时用。
uint16_t boostNextAllowTime :12; //距离下次允许Boost的时间
uint8_t cruiseControlFlag :1; //是否处于定速巡航状态
uint8_t cruiseControlOutCase :4; //定速巡航退出原因
uint16_t cruiseControlSpeed :16; //定速巡航速度
} MCUCanSend1B;
typedef union
{
MCUCanSend1B Part1B;
} MCUCanUnion1B;
typedef struct {
uint16_t handLearnRemainMile :12; //转把自学习剩余续航里程
} MCUCanSend1C;
typedef union
{
MCUCanSend1C Part1C;
} MCUCanUnion1C;
typedef struct {
uint16_t motor_torque_red :16; //电机输出经减速器后的扭矩
uint16_t motor_speed_red :16; //电机输出经减速器后的转速
uint32_t reserved :32; //踏频AB脉冲
} MCUCanSend1D;
typedef union
{
MCUCanSend1D Part1D;
} MCUCanUnion1D;
typedef struct {
uint8_t number :8;
uint8_t gear :8;
uint8_t total_gears :8;
} MCUCanSendS40; //s2a_shifter_status
typedef union
{
MCUCanSendS40 PartS40;
} MCUCanUnionS40;
typedef struct {
uint8_t pedal_pulse_param :8; //踏板转一圈时的脉冲个数(属于配置项,随硬件变化,A+B相单边沿触发方式)
uint8_t wheel_pulse_param :8; //轮子转一圈时的脉冲个数(属于配置项,随硬件变化,A+B相单边沿触发方式)
uint8_t wheel_pulse_delta :8; //踏板脉冲数达到一圈时的轮子脉冲数增量(比如踏板单圈36个脉冲,当踏板脉冲数达到36个时记录当前轮子脉冲个数,然后计算上一次踏板脉冲达到36个时记录的轮子脉冲个数的差值,并上报此帧)
} MCUCanSend6B; //新增时间帧:踏频满一圈后触发
typedef union
{
MCUCanSend6B Part6B;
} MCUCanUnion6B;
typedef struct {
MCUCanUnion01 CanUnion01;
MCUCanUnion02 CanUnion02;
MCUCanUnion03 CanUnion03;
MCUCanUnion04 CanUnion04;
MCUCanUnion05 CanUnion05;
MCUCanUnion06 CanUnion06;
MCUCanUnion07 CanUnion07;
MCUCanUnion08 CanUnion08;
MCUCanUnion09 CanUnion09;
MCUCanUnion0A CanUnion0A;
MCUCanUnion0B CanUnion0B;
MCUCanUnion0C CanUnion0C;
MCUCanUnion0D CanUnion0D;
MCUCanUnion0E CanUnion0E;
MCUCanUnion0F CanUnion0F;
MCUCanUnion10 CanUnion10;
MCUCanUnion11 CanUnion11;
MCUCanUnion13 CanUnion13;
MCUCanUnion4F CanUnion4F;
MCUCanUnion25 CanUnion25;
MCUCanUnion2A CanUnion2A;
MCUCanUnion15 CanUnion15;
MCUCanUnion16 CanUnion16;
MCUCanUnion17 CanUnion17;
MCUCanUnion18 CanUnion18;
MCUCanUnion19 CanUnion19;
MCUCanUnion1A CanUnion1A;
MCUCanUnion1B CanUnion1B;
MCUCanUnion1C CanUnion1C;
MCUCanUnion1D CanUnion1D;
MCUCanUnionS40 CanUnionS40;
MCUCanUnion6B CanUnion6B;
} MCUCanSend_DataDef;
/*********以下为MCU多包内容********/
typedef struct
{
u32 vehicle_name[128];
u32 tire_specification[128];
u32 battery_voltage;
u32 motor_power;
u32 battery_capacity;
u32 vehiclemodel_code;
u16 tire_circumference;
u8 support_password;
u16 sales_territory;
} MULECUtoMCU_ConfigInfo_DataDef;
typedef struct {
uint16_t part_code_char1 : 16; // Startbit=0, Length=16: 部件编码第1个字符
uint16_t part_code_char2 : 16; // Startbit=16, Length=16: 部件编码第2个字符
uint16_t part_code_char3 : 16; // Startbit=32, Length=16: 部件编码第3个字符
uint16_t software_version : 16; // Startbit=48, Length=16: 软件版本
uint16_t protocol_version : 16; // Startbit=64, Length=16: 协议版本
uint16_t timestampL : 16;
uint16_t timestampH : 16;
// uint32_t timestamp : 32; // Startbit=80, Length=32: 时间戳
uint8_t assembly_code[14]; // Startbit=112, Length=112: 三合一总成编码 112/8=14
}MULMCUCanSend01;
typedef union
{
MULMCUCanSend01 Part01;
} MULMCUCanUnion01;
// 定义 mcu_fault_snapshot 结构体
typedef struct {
uint16_t software_version; // 软件版本号 (16位)
uint16_t device_address; // 设备地址 (16位)
uint8_t packets_per_block; // 每块数据包数 (8位)
uint8_t block_position; // 块位置 (8位)
uint8_t packet_count; // 数据包数 (8位)
uint8_t packet_size; // 数据包大小 (8位)
uint16_t total_fault_count; // 保存的故障总次数 (16位)
uint8_t reserved[6]; // 预留 (48位 = 6字节)
uint16_t bus_voltage; // 母线电压 (16位)
uint16_t bus_current; // 母线电流 (16位)
uint16_t bus_current_zero; // 母线电流零点 (16位)
uint16_t phase_a_current; // A相电流 (16位)
uint16_t phase_b_current; // B相电流 (16位)
uint16_t phase_c_current; // C相电流 (16位)
uint16_t phase_a_current_zero;// A相电流零点 (16位)
uint16_t phase_b_current_zero;// B相电流零点 (16位)
uint16_t phase_c_current_zero;// C相电流零点 (16位)
uint16_t ntc_temperature; // 电控板NTC温度 (16位)
uint16_t ad_reserved; // AD口预留 (16位)
uint16_t vq_command; // Vq给定值 (16位)
uint16_t vq_feedback; // Vq反馈值 (16位)
uint16_t iq_command; // Iq给定值 (16位)
uint16_t iq_feedback; // Iq反馈值 (16位)
uint16_t id_command; // Id给定值 (16位)
uint16_t id_feedback; // Id反馈值 (16位)
uint16_t vd_feedback; // Vd反馈值 (16位)
uint16_t motor_speed; // 电机转速 (16位)
uint16_t max_phase_current; // 上电出现过的最大相电流 (16位)
uint16_t fault_code1; // 电控故障码1 (16位)
uint16_t fault_code2; // 电控故障码2 (16位)
uint16_t fault_code3; // 电控故障码3 (16位)
uint16_t fault_code4; // 电控故障码4 (16位)
uint16_t fault_code5; // 电控故障码5 (16位)
uint16_t system_time; // 系统时间 (16位)
uint16_t torque_data1; // 扭矩数据1 (16位)
uint16_t torque_data2; // 扭矩数据2 (16位)
uint16_t crankshaft_speed; // 曲柄转速 (16位)
uint16_t vehicle_speed; // 车速 (16位) - 注意:单位是0.1 km/h
} MULMCUCanSend02;;
typedef union
{
MULMCUCanSend02 Part02;
} MULMCUCanUnion02;
// 定义 Riding_gear1_cfg 结构体
typedef struct {
// 完整范围配置
uint8_t full_range_assist_level_min; // 完整范围-辅助等级最小值 (8位)
uint8_t full_range_assist_level_max; // 完整范围-辅助等级最大值 (8位)
uint8_t full_range_max_torque_min; // 完整范围-最大扭矩最小值 (8位)
uint8_t full_range_max_torque_max; // 完整范围-最大扭矩最大值 (8位)
uint8_t full_range_start_response_min; // 完整范围-启动响应最小值 (8位)
uint8_t full_range_start_response_max; // 完整范围-启动响应最大值 (8位)
// 档位控制
uint8_t gear_count; // 档位数量 (8位)
uint8_t current_gear_setting; // 设置/读取档位 (8位)
// 档位1 详细配置
uint8_t gear1_assist_level_min; // 档位1-辅助等级可配置范围最小值 (8位)
uint8_t gear1_assist_level_max; // 档位1-辅助等级可配置范围最大值 (8位)
uint8_t gear1_assist_level_step; // 档位1-辅助等级配置步长 (8位)
uint8_t gear1_assist_level_default; // 档位1-辅助等级默认值 (8位)
uint8_t gear1_assist_level_current; // 档位1-辅助等级当前值 (8位)
uint8_t gear1_max_torque_min; // 档位1-最大扭矩可配置范围最小值 (8位)
uint8_t gear1_max_torque_max; // 档位1-最大扭矩可配置范围最大值 (8位)
uint8_t gear1_max_torque_step; // 档位1-最大扭矩配置步长 (8位)
uint8_t gear1_max_torque_default; // 档位1-最大扭矩默认值 (8位)
uint8_t gear1_max_torque_current; // 档位1-最大扭矩当前值 (8位)
uint8_t gear1_start_response_min; // 档位1-启动响应可配置范围最小值 (8位)
uint8_t gear1_start_response_max; // 档位1-启动响应可配置范围最大值 (8位)
uint8_t gear1_start_response_step; // 档位1-启动响应配置步长 (8位)
uint8_t gear1_start_response_default; // 档位1-启动响应默认值 (8位)
uint8_t gear1_start_response_current; // 档位1-启动响应当前值 (8位)
} MULMCUCanSend03;
typedef union
{
MULMCUCanSend03 Part03;
} MULMCUCanUnion03;
// 定义 Riding_gear2_cfg 结构体
typedef struct {
// 完整范围配置
uint8_t full_range_assist_level_min; // 完整范围-辅助等级最小值 (8位)
uint8_t full_range_assist_level_max; // 完整范围-辅助等级最大值 (8位)
uint8_t full_range_max_torque_min; // 完整范围-最大扭矩最小值 (8位)
uint8_t full_range_max_torque_max; // 完整范围-最大扭矩最大值 (8位)
uint8_t full_range_start_response_min; // 完整范围-启动响应最小值 (8位)
uint8_t full_range_start_response_max; // 完整范围-启动响应最大值 (8位)
// 档位控制
uint8_t gear_count; // 档位数量 (8位)
uint8_t current_gear_setting; // 设置/读取档位 (8位)
// 档位2 详细配置
uint8_t gear2_assist_level_min; // 档位2-辅助等级可配置范围最小值 (8位)
uint8_t gear2_assist_level_max; // 档位2-辅助等级可配置范围最大值 (8位)
uint8_t gear2_assist_level_step; // 档位2-辅助等级配置步长 (8位)
uint8_t gear2_assist_level_default; // 档位2-辅助等级默认值 (8位)
uint8_t gear2_assist_level_current; // 档位2-辅助等级当前值 (8位)
uint8_t gear2_max_torque_min; // 档位2-最大扭矩可配置范围最小值 (8位)
uint8_t gear2_max_torque_max; // 档位2-最大扭矩可配置范围最大值 (8位)
uint8_t gear2_max_torque_step; // 档位2-最大扭矩配置步长 (8位)
uint8_t gear2_max_torque_default; // 档位2-最大扭矩默认值 (8位)
uint8_t gear2_max_torque_current; // 档位2-最大扭矩当前值 (8位)
uint8_t gear2_start_response_min; // 档位2-启动响应可配置范围最小值 (8位)
uint8_t gear2_start_response_max; // 档位2-启动响应可配置范围最大值 (8位)
uint8_t gear2_start_response_step; // 档位2-启动响应配置步长 (8位)
uint8_t gear2_start_response_default; // 档位2-启动响应默认值 (8位)
uint8_t gear2_start_response_current; // 档位2-启动响应当前值 (8位)
} MULMCUCanSend04;
typedef union
{
MULMCUCanSend04 Part04;
} MULMCUCanUnion04;
// 定义 Riding_gear3_cfg 结构体
typedef struct {
// 完整范围配置
uint8_t full_range_assist_level_min; // 完整范围-辅助等级最小值 (8位)
uint8_t full_range_assist_level_max; // 完整范围-辅助等级最大值 (8位)
uint8_t full_range_max_torque_min; // 完整范围-最大扭矩最小值 (8位)
uint8_t full_range_max_torque_max; // 完整范围-最大扭矩最大值 (8位)
uint8_t full_range_start_response_min; // 完整范围-启动响应最小值 (8位)
uint8_t full_range_start_response_max; // 完整范围-启动响应最大值 (8位)
// 档位控制
uint8_t gear_count; // 档位数量 (8位)
uint8_t current_gear_setting; // 设置/读取档位 (8位)
// 档位3 详细配置
uint8_t gear3_assist_level_min; // 档位3-辅助等级可配置范围最小值 (8位)
uint8_t gear3_assist_level_max; // 档位3-辅助等级可配置范围最大值 (8位)
uint8_t gear3_assist_level_step; // 档位3-辅助等级配置步长 (8位)
uint8_t gear3_assist_level_default; // 档位3-辅助等级默认值 (8位)
uint8_t gear3_assist_level_current; // 档位3-辅助等级当前值 (8位)
uint8_t gear3_max_torque_min; // 档位3-最大扭矩可配置范围最小值 (8位)
uint8_t gear3_max_torque_max; // 档位3-最大扭矩可配置范围最大值 (8位)
uint8_t gear3_max_torque_step; // 档位3-最大扭矩配置步长 (8位)
uint8_t gear3_max_torque_default; // 档位3-最大扭矩默认值 (8位)
uint8_t gear3_max_torque_current; // 档位3-最大扭矩当前值 (8位)
uint8_t gear3_start_response_min; // 档位3-启动响应可配置范围最小值 (8位)
uint8_t gear3_start_response_max; // 档位3-启动响应可配置范围最大值 (8位)
uint8_t gear3_start_response_step; // 档位3-启动响应配置步长 (8位)
uint8_t gear3_start_response_default; // 档位3-启动响应默认值 (8位)
uint8_t gear3_start_response_current; // 档位3-启动响应当前值 (8位)
} MULMCUCanSend05;
typedef union
{
MULMCUCanSend05 Part05;
} MULMCUCanUnion05;
// 定义 Riding_gear4_cfg 结构体
typedef struct {
// 完整范围配置
uint8_t full_range_assist_level_min; // 完整范围-辅助等级最小值 (8位)
uint8_t full_range_assist_level_max; // 完整范围-辅助等级最大值 (8位)
uint8_t full_range_max_torque_min; // 完整范围-最大扭矩最小值 (8位)
uint8_t full_range_max_torque_max; // 完整范围-最大扭矩最大值 (8位)
uint8_t full_range_start_response_min; // 完整范围-启动响应最小值 (8位)
uint8_t full_range_start_response_max; // 完整范围-启动响应最大值 (8位)
// 档位控制
uint8_t gear_count; // 档位数量 (8位)
uint8_t current_gear_setting; // 设置/读取档位 (8位)
// 档位4 详细配置
uint8_t gear4_assist_level_min; // 档位4-辅助等级可配置范围最小值 (8位)
uint8_t gear4_assist_level_max; // 档位4-辅助等级可配置范围最大值 (8位)
uint8_t gear4_assist_level_step; // 档位4-辅助等级配置步长 (8位)
uint8_t gear4_assist_level_default; // 档位4-辅助等级默认值 (8位)
uint8_t gear4_assist_level_current; // 档位4-辅助等级当前值 (8位)
uint8_t gear4_max_torque_min; // 档位4-最大扭矩可配置范围最小值 (8位)
uint8_t gear4_max_torque_max; // 档位4-最大扭矩可配置范围最大值 (8位)
uint8_t gear4_max_torque_step; // 档位4-最大扭矩配置步长 (8位)
uint8_t gear4_max_torque_default; // 档位4-最大扭矩默认值 (8位)
uint8_t gear4_max_torque_current; // 档位4-最大扭矩当前值 (8位)
uint8_t gear4_start_response_min; // 档位4-启动响应可配置范围最小值 (8位)
uint8_t gear4_start_response_max; // 档位4-启动响应可配置范围最大值 (8位)
uint8_t gear4_start_response_step; // 档位4-启动响应配置步长 (8位)
uint8_t gear4_start_response_default; // 档位4-启动响应默认值 (8位)
uint8_t gear4_start_response_current; // 档位4-启动响应当前值 (8位)
} MULMCUCanSend06;
typedef union
{
MULMCUCanSend06 Part06;
} MULMCUCanUnion06;
// 定义 apack_sn 结构体
typedef struct {
uint8_t sn_length; // 嘉宏SN码长度,不包含结束符 (8位)
char JHEK0005_SN[33];
// char sn_part_material[13]; //物料编码
// char sn_separator_1[1]; //分隔符1
// char sn_part_reserve[2]; //预留
// char sn_part_prod_date[8]; //生产年月日
// char sn_separator_2[1]; //分隔符2
// char sn_part_batch[2]; //生产批次
// char sn_part_seq[6]; //六位编码
char padding[30]; // 补0字段:30字节(使总长度=64)
} MULMCUCanSend07;
typedef union
{
MULMCUCanSend07 Part07;
} MULMCUCanUnion07;
// 定义 frame_info 结构体
typedef struct {
uint8_t frame_code[16]; // 车架码,字符串形式 (128位 = 16字节)
} MULMCUCanSend08;
typedef union
{
MULMCUCanSend08 Part08;
} MULMCUCanUnion08;
typedef struct {
MULMCUCanUnion01 CanUnion01;
MULMCUCanUnion02 CanUnion02;
MULMCUCanUnion03 CanUnion03;
MULMCUCanUnion04 CanUnion04;
MULMCUCanUnion05 CanUnion05;
MULMCUCanUnion06 CanUnion06;
MULMCUCanUnion07 CanUnion07;
MULMCUCanUnion08 CanUnion08;
} MulPcksMCUCanSend_DataDef;
extern MCUCanSend_DataDef MCUCanSend;
extern MulPcksMCUCanSend_DataDef MULMCUCanSend;
extern MULECUtoMCU_ConfigInfo_DataDef mulecutomcu;
extern MULMCUCanSend01 mcu_prj_info;
extern MULMCUCanSend02 mcu_fault_snapshot;
extern MULMCUCanSend03 riding_gear1_cfg;
extern MULMCUCanSend04 riding_gear2_cfg;
extern MULMCUCanSend05 riding_gear3_cfg;
extern MULMCUCanSend06 riding_gear4_cfg;
extern MULMCUCanSend07 apack_sn;
extern MULMCUCanSend08 frame_info;
typedef struct {
uint8_t vehicle_name[16]; // 车辆名称(16字节字符串)
uint8_t tire_spec[16]; // 轮胎规格(16字节字符串)
uint8_t battery_voltage[8]; // 电池电压(8字节无符号64位整数)
uint8_t motor_power[8]; // 电机功率(8字节无符号64位整数)
uint8_t battery_capacity[10]; // 电池容量(10字节数组)
uint8_t model_code[10]; // 车型编码(10字节数组)
uint16_t tire_circumference; // 轮胎周长(2字节无符号16位整数)
uint8_t support_password; // 是否支持密码(1字节无符号8位整数)
uint16_t sales_area; // 销售区域(2字节无符号16位整数)
} MULMCUCanReceive61;
extern MULMCUCanReceive61 config_info;
typedef struct {
uint8_t vin[16]; // 车辆名称(16字节字符串)
} MULMCUCanReceive62;
extern MULMCUCanReceive62 frame_info_rx;
#endif