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.
 
 
 

1086 lines
40 KiB

#ifndef __CAN_H
#define __CAN_H
#include "stm32f10x.h"
#include "ProtocolGenfo.h"
#include "Common_Type.h"
#include "main.h"
//#include "App_Curr.h"
//#include "App_Driver.h"
//#include "App_MotorGiven.h"
//////////////////////////////////////////////////////////////////////////////////
#define IAP_ADDR 0x08000000 //IAP首地址 0K-19K
#define APP_ADDR 0x08005000 //APP首地址 20K-119K
#define UPGRADE_FLAG_ADDR 0x08039000 //烧写标志操作页 228K
//#define BIN_ADDR 0x08020000 //BIN首地址 129K-228K
//#define BOOT_VERSION_ADDR 0x0801D800 //boot版本号存储地址 第119K -120K
//#define NEW_BIN_SIZE_ADDR 0x0801E000 //新固件长度标志,通过长度后的JF,长度,校验确认是否可以升级 第121K -122K
#define FactoryID 0x04
#define HWVersion 0x0101 //
#define SWVersion 10022 //软件版本号 主版本号(1-5).次版本号(0-99).修正号(0-99): 50101表示5.01.01
extern word_def CANStateAdr;
extern uint8_t sn_code[36];
#define UpgradeRequest CANStateAdr.bit.b0
extern unsigned short CRC16_XMODEM(unsigned char *data, unsigned int datalen);
typedef void (*iapfun)(void);
//extern u16 CycleTime_22NID[12];
extern u16 CycleTime_22NID[26]; //qiuadd
#define MAX_TICK_VALUE 0xfeff
#define FOREMOST_TIME 0xff00
#define LATTERMOST_TIME 0xff01
#define MIN_INTERVAL 0
#define MAX_INTERVAL MAX_TICK_VALUE
#define MAX_SHAKE_CNT 11
typedef struct
{
uint16_t Tick2Ms_Cnt;
uint16_t latest_change_time[MAX_SHAKE_CNT];
uint8_t latest_change_index;
uint16_t clear_time;
uint8_t Shake_Error_Flag;
} HandRail_Shake_t;
extern HandRail_Shake_t HandRail_Shake;
uint16_t Get2MsTickInterval(uint16_t LastTickVal);
//CAN1接收RX0中断使能
#define CAN1_RX0_INT_ENABLE 1 //0,不使能;1,使能.
void MC_Broadcast_Update(void);
#endif
/* 接收信号结构体 */ // 读写数据
typedef struct
{
INT8U MC_WorkMode : 8;
union
{
INT8U MC_PowerMode_Byte;
struct
{
INT8U PowerEnable : 4; //bit3-bit0 是否输出动力
INT8U PowerMode : 4; //bit3-bit0 动力模式
} MC_PowerMode_Bit;
} MC_PowerMode_State;
INT8U SOC_CurLimit : 8;
union
{
INT8U MC_SupplySet_Byte;
struct
{
INT8U LoadSensorSupply : 2; //bit1-bit0 载重供电
INT8U TailLightSupply : 2; //bit3-bit2 动力模式
INT8U Reserved : 4; //预留
} MC_SupplySet_Bit;
} MC_SupplySet_State;
union
{
INT8U Current_slope_Byte;
struct
{
INT8U Slope_gradient : 6; //坡度 0-63°
INT8U Uphill_or_downhill : 1; //0下坡 1上坡
INT8U EffectiveValueFlag : 1; //0无效 1有效
} MC_PowerMode_Bit;
} Current_slope_State;
union
{
INT8U VehicleDipAngle_Byte;
struct
{
INT8U DipAngle : 6; //倾斜角度
INT8U Left_or_Right : 1; //左或右
INT8U EffectDipValueFlag : 1; //0无效 1有效
} VehicleDipAngle_Bit;
} VehicleDipAngle_State;
INT8U SOC_BackCurLimit : 8; //SOC回馈限流值
} tCAN202RxSignalTyp;
typedef struct
{
INT8U ThrottleVol : 8;
INT8U LeftBrakeVol : 8;
INT8U RightBrakeVol : 8;
union
{
INT8U PeripheralError_Byte;
struct
{
INT8U DateUpdateFlag : 1; //数据新鲜标记
INT8U RightBrakeError : 1; //右刹车故障
INT8U LeftBrakeError : 1; //右刹车故障
INT8U ThrottleError : 1; //转把故障
INT8U ThrottleSlopeError : 1; //转把斜率故障
INT8U ThrottleUnstableError : 1; //转把电压不稳定
INT8U ThrottleSupplyError : 1; //转刹把电源故障
INT8U Reserved : 1; //预留
} PeripheralError_Bit;
} PeripheralError_State;
INT8U ThrottleSupplyVol : 8; //转把供电电压
INT8U BrakeSupplyVol : 8; //刹把供电电压
} tCAN20CRxSignalTyp;
typedef struct
{
INT16U SpeedValue :16;
INT16U LowVolValue :16;
INT16U CurLimiteValue :16;
INT8U FrontLight_Fre :8;
INT8U FrontLightDriving_Fre :8;
INT8U TailLight_Fre :8;
INT8U BrakeLight_Fre :8;
INT8U ThrottleLight_Fre :8;
INT8U OverWeightValue :8;
INT8U SeatPressureMode :8;
INT8U NoLoadFlyBikeMode :8; //空载防飞车
INT8U TCS_Mode :8;
INT8U ClimbPowerInc :8;
INT8U BrakeOnHandProtect :8;
INT8U ZeroStartValue :8;
INT16U RechargeCur :16; //回馈电流值
union
{
INT8U TripInfoClear_Byte;
struct
{
INT8U Reserved : 2; //预留
INT8U RightBreakVolClear : 1; //清除本次骑行右刹车最大电压
INT8U LeftBreakVolClear : 1; //清除本次骑行左刹车最大电压
INT8U RightBreakTimesClear : 1; //清除本次骑行右刹车次数
INT8U LeftBreakTimesClear : 1; //清除本次骑行左刹车次数
INT8U OdometerClearFlag : 1; //清除本次骑行里程
INT8U MaxSpeedClearFlag : 1; //清除本次骑行最高速度
} TripInfoClear_Bit;
} TripInfoClear_State;
INT8U FlyBikeProtectSwitch :8;
INT8U HBarSlopeLimieValue :8;
INT8U HBarStandardLimiteValue :8;
INT8U HBarStandardTimeValue :8;
INT8U BatteryLockSwitch :8;
INT8U WheelPolePairs :8;
INT8U WheelPerimeter :8;
INT8U NoZeroStartSet :8;
INT8U MotorParaCRC :8;
INT16U BEMF_Vol :16;
INT16U MotorResistance :16;
INT16U Q_Axis_Inductance :16;
INT16U D_Axis_Inductance :16;
INT8U PedalStartSpeedValue :8;
INT8U PedalStartPulseValue :8;
union
{
INT8U PedalOverSpeed_Byte;
struct
{
INT8U PedalMode : 2; //助力模式 0x0弱助力 0x1 正常助力 0x2 强助力
INT8U PedalKeep : 1; //超过限速后是否保持助力
INT8U Reserved : 5; //预留
} PedalOverSpeed_Bit;
} PedalOverSpeed_State;
INT8U PedalStartForce : 8; //起步助力强度系数
INT8U PedalAcleForce : 8; //加速阶段助?强度系数
INT8U PedalStopForce : 8; //衰减阶段保持助?时间
INT8U HDC_Flag : 8; //陡坡缓降标志位
INT8U LowSpeedPedalInc : 8; //低速助力增强
INT8U WeakSpeedInc : 8; //弱磁提速功能
INT8U JumpToBOOT_flg :8;
INT8U CycleSendEnable_flg :8;
INT8U CANMessageErrReport_flg :8;
INT16U OverVolValue :16; //过压值
} tCanRxSignalTyp;
typedef struct
{
INT8U ID00[8];
INT8U ID01[8];
INT8U ID02[8];
INT8U ID03[8];
INT8U ID04[8];
INT8U ID05[8];
INT8U ID06[8];
INT8U ID07[8];
INT8U ID08[8];
INT8U ID09[8];
INT8U ID10[8];
INT8U ID11[8];
INT8U ID12[8];
INT8U ID13[8];
INT8U ID14[8];
INT8U ID15[8];
INT8U ID16[8];
INT8U ID17[8];
INT8U ID18[8];
INT8U ID19[8];
INT8U ID20[8];
INT8U ID21[8];
INT8U ID22[8];
INT8U ID23[8];
INT8U ID24[8];
INT8U ID25[8];
} tCANTxBroadcast;
typedef struct
{
INT8U ID01[28]; //28
INT8U ID02[76];
INT8U ID03[23];
INT8U ID04[23];
INT8U ID05[23];
INT8U ID06[23];
INT8U ID07[65];
INT8U ID08[16];
} tMULCANTxBroadcast;
typedef struct
{
INT8U WorkMode_State;
union
{
INT8U PowerModeState_Byte;
struct
{
INT8U PowerOutputEnable : 4; //是否输出动力
INT8U PowerOutputMode : 4; //动力模式
}PowerModeState_Bit;
}PowerMode_State;
INT8U Speed_Float;
union
{
INT8U MC_SupplyState_Byte;
struct
{
INT8U LoadSensorSupplyState : 2; //bit1-bit0 载重供电
INT8U TailLightSupplyState : 2; //bit3-bit2 动力模式
INT8U Reserved : 4; //预留
}MC_SupplySetState_Bit;
}MC_SupplySet_State;
INT8U SpeedValue; //当前车速 KM/H
INT8U Bike_Start_Status; //车辆启动状态
union
{
INT8U BatteryLockState_Byte;
struct
{
INT8U BatteryLockHeadState1 : 1; //电池锁锁舌状态
INT8U BatteryLockMotorstate : 2; //马达运行状态
INT8U BatteryLockHeadState2 : 2; //电池锁锁舌状态
INT8U Reserved : 3; //电池锁锁舌状态
}BatteryLockState_Bit;
}BatteryLock_State; //电池锁状态
INT8U PedalStartMode_State; //助力启动模式反馈
INT16U Bus_Vol; //供电电压,单位0.1V //ID:221
INT16S Bus_Cur; //母线电流 单位0.1A
INT8U Throttlt_Vol; //转把电压 单位0.1V
INT8U LeftBrake_Vol; //左刹车电压 单位0.1V
INT8U RightBrake_Vol; //右刹车电压 单位0.1V
union
{
INT8U TCSandBrakeState_Byte;
struct
{
INT8U TCS_Switch_State : 1; //TCS功能 1启动 0禁用
INT8U FlyBikeProtect_State : 1; //bit3-bit2 动力模式
INT8U BrakeType : 1; //刹把类型
INT8U HandUnreleasedProtcct_State : 1; //刹车转把未释放
INT8U RearArmrestSwitch_State : 1; //后扶手开关状态
INT8U RBrake_Loose_State : 1; //右刹车闸线松动状态
INT8U LBrake_Loose_State : 1; //左刹车闸线松动状态
INT8U ClimbHillPedalInc_State : 1; //爬坡助力增强
}TCSandBrakeState_Bit;
}TCSandBrake_State;
INT16S MotorSpeed; //电机转速
INT16U HallChange500ms; //500毫秒霍尔数
INT8U MC_Temp; //控制器温度
INT8U HallCurValue; //电机霍尔值
union
{
INT8U MC_Protect1State_Byte;
struct
{
INT8U Motor_Blocked_Protect : 1; //堵转保护
INT8U NoLoadFlyBike_Protect : 1; //空载防飞车保护
INT8U HandGndBreak_Protect : 1; //转把掉地线
INT8U MultiUserRiding_Protect : 1; //多人骑行保护
INT8U OverCurrent_Protect : 1; //过流保护
INT8U OverVoltage_Protect : 1; //过压保护
INT8U UnderVoltage_Protect : 1; //欠压保护
INT8U PoweonFlyBike_Protect : 1; //上电防飞车保护
} MC_Protect1State_Bit;
} MC_Protect1_State;
union
{
INT8U MC_Protect2State_Byte;
struct
{
INT8U Reserved : 3; //保留
INT8U SortOverCur_Protect : 1; //软件过流
INT8U HandNotRelease_Protect : 1; //静止后未释放手把
INT8U HandVolUnstable_Protect : 1; //转把电压不稳定
INT8U HandVolRise_Protect : 1; //转把电压上升过快
INT8U Tempture_Protect : 1; //温度保护
} MC_Protect2State_Bit;
} MC_Protect2_State;
INT16U UnderVoltageValue;
INT16U BusCurLimitValue;
INT16U SpeedLimitValue;
INT8U OverLoadValue;
INT8U MotorTemp;
union
{
INT8U Perip1Error_Byte;
struct
{
INT8U PressureSwitch_Error : 1; //坐垫压力开关故障
INT8U GNDshort5V_Error : 1; //5V和GND短路
INT8U HandBar_Error : 1; //转把掉地线
INT8U RightBrake_Error : 1; //右刹车错误
INT8U LeftBrake_Error : 1; //左刹车错误
INT8U LoadSensorSupply_Error : 1; //给载重等供电次回路故障
INT8U RearArmrestSwitch_Error : 1; //后扶手开关故障
INT8U MotorHall_Error : 1; //电机霍尔故障
} Perip1Error_Bit;
} Perip1Error_State;
union
{
INT8U Perip2Error_Byte;
struct
{
INT8U HallC_Error : 1; //电机霍尔C错误
INT8U HallB_Error : 1; //电机霍尔B错误
INT8U HallA_Error : 1; //电机霍尔A错误
INT8U MotorPhaseLose_Error : 1; //电机缺相错误
INT8U BreakLight_Error : 1; //刹车灯错误
INT8U XCDLight_Error : 1; //行车灯错误
INT8U TailLight_Error : 1; //尾灯故障
INT8U MainLigh_Error : 1; //保留
} Perip2Error_Bit;
} Perip2Error_State;
union
{
INT8U MCError_Byte;
struct
{
INT8U Reserved : 6; //电控自身故障
INT8U InsideVol_Error : 1; //尾灯故障
INT8U MOSDamage_Error : 1; //MOS管烧坏
} MCError_Bit;
} MCError_State;
union
{
INT8U IOT_MessageError_Byte;
struct
{
INT8U Periodic_message_Error : 1; //周期报文故障
INT8U HandBrake_message_Error : 1; //转刹把报文故障
INT8U Reserved : 6; //主控报文故障
} IOT_MessageError_Bit;
} IOT_MessageError_State;
union
{
INT8U BMSError_Byte;
struct
{
INT8U BMS_communication_Error : 1; //电池通信错误
INT8U BMS_Dataframetimeout_Error : 1; //电池数据帧超时
INT8U MosStateRead_Error : 1; //MOS状态读取错误
INT8U Reserved : 5; //预留
} BMSError_Bit;
} BMSError_State;
INT16U MaxSpeedValue :16 ; //本次骑行最高速度
INT16U OdometerValue :16 ; //本次骑行里程
INT8U LeftBrakeTimes :8;
INT8U RightBrakeTimes :8;
INT8U LeftBrakeValueMax :8;
INT8U RightBrakeValueMax :8;
INT8U BootVersion :8;
INT8U Factory_ID :8;
INT16U HardwareVersion :16;
INT16U SoftwareVersion :16;
INT16U CanProtocolVersion :16;
INT8U MC_ID[16];
INT8U Second_Circuit_Vol:8;
INT16U Feedback_CurLimit :16;
INT32S Riding_mileage:32;
INT8U MaxThrottleVol :8;
INT8U EstimatedLoadValue :8;
INT8U MotorPoles :8;
INT8U WheelCircumference:8;
INT16U MotorBackElecVol :16;
INT16U MotorResistance :16;
INT16U MotorQInductance :16;
INT8U PedalPulseStartValue :8;
INT8U PedalSpeedStartValue :8;
INT8U Pedal_Frequency :8;
INT8U PedalMode :8;
INT8U PedalStartForce :8;
INT8U PedalStartAccel :8;
INT8U PedalStopKeepTime :8;
INT8U PedalStopOverSpeed :8;
union
{
INT8U MC_FunctionSwitch1_Byte;
struct
{
INT8U Reserved :5; //保留
INT8U WeakSpeedIncBit :1; //弱磁提速功能
INT8U LowSpeedPedalIncBit :1; //低速助力增强
INT8U DownHillControlBit :1; //陡坡缓降
} MC_FunctionSwitch1_bit;
} MC_FunctionSwitch1_Set;
union
{
INT8U MC_FunctionSwitch2_Byte;
struct
{
INT8U Reserved :7; //保留
INT8U NoZeroStartSetBit :1; //非0启动配置
} MC_FunctionSwitch2_bit;
} MC_FunctionSwitch2_Set;
INT16U D_Axis_InductanceSend :16; //D轴电感
INT16U OverVolValue :16; //过压值
} tCanTxSignalTyp;
typedef struct {
/**************控制器故障与状态信息 扩展帧 (ID=0x18FF0200)周期 20ms**************/
union
{ INT8U VehicleState_error0_Byte;
struct
{
INT8U MCULowVol :1;//欠压故障
INT8U MCUOverCur :1;//过流故障
INT8U MCUOverVol :1;//过压故障
INT8U MCUHighTemp :1;//高温故障
INT8U motorOverSpeed :1;//电机超速故障
INT8U MCUDriveFault :1;//控制器驱动故障
INT8U MOSFault :1;//mos管故障
INT8U breakFault :1;//刹车故障
}VehicleState_error0_Bit;
}VehicleState_error0;
union
{
INT8U VehicleState_error1_Byte;
struct
{
INT8U hbarFault :1;//转把故障
INT8U motorPhaseFault :1;//电机缺相故障
INT8U motorHallFault :1;//电机霍尔故障
INT8U motorHighTemp :1;//电机高温故障
INT8U motorLocked :1;//电机堵转故障
INT8U MCULowVolWarning :1;//控制器欠压“警告”
INT8U motorZeroDrift :1;//电机零漂故障
INT8U MCU_TCSMode :1;//MCU-TCS模式: 0x0:强 0x1:弱
}VehicleState_error1_Bit;
}VehicleState_error1;
union
{
INT8U VehicleState_state2_Byte;
struct
{
INT8U ReadyState :1;//Ready状态
INT8U P_gaerState :1;//P档状态 0x0:P档状态无效 0x1:P档状态有效
INT8U reverseState :1;//倒车激活状态
INT8U trolleyState :1;//推车激活状态
INT8U cruiseState :1;//巡航激活状态
INT8U breakButtonState :1;//刹车按键状态
INT8U lockMotorState :1;//锁电机状态
INT8U nitrogenBoostFunction :1;//氮气加速Boost功能:0x0:BOOST功能已关闭/氮气功能禁用 0X1:BOOST功能已开启/氮气功能开启
}VehicleState_state2_Bit;
}VehicleState_state2;
union
{
INT8U VehicleState_state3_Byte;
struct
{
INT8U gearState :2;//挡位状态:x档=0x0:非玩家模式0x0:A助力 0x1:0x3:S运动x档=0x1:玩家模式0x0:X1档 0x1:X2档0x2:AI档0x3:预留
INT8U MCU_TCSFuction :1;//MCU-TCS功能: 0x0:关闭 0x1:开启
INT8U rampParkingFunction:1;//坡道驻车功能 0x0:坡道驻车功能已关闭 0x1:坡道驻车功能已开启
INT8U nitrogenBoostState :1;//"氮气加速Boost状态:0x0:未进入BOOST/氮气未激活0X1:进入BOOST/氮气激活中"
INT8U singleThrottleMode :2;//单油门模式 00:控制器未进入单油门模式 01:控制器进入单油门模式1档 02:控制器进入单油门模式2档 03:控制器进入单油门模式3档 (类似汽车单踏板模式)
INT8U XGear :1;//"x档(玩家模式)0x0:非玩家模式0x1:玩家模式"
}VehicleState_state3_Bit;
}VehicleState_state3;
INT8U VehicleState_motorSpeedRpmHigh;//实时转速RPM高字节
INT8U VehicleState_motorSpeedRpmLow;//实时转速RPM低字节 增益:1RPM/bit偏移量:0指示范围:0~30000
INT8U VehicleState_MCUTemp;//控制器温度(无符号数)增益:1℃/bit偏移量:-40℃指示范围:-40~150
INT8U VehicleState_motorTemp;//电机温度(无符号数)增益:1℃/bit偏移量:-40℃指示范围:-40~150
/**************控制器信息 扩展帧 (ID=0x18FF0201)周期 20ms**************/
}tCanTxVehicleState;
typedef struct
{
/**************控制器信息 扩展帧 (ID=0x18FF0201)周期 20ms**************/
INT8U MCUVolHigh; //控制器电压高字节 增益:0.1V/bit 偏移量:0V 指示范围:0~800V
INT8U MCUVolLow; //控制器电压低字节
INT8U MCUCurHigh; //控制器实时电流高字节 增益:0.1A/bit 偏移量:-1000 指示范围:-100~1500A 负值表示放充电电流
INT8U MCUCurLow; //控制器实时电流低字节
INT8U nitrogenPercentage; //氮气百分比/氮气剩余时间 增益:1%/bit 偏移量:0 指示范围:0~100%
INT8U hbarPercentage; //转把开度百分比 增益:1%/bit 偏移量:0 指示范围:0~100%
INT8U hbarVolHigh; //转把信号电压高字节 增益:0.01V/bit 偏移量:0V 指示范围:0~5V
INT8U hbarVolLow; //转把信号电压低字节
} tMCUInformation1;
typedef struct
{
/**************控制器信息 扩展帧 (ID=0x18FF0202)周期 20ms**************/
INT8U motorTorquePercentage; //电机实时扭矩百分比 精度0.5 单位% 有效范围0x00~0xC8 无效值0xFF
INT8U fanOutput; //风扇输出占空比 增益:1%/bit 偏移量:0 指示范围:0~100%
union
{
INT8U vehicleFunction_Byte;
struct
{
INT8U HTC_flag : 1;//陡坡缓降功能开关 0x0:关闭 0x1:开启
INT8U sideSupportInductionFunction: 1;//驻车感应功能开关(边撑断电功能)0x0:关闭 0x1:开启
INT8U lowVolSpeedLimitMode : 1;//低电量限速模式功能开关 0x0:关闭 0x1:开启
INT8U simpleDriveMode : 1;//简易骑行模式功能开关 0x0:关闭 0x1:开启
INT8U helpPromoteMode : 1;//助力推行模式功能开关 0x0:关闭 0x1:开启
INT8U reverseMode : 1;//倒车功能开关 0x0:关闭 0x1:开启
INT8U MCUEmergencyModeState : 1;//控制器应急模式激活状态 0x0:关闭 0x1:开启
INT8U MCUBreakFution : 1;//控制器刹车功能开关 0x0:关闭 0x1:开启
} vehicleFunction_Bit;
} vehicleFunction;
union
{
INT8U vehicleFunctionState_Byte;
struct
{
INT8U HTCState : 1;//陡坡缓降状态
INT8U MCU_TCSFuctionState : 1;//TCS激活状态
INT8U rampParkingFunctionState : 1;//坡道驻车状态
INT8U MCUEABSState : 1;//E-ABS状态
INT8U selfBalancingFunction : 1;//自平衡功能开关 0x0:关闭 0x1:开启
INT8U reserved : 3;//预留
} vehicleFunctionState_Bit;
} vehicleFunctionState;
union
{
INT8U buttonState_Byte;
struct
{
INT8U buttonMODEDown : 1;//MODE-按键
INT8U buttonMODEUp : 1;//MODE+按键
INT8U buttonPgear : 1;//P档按键
INT8U buttonCruise : 1;//巡航按键
INT8U breakPowerOffState : 1;//刹车断电激活状态
INT8U reserved : 3;//预留
} buttonState_Bit;
} buttonState;
union
{
INT8U vehicleReminder_Byte;
struct
{
INT8U noDriverReminder : 1;//未检测到驾驶员提醒 0x0:检测到驾驶员 0x1:未检测到驾驶员
INT8U noReleasePgearReminder : 1;//未解除P档提醒 0x0:已解除P档 0x1:未解除P档
INT8U noReleaseSideSupportReminder: 1;//未解除边撑提醒 0x0:已解除边撑 0x1:未解除边撑
INT8U sideSupportInductionState : 1;//驻车感应状态 0:边撑放下 1:边撑收起
INT8U volResponse : 4;//电压等级反馈 0x0:无效 0x1:72V 0x2:60V 0x3:48V
} vehicleReminder_Bit;
} vehicleReminder;
union
{
INT8U vehicleFunction2_Byte;
struct
{
INT8U unlockSpeedLimit : 2;//控制器解除限速状态 0x0:默认 0x1:解除限速 0x2:回到限速
INT8U zeroForcePushFunction : 1;//零力推行功能 0x0:关闭 0x1:开启
INT8U zeroForcePushFunctionState : 1;//零力推行激活状态 0x0:无效 0x1:有效
INT8U reserved : 4;//预留
} vehicleFunction2_Bit;
} vehicleFunction2;
union
{
INT8U vehicleError_Byte;
struct
{
INT8U MCUErrorLevel : 4;//控制器故障等级 0x0:无故障 0x1:1级 0x2:2级 0x3:3级
INT8U EABSPowerLevel : 2;//E-ABS能量回收等级 0x0:关闭 0x1:弱 0x2:中等 0x3:强
INT8U MCUOverTempAlarm : 1;//控制器过温告警 0:正常 1:告警报警E216
INT8U motorOverTempAlarm : 1;//电机过温告警 0:正常 1:告警报警E217
} vehicleError_Bit;
} vehicleError;
} tMCUInformation2;
typedef struct
{
/**************控制器信息 扩展帧 (ID=0x18FF0203)周期 20ms**************/
INT8U vehicleSpeedHigh; //整车实际车速高字节 增益:0.1Km/h/bit 偏移量:0 指示范围:0~500Km/h
INT8U vehicleSpeedLow; //整车实际车速低字节
INT8U cruiseSpeedTargetHigh; //定速巡航目标车速高字节 增益:0.1Km/h/bit 偏移量:0 指示范围:0~500Km/h
INT8U cruiseSpeedTargetLow; //定速巡航目标车速低字节
INT8U MCURequestTorquePercentage;//控制器请求扭矩百分比 精度0.5 单位% 有效范围0x00~0xC8 无效值0xFF
INT8U reserved; //预留
union
{
INT8U MCUCurrentMaxSpeedReaction_Byte;
struct
{
INT8U MCUCurrentMaxSpeedReactionHigh : 7;//控制器当前模式下最高车速反馈高字节低7位
INT8U MCUCurrentMaxSpeedReactionState: 1;//控制器当前模式下最高车速反馈状态 0x0:关闭 0x1:开启
} MCUCurrentMaxSpeedReaction_Bit;
} MCUCurrentMaxSpeedReaction;
INT8U MCUCurrentMaxSpeedReactionLow; //控制器当前模式下最高车速反馈低字节
} tMCUInformation3;
typedef struct
{
/**************控制器信息 扩展帧 (ID=0x18FF0204)周期 200ms**************/
INT8U MCUPhaseACurHigh; //控制器A相电流高字节 增益:0.1A/bit 偏移量:0 指示范围:0~2000A
INT8U MCUPhaseACurLow; //控制器A相电流低字节
INT8U MCUPhaseBCurHigh; //控制器B相电流高字节 增益:0.1A/bit 偏移量:0 指示范围:0~2000A
INT8U MCUPhaseBCurLow; //控制器B相电流低字节
INT8U MCUPhaseCCurHigh; //控制器C相电流高字节 增益:0.1A/bit 偏移量:0 指示范围:0~2000A
INT8U MCUPhaseCCurLow; //控制器C相电流低字节
INT8U InstrumentSpeed; //仪表显示车速 增益:1Km/h/bit 偏移量:0 指示范围:0~500Km/h
} tMCUInformation4;
typedef struct
{
/**************控制器信息 扩展帧 (ID=0x18FF0205)周期 200ms**************/
union
{
INT8U vehicleGear_Byte;
struct
{
INT8U EGearState : 1;//E经济挡位启用状态 0x0:禁用 0x1:启用
INT8U CGearState : 1;//C运动挡位启用状态 0x0:禁用 0x1:启用
INT8U SGearState : 1;//S激烈挡位启用状态 0x0:禁用 0x1:启用
INT8U X1GearState : 1;//X1档挡位启用状态 0x0:禁用 0x1:启用
INT8U X2GearState : 1;//X2档挡位启用状态 0x0:禁用 0x1:启用
INT8U AIGearState : 1;//AI档模式挡位启用状态 0x0:禁用 0x1:启用
INT8U reserved : 2;//预留
} vehicleGear_Bit;
} vehicleGear;
union
{
INT8U vehicleFunctionState_Byte;
struct
{
INT8U hbarBackHTCFuction : 1;//反向转把能量回收功能 0x0:关闭 0x1:开启
INT8U hbarBackHTCState : 1;//反向转把能量回收激活状态 0x0:无效 0x1:有效
INT8U hbarBackReverseFunction : 1;//反向转把倒车功能 0x0:关闭 0x1:开启
INT8U hbarBackReverseState : 1;//反向转把倒车激活状态 0x0:无效 0x1:有效
INT8U AIOperationMode : 4;//AI运行模式 0x1:节能型 0x2:标准型 0x3:运动型 0x4:激烈型 0x5:大师型
} vehicleFunctionState_Bit;
} vehicleFunctionState;
INT8U AIGearThrottlePointPercentage; //AI挡位油门积分百分比 增益:1%/bit 偏移量:0 指示范围:0~100%
INT8U Count; //COUNT总次数
INT8U Count1; //COUNT1次数
INT8U Count2; //COUNT2次数
INT8U Count3; //COUNT3次数
INT8U Count4; //COUNT4次数
} tMCUInformation5;
typedef struct
{
/**************控制器设备软件版本 预留 扩展帧 (ID=0x18FF0230~0x18FF0233)周期 2000ms 初始开机5帧**************/
INT8U manufacturerCode; //厂家代码
INT8U reserved0; //预留
INT8U materialCodeByte0; //物料编码低0字节
INT8U materialCodeByte1; //物料编码低1字节
INT8U materialCodeByte2; //物料编码低2字节
INT8U swMajorVersion; //软件主版本号
INT8U swMinorVersion; //软件次版本号
INT8U reserved1; //预留,固定为0
} tMCUVersionInformation;
typedef struct
{
/**************控制器ID(SN码) 预留 扩展帧 (ID=0x18FF0240~0x18FF0243)周期 2000ms 初始开机5帧**************/
INT8U byte0; //预留
INT8U byte1; //预留
INT8U byte2; //预留
INT8U byte3; //预留
INT8U byte4; //预留
INT8U byte5; //预留
INT8U byte6; //预留
INT8U byte7; //预留
} tMCUSNInformation;
typedef struct
{
/**************车辆MCU功能设置 扩展帧 (ID=0x18FF0102)触发帧(To控制器)**************/
union
{
INT8U byte0;
struct
{
INT8U zeroForcePushSet : 2;//零力推行设置 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U lowVolSpeedLimitSet : 2;//低电量限速模式 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U autoParkingSet : 2;//自动驻车功能(坡道驻车)0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U HTCSet : 2;//陡坡缓降功能 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
} bit;
} byte0_set;
union
{
INT8U byte1;
struct
{
INT8U sideSupportSet : 2;//驻车感应(电子边撑功能)0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U EABSSet : 2;//E-ABS 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U simpleDriveSet : 2;//简易骑行模式 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U breakPowerOffSet : 2;//控制器刹车断电功能开启/关闭指令 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
} bit;
} byte1_set;
union
{
INT8U byte2;
struct
{
INT8U helpPromoteSet : 2;//助力推行功能 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U reverseSet : 2;//倒车功能 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U reserved : 1;//预留
INT8U singleThrottleModeSet : 3;//单油门模式指令 0x0:无效 0x1:关闭 0x2:1档 0x3:2档 0x4:3档
} bit;
} byte2_set;
union
{
INT8U byte3;
struct
{
INT8U speedSafetyLock : 5;//速度安全锁 单位km/h 增益:5 偏移量:10 0x0:无效 0x1F:关闭
INT8U energyRecoveryLevel : 3;//能量回收等级 0x0:无效 0x1:关闭 0x2:弱 0x3:中等 0x4:强
} bit;
} byte3_set;
union
{
INT8U byte4;
struct
{
INT8U hbarBackHTCSet : 2;//反向转把能量回收设置 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U hbarBackReverseSet : 2;//反向转把倒车设置 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U unlockSpeedLimitSet : 2;//解除限速使能 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U TCSModeSet : 2;//TCS模式设置 0x0:无效 0x1:强 0x2:弱 0x3:unknown
} bit;
} byte4_set;
union
{
INT8U byte5;
struct
{
INT8U TCSFunctionSet : 2;//TCS功能设置 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U boostModeSet : 2;//Boost模式 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U EGearSet : 2;//骑行模式-E经济 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U CGearSet : 2;//骑行模式-C滑行 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
} bit;
} byte5_set;
union
{
INT8U byte6;
struct
{
INT8U SGearSet : 2;//骑行模式-S运动 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U X1GearSet : 2;//骑行模式-X1档 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U X2GearSet : 2;//骑行模式-X2档 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U AIGearSet : 2;//骑行模式-AI档 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
} bit;
} byte6_set;
union
{
INT8U byte7;
struct
{
INT8U voltagePlatformSet : 4;//电压 0x0:无效 0x1:72V 0x2:60V 0x3:48V 0x4:96V
INT8U reserved : 4;//预留
} bit;
} byte7_set;
} tVehicleFunctionSettingRx;
typedef struct
{
/**************车辆状态1(VCU 开关机相关信息) 扩展帧 (ID=0x18FF0108)接收触发帧**************/
INT8U VCUState : 4;//VCU主状态 0x0:无效 0x1:关机 0x2:预启动检查 0x3:开机 0x4:预关机 0x5:主电丢失
INT8U moveAlarm : 1;//异动防盗触发 0:正常 1:触发
INT8U wheelMoveAlarm : 1;//轮动防盗触发 0:正常 1:触发
INT8U reserved0 : 2;//预留
INT8U reserved1[3]; //预留
INT8U fallAlarm : 1;//倾倒报警 0:正常 1:触发
INT8U reserved4 : 7;//预留
INT8U reserved5; //预留
INT8U chargerState : 2;//充电器状态 0x0:未检测到充电器 0x1:充电器已接入
INT8U dischargeConfirm : 2;//放电互认 0x0:失败 0x1:成功
INT8U reserved6 : 4;//预留
INT8U batterySOC : 7;//电池SOC 0~100
INT8U batterySOCValid : 1;//电池SOC有效位 0x0:无效 0x1:有效
} tVCUVehicleState1;
typedef struct
{
/**************车辆状态2(车身状态相关) 扩展帧 (ID=0x18FF0109)接收触发帧**************/
INT8U reserved0; //预留
INT8U reserved1; //预留
INT8U seatInductionState : 2; //坐垫感应检测状态 0x0:未乘坐 0x1:有人乘坐
INT8U reserved2; //预留
INT8U reserved3; //预留
INT8U reserved4; //预留
INT8U reserved5; //预留
INT8U reserved6; //预留
INT8U reserved7; //预留
} tVCUVehicleState2;
typedef struct
{
/**************车辆状态3(用户设置项-1 VCU相关) 扩展帧 (ID=0x18FF010A)接收触发帧**************/
INT8U lostMode : 2; //丢失模式 0x0:关闭 0x1:开启
INT8U reserved0 : 6; //预留
INT8U reserved1; //预留
INT8U reserved2; //预留
INT8U reserved3; //预留
INT8U reserved4; //预留
INT8U reserved5; //预留
INT8U reserved6; //预留
INT8U reserved7; //预留
} tVCUVehicleState3;
typedef struct
{
/**************车辆状态4(电池相关) 扩展帧 (ID=0x18FF010B)接收触发帧**************/
INT8U batteryType : 4; //电池类型 0x0:无效 0x1:铅酸 0x2:锂电
INT8U voltagePlatform : 4; //电压 0x0:无效 0x1:72V 0x2:60V 0x3:48V
INT8U reserved1; //预留
INT8U SOC : 7; //SOC 0%~100%
INT8U SOCValid : 1; //SOC有效位
INT8U recycleCurrent; //回收电流,单位0.1A
INT8U reserved4; //预留
INT8U reserved5; //预留
INT8U reserved6; //预留
INT8U reserved7; //预留
} tVCUVehicleState4;
typedef struct
{
/**************车辆状态5(电池相关) 扩展帧 (ID=0x18FF010C)接收触发帧**************/
INT8U reserved0; //预留
INT8U reserved1; //预留
INT8U reserved2; //预留
INT8U reserved3; //预留
INT8U ratedDischargeCurrent; //额定放电电流,单位A
INT8U peakDischargeCurrent; //峰值放电电流,单位A
INT8U reserved6; //预留
INT8U reserved7; //预留
} tVCUVehicleState5;
typedef struct
{
/**************VCU陀螺仪角度 扩展帧 (ID=0x18FF0101)接收触发帧**************/
INT8U yawAngleLow; //车辆偏航角度低字节 增益:0.1°/bit 偏移量:-90°
INT8U yawAngleHigh; //车辆偏航角度高字节
INT8U pitchAngleLow; //车辆俯仰角度低字节 增益:0.1°/bit 偏移量:-90°
INT8U pitchAngleHigh; //车辆俯仰角度高字节
INT8U initialYawAngleLow; //车辆初始偏航角度低字节 增益:0.1°/bit 偏移量:-90°
INT8U initialYawAngleHigh; //车辆初始偏航角度高字节
INT8U initialPitchAngleLow; //车辆初始俯仰角度低字节
INT8U initialPitchAngleHigh; //车辆初始俯仰角度高字节
} tVCUGyroAngle;
typedef struct
{
/**************ABS状态信息 扩展帧 (ID=0x18FF0600)周期 20ms**************/
INT8U frontWheelSpeedLow; //ABS前轮轮速低字节 增益:0.05625/bit 偏移量:0
INT8U frontWheelSpeedHigh; //ABS前轮轮速高字节
INT8U rearWheelSpeedLow; //ABS后轮轮速低字节 增益:0.05625/bit 偏移量:0
INT8U rearWheelSpeedHigh; //ABS后轮轮速高字节
union
{
INT8U stateByte;
struct
{
INT8U ABSSwitchState : 2;//ABS开关闭状态 0x0:ABS开启 0x1:ABS关闭 0x2:后轮ABS开启 0x3:后轮ABS关闭
INT8U ABSFaultLamp : 2;//ABS故障灯 0x0:关闭 0x1:开启 0x2:诊断模式 0x3:保留
INT8U frontWheelSpeedFault : 1;//ABS前轮轮速有效标志 0x0:正常 0x1:故障
INT8U rearWheelSpeedFault : 1;//ABS后轮轮速有效标志 0x0:正常 0x1:故障
INT8U ABSModeSwitchAllow : 1;//ABS模式切换 0x0:不允许 0x1:允许
INT8U ABSEvent : 1;//事件位 0:无防抱死触发 1:触发
} bit;
} state;
INT8U ABSActiveState : 1; //ABS激活状态 0:关闭 1:开启
INT8U IMUZeroFlag : 1; //IMU标零标志位 0x0:未标定 0x1:已标定
INT8U reserved5 : 6; //预留
INT8U IMUZeroCount; //IMU标零次数
INT8U ABSTCSTargetTorquePercentage;//ABS-TCS目标扭矩百分比 单位% 有效范围0x0~0x64 无效值0xFF
} tABSStateInfo0;
typedef struct
{
/**************ABS状态信息 扩展帧 (ID=0x18FF0601)周期 20ms**************/
INT8U ABSTCSControlCmd : 1; //ABS-TCS介入控制指令 0x0:OFF 0x1:ON
INT8U reserved0 : 7; //预留
INT8U ABSTCSTargetTorqueLow; //ABS-TCS目标扭矩低字节 增益:0.125/bit 偏移量:0
INT8U ABSTCSTargetTorqueHigh; //ABS-TCS目标扭矩高字节
union
{
INT8U stateByte;
struct
{
INT8U targetTorqueValid : 2;//ABS-TCS目标扭矩有效性 0x0:初始化 0x1:无效 0x2:有效 0x3:保留
INT8U functionSwitchAllow : 1;//ABS-TCS功能可切换信号 0x0:不允许 0x1:允许
INT8U alarmLampState : 1;//ABS-TCS报警灯状态 0x0:灭 0x1:常亮
INT8U workMode : 3;//ABS-TCS工作模式 0x0:开启 0x1:关闭 0x2~0x7:保留
INT8U reserved : 1;//预留
} bit;
} state;
union
{
INT8U faultByte0;
struct
{
INT8U systemState : 2;//ABS-TCS系统状态 0x0:初始化 0x1:正常 0x2:故障 0x3:诊断
INT8U reserved : 1;//预留
INT8U IMUFault : 1;//IMU故障 0x0:正常 0x1:故障
INT8U pressureSensorFault : 1;//压力传感器故障 0x0:正常 0x1:故障
INT8U throttleFault : 1;//油门开度故障 0x0:正常 0x1:故障
INT8U motorTorqueFault : 1;//电机实际扭矩故障 0x0:正常 0x1:故障
INT8U driverTorqueFault : 1;//驾驶员请求扭矩故障 0x0:正常 0x1:故障
} bit;
} fault0;
union
{
INT8U faultByte1;
struct
{
INT8U ECULowVolFault : 1;//ECU电压过低故障
INT8U ECUHighVolFault : 1;//ECU电压过高故障
INT8U ECUFault : 1;//ECU错误
INT8U wheelSensorFault : 1;//轮速传感器故障
INT8U valveFault : 1;//阀故障
INT8U refluxPumpFault : 1;//回流泵故障
INT8U valveRelayFault : 1;//阀继电器故障
INT8U CANOfflineFault : 1;//CAN总线离线错误
} bit;
} fault1;
union
{
INT8U faultByte2;
struct
{
INT8U frontWheelSignalFault : 1;//前轴轮速度传感器信号故障
INT8U frontWheelLineFault : 1;//前轴轮速度传感器线路故障
INT8U rearWheelSignalFault : 1;//后轴轮速度传感器信号故障
INT8U rearWheelLineFault : 1;//后轴轮速度传感器线路故障
INT8U frontInletValveFault : 1;//前轴进油阀故障
INT8U frontOutletValveFault : 1;//前轴出油阀故障
INT8U rearInletValveFault : 1;//后轴进油阀故障
INT8U rearOutletValveFault : 1;//后轴出油阀故障
} bit;
} fault2;
INT8U reserved7; //预留
} tABSStateInfo1;
typedef struct
{
/**************自平衡控制器指令扩展帧 (ID=0x18FF0250)周期 20ms**************/
INT8U balanceSpeedHigh; //自平衡控制器下发速度高字节 增益:0.1Km/h/bit 偏移量:-250 指示范围:-250~250Km/h
INT8U balanceSpeedLow; //自平衡控制器下发速度低字节
INT8U balanceMode : 2;//自平衡模式 0x0:无效 0x1:开启 0x2:关闭 0x3:unknown
INT8U reserved2 : 6;//预留
INT8U reserved3; //预留
INT8U reserved4; //预留
INT8U reserved5; //预留
INT8U reserved6; //预留
INT8U reserved7; //预留
} tSelfBalanceControl;
typedef struct
{
/**************SOC指令扩展帧 (ID=0x18FF0260)周期 200ms**************/
INT8U batteryVolHigh; //电池电压高位 单位:0.1V
INT8U batteryVolLow; //电池电压低位 单位:0.1V
INT8U displaySOC; //剩余电量百分比,显示SOC,范围0~100%
INT8U realSOC; //剩余电量百分比,真实SOC,范围0~100%
INT8U currentHigh; //电池充放电电流高位 单位:0.1A 偏移量5000
INT8U currentLow; //电池充放电电流低位 单位:0.1A 偏移量5000
INT8U instantPowerHigh; //瞬时电耗高位 单位:W 范围:-5000~10000
INT8U instantPowerLow; //瞬时电耗低位 单位:W 范围:-5000~10000
} tCANSOC260;
typedef struct
{
/**************SOC指令扩展帧 (ID=0x18FF0261)周期 200ms**************/
INT8U batteryTemp; //电池温度 单位:1℃ 偏移量-40
INT8U chargeCycleHigh; //电池充电循环次数高位
INT8U chargeCycleLow; //电池充电循环次数低位
INT8U dischargeTimesHigh; //电池放电次数高位
INT8U dischargeTimesLow; //电池放电次数低位
union
{
INT8U faultByte;
struct
{
INT8U overVolProtect : 1;//过压保护
INT8U chargeOverCurProtect : 1;//充电过流保护
INT8U dischargeOverCurProtect:1;//放电过流保护
INT8U shortProtect : 1;//短路保护
INT8U overTempProtect : 1;//过温保护
INT8U chargeHandshakeState : 1;//充电握手状态 0x0:失败 0x1:成功
INT8U reserved : 2;//预留
} bit;
} fault;
INT8U boardWorkState; //计量板工作状态 0x0:默认 0x1:正在充电 0x2:充电完成 0x3:放电状态 0x4:欠压 0x5:涓流充电
INT8U batterySOH; //电池SOH,范围0~100%
} tCANSOC261;
typedef struct
{
/**************SOC指令扩展帧 (ID=0x18FF0262)周期 200ms**************/
INT8U batterySOEHigh; //电池SOE高位 单位:WH 范围0~7000
INT8U batterySOELow; //电池SOE低位 单位:WH 范围0~7000
INT8U chargeRemainTimeHigh; //充电剩余时间高字节 单位:1min
INT8U chargeRemainTimeLow; //充电剩余时间低字节 单位:1min
INT8U selfLearnCapHigh; //自学习容量高位 单位:10mAH
INT8U selfLearnCapLow; //自学习容量低位 单位:10mAH
INT8U reserved6; //预留
INT8U reserved7; //预留
} tCANSOC262;
extern tCanRxSignalTyp UserCanRxSignal;
extern tCAN202RxSignalTyp CAN202RxSignal;
extern tCAN20CRxSignalTyp CAN20CRxSignal;
extern tCANTxBroadcast DateTxBroadcast;
extern tCanTxSignalTyp CanTxSignaldDate;
extern tCanTxVehicleState CanTxVehicleState;
#define VehicleState CanTxVehicleState
extern tMCUInformation1 MCUInformation1;
extern tMCUInformation2 MCUInformation2;
extern tMCUInformation3 MCUInformation3;
extern tMCUInformation4 MCUInformation4;
extern tMCUInformation5 MCUInformation5;
extern tMCUVersionInformation MCUVersionInformation[4];
extern tMCUSNInformation MCUSNInformation[4];
extern tVehicleFunctionSettingRx VehicleFunctionSettingRx;
extern tVCUVehicleState1 VCUVehicleState1;
extern tVCUVehicleState2 VCUVehicleState2;
extern tVCUVehicleState3 VCUVehicleState3;
extern tVCUVehicleState4 VCUVehicleState4;
extern tVCUVehicleState5 VCUVehicleState5;
extern tVCUGyroAngle VCUGyroAngle;
extern tABSStateInfo0 ABSStateInfo0;
extern tABSStateInfo1 ABSStateInfo1;
extern tSelfBalanceControl SelfBalanceControl;
extern tCANSOC260 CANSOC260;
extern tCANSOC261 CANSOC261;
extern tCANSOC262 CANSOC262;
extern volatile INT8U G_18FF0102_ReceiveCMP_flg;
extern volatile INT8U G_18FF0102_Receive_8u[8];
extern void CAN_18FF0102_ReadFlash(void);
extern uint16_t RegisterConfigData[50];
extern unsigned char key[20];
extern uint8_t EmergencyRideFlag;
extern void EmergencyRideCheck(void);
extern word_def can_motor_stop_state_adr;
#define can_motor_stop_state can_motor_stop_state_adr.word
#define bStruct_flag can_motor_stop_state_adr.bit.b1
#define Pstate_flag can_motor_stop_state_adr.bit.b0