2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 1
2025-02-06 07:35:32 +00:00
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 }
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 2
2025-02-06 07:35:32 +00:00
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
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 3
2025-02-06 07:35:32 +00:00
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, ®.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, ®.AFESCONF1);
173 3 REG.AFESCONF1 &= ~0x80;
174 3 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1);
175 3 }
176 2 }
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 4
2025-02-06 07:35:32 +00:00
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, ®.AFEINTEN))
235 2 {
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 5
2025-02-06 07:35:32 +00:00
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]!=*(®.AFEFLAG1+i)) || (RdBuf[1]!=*(®.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, ®.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>
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 6
2025-02-06 07:35:32 +00:00
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))//®.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]!=*(®.AFEFLAG1+i)) || (RdBuf[1]!=*(®.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;
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 7
2025-02-06 07:35:32 +00:00
359 1 if(AFEWriteReg(AFE_SCONF10, 1, ®.AFESCONF10))
360 1 {
361 2 REG.AFESCONF1 |= 0x20;
362 2 AFEWriteReg(AFE_SCONF1, 1, ®.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, ®.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, ®.AFESCONF1);
392 1 }
393
394
395 void AFEChgerCheckDis(void)
396 {
397 1 REG.AFESCONF1 &= ~0x01;
398 1 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1);
399 1 }
400
401
402 void AFELoadCheckEn(void)
403 {
404 1 REG.AFESCONF1 |= 0x02;
405 1 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1);
406 1 }
407
408
409 void AFELoadCheckDis(void)
410 {
411 1 REG.AFESCONF1 &= ~0x02;
412 1 AFEWriteReg(AFE_SCONF1, 1, ®.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>
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 8
2025-02-06 07:35:32 +00:00
421 *************************************************************************************************/
422 void AfeBalCtl(U16 BalChTemp)
423 {
424 1 REG.AFESCONF4 = BalChTemp>>5;
425 1 if(AFEWriteReg(AFE_SCONF4, 1, ®.AFESCONF4))
426 1 {
427 2 REG.AFESCONF5 = BalChTemp;
428 2 AFEWriteReg(AFE_SCONF5, 1, ®.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, ®.AFESCONF1);
443 1 }
444
445
446 void AfeWDTDis(void)
447 {
448 1 REG.AFESCONF1 &= ~0x10;
449 1 AFEWriteReg(AFE_SCONF1, 1, ®.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, ®.AFESCONF3);
463 1 }
464
465
466 void AfeADCDis(void)
467 {
468 1 REG.AFESCONF3 &= ~0xf8;
469 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3);
470 1 }
471
472 void AfeCADCEn(void)
473 {
474 1 REG.AFESCONF3 |= 0xe0;
475 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3);
476 1 }
477
478
479 void AfeCADCDis(void)
480 {
481 1 REG.AFESCONF3 &= ~0xe0;
482 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3);
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 AFE 02/19/2025 10:42:27 PAGE 9
2025-02-06 07:35:32 +00:00
483 1 }
484
485 void AfeTempADCEn(void)
486 {
487 1 REG.AFESCONF3 |= 0x08;
488 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3);
489 1 }
490
491
492 void AfeTempADCDis(void)
493 {
494 1 REG.AFESCONF3 &= ~0x08;
495 1 AFEWriteReg(AFE_SCONF3, 1, ®.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, ®.AFEINTEN);
509 1 }
510
511 void AfeAlarmDis(U8 AlarmFlg)
512 {
513 1 REG.AFEINTEN &= ~AlarmFlg;
514 1 AFEWriteReg(AFE_INT_EN, 1, ®.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)