564 lines
26 KiB
Plaintext
564 lines
26 KiB
Plaintext
|
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, ®.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 }
|
|||
|
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, ®.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]!=*(®.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>
|
|||
|
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))//®.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;
|
|||
|
C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 7
|
|||
|
|
|||
|
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>
|
|||
|
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, ®.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);
|
|||
|
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, ®.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)
|