forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-23 e5ec6ffc2fa0c07785c9d797c3fd74fd3031059f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#ifndef _POWER_MANAGE_H_
#define _POWER_MANAGE_H_
 
#include "define_all.h" 
 
// µçÁ¿²ÎÊý±ê־λÉèÖÃ
#define __VCC_PARA_FLAG_SET_(__HANDLE__) ((&pwr_vol_g)->__HANDLE__ = SET)
// µçÁ¿²ÎÊý±ê־λÇå³ý
#define __VCC_PARA_FLAG_CLEAR_(__HANDLE__) ((&pwr_vol_g)->__HANDLE__ = RESET)
 
// ï®µç¶ªÊ§
#define LITH_PWR_LOSE_PORT     GPIOD
#define LITH_PWR_LOSE_PIN     GPIO_Pin_0
#define    LITH_PWR_LOSE_IO_READ    GPIO_ReadInputDataBit(LITH_PWR_LOSE_PORT, LITH_PWR_LOSE_PIN)
 
// ï®µç¼ì²â¿ª¹Ø
#define LITH_DETECTION_PORT    GPIOF
#define LITH_DETECTION_PIN        GPIO_Pin_3
 
#define LIT_DEC_ON        GPIO_SetBits(LITH_DETECTION_PORT,LITH_DETECTION_PIN)
#define LIT_DEC_OFF        GPIO_ResetBits(LITH_DETECTION_PORT,LITH_DETECTION_PIN)
 
 
// ¼îµç¶ªÊ§
#define ALKA_PWR_LOSE_PORT     GPIOF
#define ALKA_PWR_LOSE_PIN     GPIO_Pin_11
#define    ALKA_PWR_LOSE_IO_READ    GPIO_ReadInputDataBit(ALKA_PWR_LOSE_PORT, ALKA_PWR_LOSE_PIN)
 
// ¼îµç¼ì²â¿ª¹Ø
#define ALKA_DETECTION_PORT     GPIOF
#define ALKA_DETECTION_PIN         GPIO_Pin_4
 
#define ALK_DEC_ON        GPIO_SetBits(ALKA_DETECTION_PORT,ALKA_DETECTION_PIN)
#define ALK_DEC_OFF        GPIO_ResetBits(ALKA_DETECTION_PORT,ALKA_DETECTION_PIN)
 
 
// ½èµç
#define BORROW_PWR_PORT GPIOG
#define BORROW_PWR_PIN     GPIO_Pin_2
 
#define BORROW_PWR_ON        GPIO_ResetBits(BORROW_PWR_PORT,BORROW_PWR_PIN)
#define BORROW_PWR_OFF    GPIO_SetBits(BORROW_PWR_PORT,BORROW_PWR_PIN)
 
//Íâµç¼ì²â¶Ë¿Ú
#define HWIDO_EX_PWR_PORT GPIOF
#define HWIDO_EX_PWR_PIN     GPIO_Pin_5
 
#define    HWIDO_EX_PWR_IO_READ    GPIO_ReadInputDataBit(HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN)
 
//Íâµç¿ØÖƶ˿Ú
#define EX_PWR_EN_PORT GPIOG
#define EX_PWR_EN_PIN     GPIO_Pin_3
#define EX_PWR_ON        GPIO_SetBits(EX_PWR_EN_PORT,EX_PWR_EN_PIN)
#define EX_PWR_OFF    GPIO_ResetBits(EX_PWR_EN_PORT,EX_PWR_EN_PIN)
 
 
#define    AD_LITH_PF6_BAT_CH                                  5
#define    AD_LITH_PF6_BAT_CNT                                  8
#define    LITH_PF6_VOL_COE                                           1.206f
 
#define    AD_LITH_BAT_REF_VOL                              5.0f
#define    AD_LITH_BAT_CH                                  4
#define    AD_LITH_BAT_CNT                                  8
#define    LITH_VOL_COE                                           2.01f
 
#define    AD_ALKA_BAT_REF_VOL                              5.0f
#define    AD_ALKA_BAT_CH                                  8
#define    AD_ALKA_BAT_CNT                                  8
#define    ALKA_VOL_COE                                        3.14f    
 
#define AD_VTEM_CH                                                ADC_CFGR_BUFSEL_TS
#define AD_VTEM_CNT                                                8
 
 
//Ê£ÓàµçÁ¿°Ù·Ö±È¼¶Êý
#define BAT_PERSENT_LEVEL_3  70
#define BAT_PERSENT_LEVEL_2  40
#define BAT_PERSENT_LEVEL_1  20
#define BAT_PERSENT_LEVEL_0  0
 
 
typedef enum
{
    LMS_NONE,
    LMS_PERIOD,
    LMS_KEY,
    LMS_OPEN_VALVE_BEFORE,
}LITH_MEASURE_STATUS;
typedef enum
{
    AMS_NONE,
    AMS_PERIOD,
    AMS_KEY,
    AMS_WRC_BEFORE,
    AMS_VALVE_CTRL_BEFORE
}ALKA_MEASURE_STATUS;
 
typedef enum
{
    BAT_V_NONE,  //ÎÞ״̬
//    BAT_V_LOSE, //¶ªÊ§£¬¼´¼ì²âµçѹ¼«µÍ£¬ÈÏΪµç³Ø¶ªÊ§
    BAT_V_DOWN, //Ƿѹ
    BAT_V_LOW,  //µÍµç
}BAT_V_STATUS;
 
 
 
#pragma    pack(1)
//ÈáÐÔÊý×é
//Óŵ㣺ʹÓöѿռ䣬µØÖ·Á¬Ðø¼õÉÙË鯬Äڴ棨Ïà¶ÔÖ¸ÕëÊý¾Ý£©
//ȱµã£ºÃ¿´ÎʹÓÃÍêÐèÒªÊÖ¶¯ÊÍ·Å
typedef struct ad_data_get{
    u8                ad_ch;
    u16                ad_buffer_cnt;
    uint32_t    ad_get_buffer[];
}ad_data_s;
 
#pragma pack()
 
 
typedef struct pwr_vol{
    LITH_MEASURE_STATUS lith_flag; //µçÁ¿²âÁ¿±ê־λ
    ALKA_MEASURE_STATUS alka_flag; 
  FlagStatus mcu_temp_flag; //mcuζȱê־λ
    FlagStatus    lith_lose_check_flag;  //´¥·¢ï®µçµôµç¼ì²â±êÖ¾
    FlagStatus    alka_lose_check_flag;  //´¥·¢¼îµçµôµç¼ì²â±êÖ¾
    float lith_vcc;
    BAT_V_STATUS    lith_vcc_status;
    float alka_vcc;
    BAT_V_STATUS    alka_vcc_status;
  float mcu_temperature;
    int8_t    lith_vcc_per; //¸ù¾Ýµçѹ¼ÆËãµÄ°Ù·Ö±È
    int8_t    lith_remain_use_time_per; //¸ù¾ÝʹÓÃʱ¼ä¼ÆËãµÄÊ£Óà°Ù·Ö±È
    int8_t    lith_synthesize_per;  //¸ù¾ÝµçѹºÍʹÓÃʱ¼äºÏ³ÉµÄ°Ù·Ö±È£¬×îÖÕ¶ÔÍâÊä³öµÄ°Ù·Ö±È
    
    int8_t    alka_vcc_per; //¸ù¾Ýµçѹ¼ÆËãµÄ°Ù·Ö±È
    
    int8_t    ex_pwr_in_cnt;  //Íâµç´æÔÚÁ¬Ðø¼ÆÊý
    int8_t    ex_pwr_out_cnt; //Íâµç²»´æÔÚÁ¬Ðø¼ÆÊý
    
}PWR_VOL_T;
 
 
 
 
 
extern uint8_t first_power_get_cnt_g;
 
extern PWR_VOL_T pwr_vol_g;
 
void Power_IO_Init(void);
 
float Get_Alka_Bat_Voltage(void);
float Get_Lith_Bat_Voltage(void);
 
void GetPwrStatusPro(PWR_VOL_T * pwr_vol_p);
 
void PowerManagrInit(void);
 
#endif