/** * @file bikelight.h * @author Wang, Zhiyu(wangzy49@midea.com) * @brief Light of ebike * @version 0.1 * @date 2021-10-09 * * @copyright Copyright (c) 2021 * */ /************************************************************************ Beginning of File, do not put anything above here except notes Compiler Directives: *************************************************************************/ #ifndef BIKELIGHT_H #define BIKELIGHT_H #include "api_rt.h" #ifdef BIKELIGHT_ #define EXTERNBIKE #else #define EXTERNBIKE extern #endif //--------------------------------------- /* 前灯控制IO on/off */ #define IO_FORWARDLED_ON() iGpio_Write(HW_GPIO_FLIG_EN_PIN,iGpio_HighLevel)//PC15 #define IO_FORWARDLED_OFF() iGpio_Write(HW_GPIO_FLIG_EN_PIN,iGpio_LowLevel) //PC15 #define IO_FORWARDLED_12V_ENABLE() iGpio_Write(HW_GPIO_FLIG_6V_12V_EN_PIN,iGpio_HighLevel)//PC13 #define IO_FORWARDLED_12V_DISABLE() iGpio_Write(HW_GPIO_FLIG_6V_12V_EN_PIN,iGpio_LowLevel)//PC13 /* 后灯控制IO on/off */ #define IO_BACKLED_ON() iGpio_Write(HW_GPIO_BLIG_EN_PIN,iGpio_HighLevel)//PC8 #define IO_BACKLED_OFF() iGpio_Write(HW_GPIO_BLIG_EN_PIN,iGpio_LowLevel) //PC8 #define IO_BACKLED_12V_ENABLE() iGpio_Write(HW_GPIO_BLIG_6V_12V_EN_PIN,iGpio_HighLevel)//PC7 #define IO_BACKLED_12V_DISABLE() iGpio_Write(HW_GPIO_BLIG_6V_12V_EN_PIN,iGpio_LowLevel)//PC7 //--------------------------------------- #define BikeLedAddCycle 8 //亮尾灯周期 #define BikeLedAddDuty 4 //亮尾灯占空比 #define BikeLedFlickerHZ 5 //亮尾闪烁频率 #define BikeLedFlickerCycle 1000/BikeLedFlickerHZ //亮尾灯周期 #define BikeLedFlickerDuty BikeLedFlickerCycle/2 //亮尾灯占比 //#define BikeLedOverSpedHZ 3 //亮尾闪烁频率 #define BikeLedOverSpedCycle 3000 //周期 #define BikeLedOverSpedDuty 500 //超速15KM/H亮尾灯占比 #define BikeLedOverSpeedMax 150 //基本单位0.1km/h #define BikeLedOverSpeedMin 140 //基本单位0.1km/h //--------------------------------------------------------- #define LIGHT_ERR_VOLTAGE_MAX 70 // 0.1v #define LIGHT_ERR_VOLTAGE_MIN 50 // 0.1v #define LIGHT_OFFERR_VOLTAGE 10 // 0.1v #define LEDERRTIME 20 //LED灯电路检测错误次数 #define LEDRISETIME 20 //上升沿时间 1ms单位 #define LEDFALLTIME 1500 //下降沿时间 1ms单位 typedef enum { one_byte = 0, two_byte = 1, Three_byte = 2, four_byte = 3, five_byte = 4, six_byte = 5 } LED_TYPE_STR; typedef struct { UBYTE ubBike_keyLedSta; // 开关灯临时状态 UWORD uwLedAddcnt; } BIKELED_STR; typedef struct { UWORD LedOnVoltMax; // 开灯时上限电压 UWORD LedOnVoltMin; //开灯时下限电压 BOOL blBike_LedOnErr; // 开灯电路故障状态 UWORD blBike_LedOnErrCnt; // 开灯电路滤波 UWORD blBike_LedOnErrDCnt; // 开灯电路滤波 UWORD blBike_LedOnErrAddNO; // 开灯电路错误次数累加值 UWORD LedOffVoltMax; // 关灯时上限电压 BOOL blBike_LedOffErr; // 关灯电路故障状态 UWORD blBike_LedOffErrCnt; // 关灯电路滤波 UWORD blBike_LedOffErrDCnt; // 关灯电路滤波 UWORD blBike_LedOffErrAddNO; // 光灯电路错误次数累加值 } BIKELEDCHECK_STR; typedef struct { BOOL blBike_ForwardLedSta; // 前灯开关状态 BOOL blBike_BackLedSta; //尾灯开关状态 BOOL blBike_ForwardLedDetErr; // 前灯电路 BOOL blBike_BackLedDetErr; // 尾灯电路 } BIKELED_Global_STR; EXTERNBIKE BIKELED_Global_STR BikeLedGloFun; //--------------------------------------- /**************************************** * * Definitions & Macros * ****************************************/ #define BIKELIGHT_OUT_DEFAULT \ { \ 0, 0, 0, FALSE, LIGHT_Off \ } // Default value of BIKELIGHT_OUT #define BIKELIGHT_COEF_DEFAULT \ { \ 0, 0, 0, 0, 0 \ } #define LIGHT_POWER_ERROR_VOLTAGE_UP 70 // 0.1v #define LIGHT_POWER_ERROR_VOLTAGE_DOWN 50 // 0.1v #define LIGHT_POWER_ERROR_DETECT 2000 // ms #define LIGHT_POWER_ERROR_RECOVER 2000 // ms #define LIGHT_POWER_ERROR_SHUT 2000 // ms #define LIGHT_POWER_ERROR_TIMEUNIT 200 // ms /*************************************** * * Type Definations * ***************************************/ /** * @brief Light state * */ typedef enum { LIGHT_Off = 0, LIGHT_On = 1, LIGHT_Error = 2, LIGHT_Shut = 3 } LIGHT_STATE; /** * @brief BikeLight out * */ typedef struct { UWORD uwBikeLightErrorCnt; // Cnt of detect GPIO low voltage UWORD uwBikeLightRecoverCnt; // Cnt of detect GPIO high voltage UWORD uwBikeLightShutCnt; // Cnt of detect GPIO high voltage BOOL blBikeLightErrorFlg; // flag of light error LIGHT_STATE LightState; // state of light } BIKELIGHT_OUT; typedef struct { UWORD uwBikeLightErrorCnt; // Cnt of detect GPIO low voltage UWORD uwBikeLightRecoverCnt; // Cnt of detect GPIO high voltage UWORD uwBikeLightShutCnt; // Cnt of detect GPIO high voltage UWORD uwBikeLightErrorVoltagePuDown; // flag of light error UWORD uwBikeLightErrorVoltagePuUp; // flag of light error } BIKELIGHT_COEF; /**************************************** * * Exported variable * ****************************************/ /*************************************** * * Function Definations * ***************************************/ void bikelight_voBikeLightInit(void); // interface function void bikelight_voBikeLightCoef(UWORD volt); void bikelight_voGetBikeLightError(UWORD LightPowerVolPu,BOOL Ledsta,BIKELEDCHECK_STR *p); //void bikelight_voGetBikeLightError(UWORD LightPowerVolPu); void bikelight_voBikeLightControl(UWORD switchAction, BOOL Brate_Sta,UBYTE BackLedMode); //void bikelight_voBikeLightControl(UWORD switchAction); // interface function /************************************************************************ Flag Define (N/A) *************************************************************************/ #endif /************************************************************************ Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* End of this File (EOF): Do not put anything after this part! *************************************************************************/