ZDBMS/output/AFE.lst

564 lines
26 KiB
Plaintext
Raw Normal View History

2025-02-06 07:35:32 +00:00
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE AFE
OBJECT MODULE PLACED IN .\output\AFE.obj
COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\AFE.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load.OR
-C) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_c
-lassb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\AFE.lst) OBJECT(.\output\AFE.obj)
line level source
1 /********************************************************************************
2 Copyright (C), Sinowealth Electronic. Ltd.
3 Author: Sino
4 Version: V0.0
5 Date: 2020/04/26
6 History:
7 V2.0 2020/04/26 Preliminary
8 ********************************************************************************/
9 #include "Main.h"
10
11 //AFE<46><45><EFBFBD>صı<D8B5><C4B1><EFBFBD>
12 BOOL bAfeAlarmFlg;
13 BOOL bCADCFlg;
14 BOOL bVADCFlg;
15 BOOL bAfeI2CRWErrFlg;
16 BOOL bAfeErr;
17 U8 data ucCellNum; //<2F><>ǰӲ<C7B0><D3B2><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD>
18 U8 data ucCellNumOffset; //<2F><>ǰӲ<C7B0><D3B2><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>ӷ<EFBFBD>ʽ<EFBFBD><CABD>Ӧ<EFBFBD><D3A6>ƫ<EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ȡAFE<46><45>Ӧ<EFBFBD><D3A6>
-<2D><><EFBFBD><EFBFBD>
19 U16 data uiCellVmax; //<2F><>о<EFBFBD><D0BE>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ֵ
20 U16 data uiCellVmin; //<2F><>о<EFBFBD><D0BE>ѹ<EFBFBD><D1B9>Сֵ
21 U16 xdata uiVadcVmax; //ADC<44>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>ֵ
22 U16 xdata uiVadcVmin; //ADC<44>ɼ<EFBFBD><C9BC><EFBFBD>Сֵ
23 U8 xdata ucTempeMiddle;
24 U16 xdata uiTempeMin;
25 U16 xdata uiTempeMax;
26 S32 xdata slCadcCurrent;
27 S32 xdata slCadcCurAverage;
28 U8 xdata ucCadcCnt;
29 S32 xdata slCadcCurBuf[16];
30 U8 xdata ucAfeI2CErrDelayCnt;
31 SYSINFOR xdata Info; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
32 AFEDATA xdata AFE; //AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ֵ
33 AFEREG xdata REG; //AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD>Ԥ<EFBFBD><D4A4>ֵ
34
35
36
37 /*************************************************************************************************
38 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFETwiCheck
39 * <20><> <20><>: <20><>
40 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
41 * <20><> <20><>: <20><><EFBFBD><EFBFBD>5S<35><53><EFBFBD>⵽AFE<46><45>I2CͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbAfeErr=1
42 *************************************************************************************************/
43 void AFETwiCheck(void)
44 {
45 1 if(bAfeI2CRWErrFlg)
46 1 {
47 2 if(++ucAfeI2CErrDelayCnt >= TIME_1S_5S)
48 2 {
49 3 bAfeErr = 1;
50 3 ucAfeI2CErrDelayCnt = TIME_1S_5S;
51 3 }
52 2 }
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 2
53 1 else
54 1 {
55 2 ucAfeI2CErrDelayCnt = 0;
56 2 }
57 1 }
58
59
60 /*************************************************************************************************
61 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEWriteReg
62 * <20><> <20><>: Reg<65><67><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
63 WrBuf<75><66>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>1Byte<74><65><EFBFBD><EFBFBD>+1Byte CRC
64 * <20><><EFBFBD><EFBFBD>ֵ: 1:<3A>ɹ<EFBFBD><C9B9><EFBFBD>0:ʧ<><CAA7>
65 * <20><> <20><>: дAFE<46>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>дһ<D0B4><D2BB><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
66 *************************************************************************************************/
67 BOOL AFEWriteReg(U8 Reg, U8 Length, U8 xdata *WrBuf)
68 {
69 1 BOOL Result = 0;
70 1 U8 Times = 0;
71 1 U8 i;
72 1
73 1 if(!bAfeErr)
74 1 {
75 2 for(i=0; i<Length; i++)
76 2 {
77 3 while(Times++ < 5)
78 3 {
79 4 #ifdef TWI_Hardware_Module
80 4 {
81 5 Result = TwiWrite(AFE_ID, Reg, TWI_ADDR_1B, 1, TWI_CRC_YES, WrBuf);
82 5 }
83 4 #else
{
Result = TwiWrite(AFE_ID, Reg, 1, WrBuf);
}
#endif
88 4 if(Result)
89 4 {
90 5 break;
91 5 }
92 4 else
93 4 {
94 5 TWICON = 0; //Close TWI module
95 5 Delay1ms(1);
96 5 TwiInit(); //Reinitial
97 5 Delay1ms(1);
98 5 }
99 4 }
100 3 if(Times >= 5)
101 3 {
102 4 break;
103 4 }
104 3 else
105 3 {
106 4 Times = 0;
107 4 Reg++;
108 4 WrBuf++;
109 4 }
110 3 Delay1ms(1);
111 3 }
112 2 }
113 1 bAfeI2CRWErrFlg = !Result; //<2F><><EFBFBD><EFBFBD>ͨѶ<CDA8>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
114 1
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 3
115 1 return Result;
116 1 }
117
118
119 /*************************************************************************************************
120 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEReadReg
121 * <20><> <20><>: Reg<65><67><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
122 RdBuf<75><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>2Byte<74><65><EFBFBD><EFBFBD>+1Byte CRC
123 * <20><><EFBFBD><EFBFBD>ֵ: 1:<3A>ɹ<EFBFBD><C9B9><EFBFBD>0:ʧ<><CAA7>
124 * <20><> <20><>: <20><>AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
125 *************************************************************************************************/
126 BOOL AFEReadReg(U8 Reg, U8 Length , U8 xdata *RdBuf)
127 {
128 1 BOOL Result = 0;
129 1 U8 Times = 0;
130 1
131 1 if(!bAfeErr)
132 1 {
133 2 while(Times++ < 5) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Try 5<><35>
134 2 {
135 3 #ifdef TWI_Hardware_Module
136 3 Result = TwiRead(AFE_ID, Reg, TWI_ADDR_1B, Length, TWI_CRC_YES, RdBuf);
137 3 #else
Result = TwiRead(AFE_ID, Reg, Length, RdBuf);
#endif
140 3 if(Result) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>CRCУ<43><D0A3><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>سɹ<D8B3><C9B9><EFBFBD><EFBFBD><EFBFBD>־
141 3 {
142 4 break;
143 4 }
144 3 else //<2F><><EFBFBD><EFBFBD>TWI<57><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRCУ<43><D0A3>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>ʱ1mS֮<53><D6AE><EFBFBD>ٶ<EFBFBD>ȡ
145 3 {
146 4 TWICON = 0; //Close TWI module
147 4 Delay1ms(1);
148 4 TwiInit(); //Reinitial
149 4 Delay1ms(1);
150 4 }
151 3 }
152 2 }
153 1 bAfeI2CRWErrFlg = !Result; //<2F><><EFBFBD><EFBFBD>ͨѶ<CDA8>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
154 1
155 1 return Result;
156 1 }
157
158
159 /*************************************************************************************************
160 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEClrFlg
161 * <20><> <20><>:
162 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
163 * <20><> <20><>: <20><><EFBFBD><EFBFBD>AFE<46><45>־<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
164 *************************************************************************************************/
165 void AFEClrFlg(void)
166 {
167 1 if(AFEReadReg(AFE_FLAG1, 2, &REG.AFEFLAG1))
168 1 {
169 2 if((REG.AFEFLAG1!=0) || (REG.AFEFLAG2!=0))
170 2 {
171 3 REG.AFESCONF1 |= 0x80;
172 3 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
173 3 REG.AFESCONF1 &= ~0x80;
174 3 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
175 3 }
176 2 }
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 4
177 1 }
178
179
180 /*************************************************************************************************
181 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEInitReg
182 * <20><> <20><>: <20><>
183 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
184 * <20><> <20><>: <20><>ʼ<EFBFBD><CABC>AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD>
185 *************************************************************************************************/
186 void AFEInitReg(void)
187 {
188 1 U16 TempVar;
189 1
190 1 REG.AFEINTEN = 0x00; //<2F><>ȡ<EFBFBD><C8A1>ѯʽ<D1AF><CABD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD>ҪALARM<52>ж<EFBFBD>
191 1 REG.AFESCONF1 = 0x50; //ʹ<><CAB9>CTLD<4C><44>WDT<44><54><EFBFBD><EFBFBD>
192 1 REG.AFESCONF2 = 0x00; //AFE<46><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD>źţ<C5BA>ALARM<52><4D><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ŵ<EFBFBD>MOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MOS<4F><53><EFBFBD>ر<EFBFBD>
193 1 REG.AFESCONF3 = 0xF8; //Ĭ<><C4AC>VADC<44><43>CADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10λADC<44><43>VADCֻ<43>ɼ<EFBFBD>
-<2D><>ѹת<D1B9><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>50ms
194 1 REG.AFESCONF4 = 0x00; //Ĭ<>Ϲر<CFB9>ƽ<EFBFBD><C6BD>BAT6-10
195 1 REG.AFESCONF5 = 0x00; //Ĭ<>Ϲر<CFB9>ƽ<EFBFBD><C6BD>BAT1-5
196 1 REG.AFESCONF6 = 0x70; //CADC<44>ɼ<EFBFBD>200mV<6D><56>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>λ<EFBFBD>źſ<C5BA><C5BF><EFBFBD>1S<31><53>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ100mV<6D><56>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ5
-0uS
197 1 REG.AFESCONF7 = 0x01; //Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B1A3><EFBFBD><EFBFBD>ʱ1<CAB1><31>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ŵ<EFBFBD>״̬<D7B4><CCAC>ֵѡ<D6B5><D1A1>λ1.4mV<EFBFBD>
-<2D><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD>10S
198 1 REG.AFESCONF8 = 0x03; //SCONF8 + SCONF9 = 11 1111 1111 = 1023
199 1 REG.AFESCONF9 = 0xff; //Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B1A3><EFBFBD><EFBFBD>ֵ1023*5.86mV = 5994.78
200 1 REG.AFESCONF10= 0x00; //<2F>͹<EFBFBD><CDB9>Ŀ<EFBFBD><C4BF><EFBFBD>λ<EFBFBD><CEBB>д<EFBFBD><D0B4>0x33<33><33>дPD_EN=1<><31><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><CDB9><EFBFBD>
201 1
202 1 if(bSC_EN) //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>AFE<46><45>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
203 1 {
204 2 REG.AFESCONF1 |= 0x08;
205 2 REG.AFESCONF6 |= (E2ucAFEProtectConfig&0x0f);//<2F><>FLASH<53>ڲ<EFBFBD><DAB2><EFBFBD>д<EFBFBD><D0B4>AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD>
206 2 }
207 1 if(bOV_EN) //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>AFE<46><45>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
208 1 {
209 2 REG.AFESCONF1 |= 0x04;
210 2 REG.AFESCONF7 |= (E2ucAFEProtectConfig&0xf0);//<2F><>FLASH<53>ڲ<EFBFBD><DAB2><EFBFBD>д<EFBFBD><D0B4>AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD>
211 2 TempVar = (U32)E2uiAFEOVvol*50/293; //ȡ<><C8A1><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
212 2 REG.AFESCONF8 = TempVar>>8; //д<><D0B4><EFBFBD><EFBFBD>λ
213 2 REG.AFESCONF9 = TempVar; //д<>Ͱ<EFBFBD>λ
214 2 }
215 1 }
216
217
218
219 /*************************************************************************************************
220 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEInit
221 * <20><> <20><>:
222 * <20><><EFBFBD><EFBFBD>ֵ: 1:<3A>ɹ<EFBFBD><C9B9><EFBFBD>0:ʧ<><CAA7>
223 * <20><> <20><>: <20><>ʼ<EFBFBD><CABC>AFE
224 *************************************************************************************************/
225 BOOL AFEInit(void)
226 {
227 1 U8 xdata RdBuf[2];
228 1 U8 i;
229 1 BOOL Result = 1;
230 1 U8 j = 3;
231 1
232 1 while(j--)
233 1 {
234 2 if( AFEWriteReg(AFE_INT_EN, 11, &REG.AFEINTEN))
235 2 {
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 5
236 3 for(i=3; i<=11; i=i+2)
237 3 {
238 4 AFEReadReg(i, 2, RdBuf);
239 4
240 4 if((RdBuf[0]!=*(&REG.AFEFLAG1+i)) || (RdBuf[1]!=*(&REG.AFEFLAG1+i+1)))
241 4 {
242 5 if(i != 7) //ƽ<><C6BD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC>Ϊƽ<CEAA><C6BD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30s<30><73><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
243 5 {
244 6 Result = 0;
245 6 break;
246 6 }
247 5 }
248 4 }
249 3 }
250 2 else
251 2 {
252 3 Result = 0;
253 3 }
254 2 if(Result)
255 2 {
256 3 break;
257 3 }
258 2 }
259 1 return Result;
260 1
261 1 }
262
263
264 /*************************************************************************************************
265 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFERdFlg
266 * <20><> <20><>:
267 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
268 * <20><> <20><>: <20><>ȡAFE<46><45>־<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
269 AFE_SC<53><43>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
270 FLAG2<47><32>bit2Ϊ1<CEAA><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>LVR<56><52>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>AFE
271 *************************************************************************************************/
272 void AFERdFlg(void)
273 {
274 1 if(AFEReadReg(AFE_FLAG1, 2, &REG.AFEFLAG1))
275 1 {
276 2 if((REG.AFEFLAG2&0x02) != 0) //CADC <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
277 2 {
278 3 bCADCFlg = 1;
279 3 }
280 2
281 2 if((REG.AFEFLAG2&0x01) != 0) //VADC <20><>ѹת<D1B9><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
282 2 {
283 3 bVADCFlg = 1;
284 3 }
285 2
286 2 if((REG.AFEFLAG1&0x08) != 0 && (bLoadChkingFlg != 1)) //AFE<46><45>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
287 2 {
288 3 bAFE_SC = 1;
289 3 bLoadStartCheckFlg = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
290 3 }
291 2 if((REG.AFEFLAG1&0x04) != 0) //AFE Ӳ<><D3B2><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
292 2 {
293 3 bAFE_OV= 1;
294 3 }
295 2
296 2 if((REG.AFEFLAG2&0x04) != 0) //<2F>ж<EFBFBD>FLAG2<47><32>bit2<74>Ƿ<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD>ʾAFE<46><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LVR<56><52><EFBFBD><EFBFBD><EFBFBD>
-<2D><><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD>
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 6
297 2 {
298 3 AFEInit();
299 3 }
300 2 }
301 1 }
302
303
304 /*************************************************************************************************
305 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFERdStatus
306 * <20><> <20><>:
307 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
308 * <20><> <20><>: <20><>ȡAFE״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>
309 *************************************************************************************************/
310 void AFERdStatus(void)
311 {
312 1 U8 RegTemp[2];
313 1 if(AFEReadReg(AFE_BSTATUS, 2, RegTemp))//&REG.AFEBSTATUS))//AFE<46>̶<EFBFBD><CCB6><EFBFBD>2Bytes<65><73>ֻȡ1Byte
314 1 {
315 2 ucAFEStatus = REG.AFEBSTATUS = RegTemp[0]; //<2F><><EFBFBD>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صļ<D8B5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
316 2 }
317 1 }
318
319
320 /*************************************************************************************************
321 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFERamCheck
322 * <20><> <20><>:
323 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
324 * <20><> <20><>: <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>AFE<46>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD>Ƿ񱻸<C7B7>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
325 *************************************************************************************************/
326 void AFERamCheck(void)
327 {
328 1 U8 xdata RdBuf[2];
329 1 U8 i;
330 1
331 1 for(i=3; i<=11; i=i+2)
332 1 {
333 2 AFEReadReg(i, 2, RdBuf);
334 2
335 2 if((RdBuf[0]!=*(&REG.AFEFLAG1+i)) || (RdBuf[1]!=*(&REG.AFEFLAG1+i+1)))
336 2 {
337 3 if(i != 7) //ƽ<><C6BD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC>Ϊƽ<CEAA><C6BD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30s<30><73><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
338 3 {
339 4 if(!AFEInit())
340 4 {
341 5 bPDFlg = 1;
342 5 }
343 4 break;
344 4 }
345 3 }
346 2 }
347 1 }
348
349
350 /*************************************************************************************************
351 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEEnterPD
352 * <20><> <20><>:
353 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
354 * <20><> <20><>: <20><><EFBFBD><EFBFBD>AFE<46><45><EFBFBD><EFBFBD>PD״̬<D7B4><CCAC><EFBFBD>ر<EFBFBD>3.3V<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
355 *************************************************************************************************/
356 void AFEEnterPD(void)
357 {
358 1 REG.AFESCONF10 = 0x33;
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 7
359 1 if(AFEWriteReg(AFE_SCONF10, 1, &REG.AFESCONF10))
360 1 {
361 2 REG.AFESCONF1 |= 0x20;
362 2 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
363 2 }
364 1 }
365
366
367 /*************************************************************************************************
368 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEMosCtl
369 * <20><> <20><>: MosStatus<75><73>MOS״̬<D7B4><CCAC>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD>ر<EFBFBD>
370 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
371 * <20><> <20><>: <20><><EFBFBD>Ƴ<EFBFBD><C6B3>ŵ<EFBFBD>MOS<4F>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>͹ر<CDB9>
372 *************************************************************************************************/
373 void AFEMosCtl(U8 MosStatus)
374 {
375 1 REG.AFESCONF2 &= ~0x03;
376 1 REG.AFESCONF2 |= MosStatus;
377 1 AFEWriteReg(AFE_SCONF2, 1, &REG.AFESCONF2);
378 1 }
379
380
381
382 /*************************************************************************************************
383 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AFEChgerCheckEn<45><6E>AFEChgerCheckDis<69><73>AFELoadCheckEn<45><6E>AFELoadCheckDis
384 * <20><> <20><>:
385 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
386 * <20><> <20><>: ʹ<><CAB9>/<2F>رճ<D8B1><D5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A1A2><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
387 *************************************************************************************************/
388 void AFEChgerCheckEn(void)
389 {
390 1 REG.AFESCONF1 |= 0x01;
391 1 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
392 1 }
393
394
395 void AFEChgerCheckDis(void)
396 {
397 1 REG.AFESCONF1 &= ~0x01;
398 1 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
399 1 }
400
401
402 void AFELoadCheckEn(void)
403 {
404 1 REG.AFESCONF1 |= 0x02;
405 1 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
406 1 }
407
408
409 void AFELoadCheckDis(void)
410 {
411 1 REG.AFESCONF1 &= ~0x02;
412 1 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
413 1 }
414
415
416 /*************************************************************************************************
417 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AfeBalEn
418 * <20><> <20><>: BalChTemp<6D><70>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>CELL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>ƽ<EFBFBD><C6BD>
419 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
420 * <20><> <20><>: <20><><EFBFBD><EFBFBD><EFBFBD>͹ر<CDB9>ƽ<EFBFBD><C6BD>
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 8
421 *************************************************************************************************/
422 void AfeBalCtl(U16 BalChTemp)
423 {
424 1 REG.AFESCONF4 = BalChTemp>>5;
425 1 if(AFEWriteReg(AFE_SCONF4, 1, &REG.AFESCONF4))
426 1 {
427 2 REG.AFESCONF5 = BalChTemp;
428 2 AFEWriteReg(AFE_SCONF5, 1, &REG.AFESCONF5);
429 2 }
430 1 }
431
432
433 /*************************************************************************************************
434 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AfeWDTEn<45><6E> AfeWDTDis
435 * <20><> <20><>:
436 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
437 * <20><> <20><>: <20><><EFBFBD><EFBFBD><EFBFBD>͹رտ<D8B1><D5BF>Ź<EFBFBD>ģ<EFBFBD><C4A3>
438 *************************************************************************************************/
439 void AfeWDTEn(void)
440 {
441 1 REG.AFESCONF1 |= 0x10;
442 1 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
443 1 }
444
445
446 void AfeWDTDis(void)
447 {
448 1 REG.AFESCONF1 &= ~0x10;
449 1 AFEWriteReg(AFE_SCONF1, 1, &REG.AFESCONF1);
450 1 }
451
452
453 /*************************************************************************************************
454 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AfeWDTEn<45><6E> AfeWDTDis
455 * <20><> <20><>: <20><>
456 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
457 * <20><> <20><>: <20><><EFBFBD><EFBFBD><EFBFBD>͹رտ<D8B1><D5BF>Ź<EFBFBD>ģ<EFBFBD><C4A3>
458 *************************************************************************************************/
459 void AfeADCEn(void)
460 {
461 1 REG.AFESCONF3 |= 0xf8;
462 1 AFEWriteReg(AFE_SCONF3, 1, &REG.AFESCONF3);
463 1 }
464
465
466 void AfeADCDis(void)
467 {
468 1 REG.AFESCONF3 &= ~0xf8;
469 1 AFEWriteReg(AFE_SCONF3, 1, &REG.AFESCONF3);
470 1 }
471
472 void AfeCADCEn(void)
473 {
474 1 REG.AFESCONF3 |= 0xe0;
475 1 AFEWriteReg(AFE_SCONF3, 1, &REG.AFESCONF3);
476 1 }
477
478
479 void AfeCADCDis(void)
480 {
481 1 REG.AFESCONF3 &= ~0xe0;
482 1 AFEWriteReg(AFE_SCONF3, 1, &REG.AFESCONF3);
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 9
483 1 }
484
485 void AfeTempADCEn(void)
486 {
487 1 REG.AFESCONF3 |= 0x08;
488 1 AFEWriteReg(AFE_SCONF3, 1, &REG.AFESCONF3);
489 1 }
490
491
492 void AfeTempADCDis(void)
493 {
494 1 REG.AFESCONF3 &= ~0x08;
495 1 AFEWriteReg(AFE_SCONF3, 1, &REG.AFESCONF3);
496 1 }
497
498
499 /*************************************************************************************************
500 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: AfeAlarmEn<45><6E>AfeAlarmDis
501 * <20><> <20><>: AlarmFlg<6C><67><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ӧ<EFBFBD><D3A6>ALARMλ
502 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
503 * <20><> <20><>: <20><><EFBFBD><EFBFBD><EFBFBD>͹رն<D8B1>Ӧ<EFBFBD><D3A6>ALARM<52>жϴ<D0B6><CFB4><EFBFBD>
504 *************************************************************************************************/
505 void AfeAlarmEn(U8 AlarmFlg)
506 {
507 1 REG.AFEINTEN |= AlarmFlg;
508 1 AFEWriteReg(AFE_INT_EN, 1, &REG.AFEINTEN);
509 1 }
510
511 void AfeAlarmDis(U8 AlarmFlg)
512 {
513 1 REG.AFEINTEN &= ~AlarmFlg;
514 1 AFEWriteReg(AFE_INT_EN, 1, &REG.AFEINTEN);
515 1 }
516
517
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1206 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 181 22
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = 5 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)