123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #ifndef __ENVIOLO_CAN_H_
- #define __ENVIOLO_CAN_H_
- #include "stdint.h"
- #include "can.h"
- #include "var.h"
- #define ENVIOLO_CONFIG_ID 0x7AC
- #define ENVIOLO_CONTROL_ID 0x7AD
- /*********************************Enviolo自动变速器通信协议内容******************************/
- //变速器运行信息
- typedef struct GEAR_INFO1
- {
- uint8_t Pedal_Rpm; //踏频 1bit = 1rpm
- uint8_t Actual_Ratio; //变速比 1bit = 0.1ratio
- uint8_t Bike_Speed; //车速 1bit = 0.5km/h
- uint8_t Battery_Vol; //电池电压 1bit = 0.25V
- uint16_t Wheel_Rpm; //车轮转速 1bit = 1rpm
- union STATUS_FLAG //状态标志
- {
- struct
- {
- uint8_t RS1 :1;
- uint8_t RS2 :1;
- uint8_t RS3 :1;
- uint8_t ShiftActiveFlag :1; //档位切换
- uint8_t CaliNeedFlag :1; //需要校准
- uint8_t CaliSuccessFlag :1; //校准成功
- uint8_t PowerOnFlag :1; //开机
- uint8_t InitialFlag :1; //初始化完成
- }StatusFlagBit;
- uint8_t Flag;
- }StatusFlag;
- union ERROR_FLAG //错误标志
- {
- struct
- {
- uint8_t OverCurrentFlag :1; //过流
- uint8_t CaliFailFlag :1; //校准失败
- uint8_t RS1 :1;
- uint8_t StallFlag :1; //工作异常
- uint8_t RS2 :1;
- uint8_t RS3 :1;
- uint8_t RS4 :1;
- uint8_t RS5 :1;
- }ErrorFlagBit;
- uint8_t Flag;
- }ErrorFlag;
- uint8_t RS1;
- }EnvioloGearInfo1_Struct_t;
- //变速器运行参数
- typedef struct GEAR_INFO2
- {
- uint8_t PCB_Version_Major;
- uint8_t PCB_Version_Mino;
- uint8_t PCB_Version_BugFix;
- uint8_t RS1;
- uint8_t Soft_Version;
- uint8_t RS2;
- uint8_t RS3;
- uint8_t RS4;
- }EnvioloGearInfo2_Struct_t;
- //变速器配置参数
- typedef struct CONFIG_PARAMS
- {
- uint8_t FrontChain; //前牙盘 1bit = 1tooth
- uint8_t RearTeeth; //后牙盘 1bit = 1tooth
- uint8_t CadenceMin; //自动模式最低踏频 1bit = 1rpm
- uint8_t CadenceMax; //自动模式最高踏频 1bit = 1rpm
- uint8_t RS1;
- uint8_t WheelSize; //轮胎周长 1bit = 1cm, offset = 100cm
- uint8_t SleepTime; //自动关机时间 1bit = 1min
- uint8_t RS2;
- }EnvioloConfigParams_Struct_t;
- //变速器模式枚举
- typedef enum GEAR_MODE
- {
- ENVIOLO_INACTIVE = 0x00,
- ENVIOLO_ACTIVE = 0x01,
- ENVIOLO_MANUAL_MODE = 0x03,
- ENVIOLO_AUTO_MODE = 0x04,
- ENVIOLO_CAL_MODE = 0x08
- }GearMode_Struct_t;
- //变速器控制参数
- typedef struct CONTROL_PARAMS
- {
- GearMode_Struct_t GearMode;
- uint16_t RatioMode_Data;
- uint16_t CadenceMode_Data;
- uint8_t RS1;
- uint8_t RS2;
- uint8_t RS3;
- }EnvioloControlParams_Struct_t;
- /**********************************End******************************/
- //变速器CAN报文数据
- typedef struct GEARBOX_CAN_DATA
- {
- TrueOrFalse_Flag_Struct_t RefreshFlag;
- uint8_t RS;
- uint16_t ID;
- uint8_t Data[8];
- }GearBox_CanData_Struct_t;
- /******************************仪表与变速器通信协议内容*******************************/
- //发送仪表运行信息变速器运行状态
- typedef enum GEAR_BOX_STATUS
- {
- GEAR_STATUS_INITIAL = (uint8_t)(1 << 5), //初始化模式
- GEAR_STATUS_MANUAL = (uint8_t)(2 << 5), //手动模式
- GEAR_STATUS_AUTO = (uint8_t)(4 << 5), //自动模式
- GEAR_STATUS_OFFLINE = (uint8_t)0xF0 //离线模式
- }GearBox_Status_Struct_t;
- //仪表发送变速器工作模式
- typedef enum GEAR_BOX_MODE
- {
- GEAR_MODE_NULL = (uint8_t)0x00, //初始化模式位无效值
- GEAR_MODE_MANUAL = (uint8_t)0x03, //自动模式
- GEAR_MODE_AUTO = (uint8_t)0x04, //手动模式
- GEAR_MODE_CAL = (uint8_t)0x08 //校准模式
- }GearBox_Mode_Struct_t;
- //发送仪表校准状态
- typedef enum GEAR_BOX_CAL_FLAG
- {
- GEAR_CAL_SUCCESS = 0X00, //无需校准或校准成功
- GEAR_CAL_NEED = 0x01, //需要校准
- GEAR_CAL_PEDAL = 0x02 //提示踩踏
- }GearBox_CalFlag_Struct_t;
- //仪表设置变速器模式 0x4008
- typedef struct OBC_SET_MODE
- {
- GearBox_Mode_Struct_t Mode; //变速器工作模式,手动、自动、校准
- uint8_t Value; //手动模式变速比或自动模式目标踏频
- uint8_t RS[6];
- }GearBox_OBC_SetMode_Struct_t;
- //仪表配置变速器参数 0x4208
- typedef struct OBC_SET_PARAMS
- {
- uint8_t GearNum; //手动模式档位数量
- uint8_t CadenceMin; //自动模式最低踏频
- uint8_t CadenceMax; //自动模式最高踏频
- uint8_t RS[5];
- }GearBox_OBC_SetParams_Struct_t;
- /*************************************End*************************************/
- //全局变量定义
- extern EnvioloGearInfo1_Struct_t EnvioloGearInfo1; //Enviolo变速器运行信息,踏频、传动比、车速、电压、车轮转速、状态、错误码等
- extern EnvioloGearInfo2_Struct_t EnvioloGearInfo2; //Enviolo变速器版本信息
- extern EnvioloConfigParams_Struct_t EnvioloConfigParams; //Enviolo变速器配置参数,前牙盘、后牙盘、最低踏频、最高踏频、周长、自动关机时间等
- extern EnvioloControlParams_Struct_t EnvioloControlParams; //Enviolo变速器控制参数,运行模式(手动、自动、校准)、目标传动比或目标踏频
- extern GearBox_CanData_Struct_t GearBox_CanData; //变速器CAN报文
- extern ComOK_Check_Struct_t GearBox_OnlineFlag; //变速器通信状态检测
- extern GearBox_OBC_SetMode_Struct_t GearBox_OBC_SetMode; //仪表设置变速器配置参数,手动或自动或校准、手动变速比或自动踏频
- extern GearBox_OBC_SetParams_Struct_t GearBox_OBC_SetParams; //仪表设置变速器工作参数,手动档位数量、自动最低踏频、自动最高踏频
- extern GearBox_Status_Struct_t GearBox_Status; //变速器当前状态,初始化、手动、自动、离线
- extern GearBox_CalFlag_Struct_t GearBox_CalFlag; //变速器校准标志,无需校准或校准成功、需要校准、提示踩踏
- extern uint16_t GearBox_RatioTable[24]; //变速器变速比与档位对照表
- //全局函数定义
- extern void GearBox_CanProcess(GearBox_CanData_Struct_t* CanData);
- extern void GearBox_Send_OBC_Params(GearBox_CalFlag_Struct_t CalFlag, GearBox_OBC_SetParams_Struct_t* p_GearBox_OBC_SetParams, uint8_t* p_EnvioloSoftVer);
- extern void GearBox_Init(void);//根据Enviolo的通信状态确定变速器是否在线,初始化变速器工作参数
- extern void GearBox_Loop(void);//变速器数据处理主函数
- #endif
|