#ifndef __HW_PROTECTION_H__ #define __HW_PROTECTION_H__ #include #include typedef enum{ OVT_PROT_93C = 0, OVT_PROT_98C, OVT_PROT_104C, OVT_PROT_109C, OVT_PROT_115C, OVT_PROT_121C, OVT_PROT_127C, OVT_PROT_133C, OVT_PROT_139C, OVT_PROT_146C, OVT_PROT_153C, OVT_PROT_160C, OVT_PROT_168C, OVT_PROT_176C, OVT_PROT_185C, }OverTempThres_t; typedef enum{ OVT_ACTION_HW_RESET = 0, OVT_ACTION_NONE, }OverTempAction_t; typedef enum{ OV_VOLT_14_7V = 0U, OV_VOLT_15_2V, OV_VOLT_15_6V, OV_VOLT_16_4V, OV_VOLT_16_8V, OV_VOLT_17_6V, OV_VOLT_18_3V, OV_VOLT_19_0V, OV_VOLT_20_0V, OV_VOLT_20_7V, }OverVoltThres_t; typedef enum{ OV_VOLT_HYS_360mV = 0U, OV_VOLT_HYS_720mV, OV_VOLT_HYS_1080mV, OV_VOLT_HYS_1440mV, }OverVoltHysteresis_t; typedef enum{ UV_VOLT_4_6V = 0x0, UV_VOLT_4_7V, UV_VOLT_5_1V, UV_VOLT_5_2V, UV_VOLT_5_061V, UV_VOLT_5_140V, UV_VOLT_5_221V, UV_VOLT_5_305V, UV_VOLT_5_392V, UV_VOLT_5_482V, UV_VOLT_5_574V, UV_VOLT_5_670V, UV_VOLT_5_770V, UV_VOLT_5_872V, UV_VOLT_5_979V, UV_VOLT_6_089V, UV_VOLT_6_204V, UV_VOLT_6_323V, UV_VOLT_6_447V, UV_VOLT_6_575V, UV_VOLT_6_709V, UV_VOLT_6_849V, UV_VOLT_6_994V, UV_VOLT_7_146V, UV_VOLT_7_304V, UV_VOLT_7_470V, UV_VOLT_7_643V, UV_VOLT_7_825V, UV_VOLT_8_015V, UV_VOLT_8_215V, UV_VOLT_8_425V, UV_VOLT_8_646V, UV_VOLT_8_879V, UV_VOLT_9_125V, UV_VOLT_9_385V, UV_VOLT_9_660V, UV_VOLT_9_952V, UV_VOLT_10_26V, UV_VOLT_10_59V, UV_VOLT_10_94V, }UnderVoltThres_t; typedef enum{ UNDER_VOLT_HYS_470mV = 0U, UNDER_VOLT_HYS_830mV, UNDER_VOLT_HYS_1220mV, UNDER_VOLT_HYS_1630mV, }UnderVoltHysteresis_t; typedef enum{ VOLT_DEBOUNCE_TIME_0ms = 0U, VOLT_DEBOUNCE_TIME_1ms = 16U, VOLT_DEBOUNCE_TIME_2ms = 32U, VOLT_DEBOUNCE_TIME_3ms = 48U, VOLT_DEBOUNCE_TIME_4ms = 64U, VOLT_DEBOUNCE_TIME_5ms = 80U, VOLT_DEBOUNCE_TIME_6ms = 96U, VOLT_DEBOUNCE_TIME_7ms = 112U, VOLT_DEBOUNCE_TIME_8ms = 128U, VOLT_DEBOUNCE_TIME_9ms = 144U, VOLT_DEBOUNCE_TIME_10ms = 160U, VOLT_DEBOUNCE_TIME_11ms = 176U, VOLT_DEBOUNCE_TIME_12ms = 192U, VOLT_DEBOUNCE_TIME_13ms = 208U, VOLT_DEBOUNCE_TIME_14ms = 224U, VOLT_DEBOUNCE_TIME_15ms = 240U, }VoltDebouceTime_t; typedef void (*hwProtIsrCallback_t)(void); void HW_PROT_SetOverTmperature(OverTempThres_t threshold, OverTempAction_t action); void HW_PROT_RegisterOVTemperatureIRQ(hwProtIsrCallback_t callback); void HW_PROT_UnRegisterOVTemperatureIRQ(void); void HW_PROT_SetOverVoltage(OverVoltThres_t threshold,OverVoltHysteresis_t hys, VoltDebouceTime_t triggerTime, VoltDebouceTime_t releaseTime); void HW_PROT_RegisterOverVoltageIRQ(hwProtIsrCallback_t callback); void HW_PROT_UnRegisterOverVoltageIRQ(void); void HW_PROT_SetUnderVoltage(UnderVoltThres_t threshold,UnderVoltHysteresis_t hys, VoltDebouceTime_t triggerTime, VoltDebouceTime_t releaseTime); void HW_PROT_RegisterUnderVoltageIRQ(hwProtIsrCallback_t callback); void HW_PROT_UnRegisterUnderVoltageIRQ(void); /* return 0: normal , 1: low, 2:high */ uint8_t HW_PROT_GetBattVoltState(void); /* return 0: normal , others : over heat */ uint8_t HW_PROT_ChipIsOverHeat(void); #endif