150 lines
3.2 KiB
C
150 lines
3.2 KiB
C
|
#ifndef __HW_PROTECTION_H__
|
||
|
#define __HW_PROTECTION_H__
|
||
|
#include <meta.h>
|
||
|
#include <core_cm0.h>
|
||
|
|
||
|
|
||
|
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,
|
||
|
OVT_PROT_195C
|
||
|
}OverTempThres_t;
|
||
|
|
||
|
typedef enum{
|
||
|
OVT_ACTION_HW_RESET = 0,
|
||
|
OVT_ACTION_IRQ,
|
||
|
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
|