564 lines
26 KiB
Plaintext
564 lines
26 KiB
Plaintext
C51 COMPILER V9.01 AFE 02/08/2025 15:18:20 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相关的变量
|
||
12 BOOL bAfeAlarmFlg;
|
||
13 BOOL bCADCFlg;
|
||
14 BOOL bVADCFlg;
|
||
15 BOOL bAfeI2CRWErrFlg;
|
||
16 BOOL bAfeErr;
|
||
17 U8 data ucCellNum; //当前硬件电芯串数
|
||
18 U8 data ucCellNumOffset; //当前硬件电芯连接方式对应的偏移,用于程序读取AFE对应寄
|
||
-存器
|
||
19 U16 data uiCellVmax; //电芯电压最大值
|
||
20 U16 data uiCellVmin; //电芯电压最小值
|
||
21 U16 xdata uiVadcVmax; //ADC采集最大值
|
||
22 U16 xdata uiVadcVmin; //ADC采集最小值
|
||
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; //经过计算的值
|
||
32 AFEDATA xdata AFE; //AFE寄存器读取的值
|
||
33 AFEREG xdata REG; //AFE寄存器预设值
|
||
34
|
||
35
|
||
36
|
||
37 /*************************************************************************************************
|
||
38 * 函数名: AFETwiCheck
|
||
39 * 参 数: 无
|
||
40 * 返回值: 无
|
||
41 * 描 述: 连续5S检测到AFE的I2C通讯错误,则置位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/08/2025 15:18:20 PAGE 2
|
||
|
||
53 1 else
|
||
54 1 {
|
||
55 2 ucAfeI2CErrDelayCnt = 0;
|
||
56 2 }
|
||
57 1 }
|
||
58
|
||
59
|
||
60 /*************************************************************************************************
|
||
61 * 函数名: AFEWriteReg
|
||
62 * 参 数: Reg:寄存器地址
|
||
63 WrBuf:写的数据:1Byte数据+1Byte CRC
|
||
64 * 返回值: 1:成功;0:失败
|
||
65 * 描 述: 写AFE寄存器,每次写一个寄存器
|
||
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; //标记通讯是否正常
|
||
114 1
|
||
C51 COMPILER V9.01 AFE 02/08/2025 15:18:20 PAGE 3
|
||
|
||
115 1 return Result;
|
||
116 1 }
|
||
117
|
||
118
|
||
119 /*************************************************************************************************
|
||
120 * 函数名: AFEReadReg
|
||
121 * 参 数: Reg:寄存器地址
|
||
122 RdBuf:读的数据:2Byte数据+1Byte CRC
|
||
123 * 返回值: 1:成功;0:失败
|
||
124 * 描 述: 读AFE寄存器,每次连续读两个寄存器
|
||
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) //如果读数出错,则Try 5次
|
||
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) //如果读数成功且CRC校验正确,则退出循环返回成功标标志
|
||
141 3 {
|
||
142 4 break;
|
||
143 4 }
|
||
144 3 else //如果TWI读数或CRC校验失败,则延时1mS之后再读取
|
||
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; //标记通讯是否正常
|
||
154 1
|
||
155 1 return Result;
|
||
156 1 }
|
||
157
|
||
158
|
||
159 /*************************************************************************************************
|
||
160 * 函数名: AFEClrFlg
|
||
161 * 参 数:
|
||
162 * 返回值: 无
|
||
163 * 描 述: 清零AFE标志寄存器
|
||
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/08/2025 15:18:20 PAGE 4
|
||
|
||
177 1 }
|
||
178
|
||
179
|
||
180 /*************************************************************************************************
|
||
181 * 函数名: AFEInitReg
|
||
182 * 参 数: 无
|
||
183 * 返回值: 无
|
||
184 * 描 述: 初始化AFE寄存器
|
||
185 *************************************************************************************************/
|
||
186 void AFEInitReg(void)
|
||
187 {
|
||
188 1 U16 TempVar;
|
||
189 1
|
||
190 1 REG.AFEINTEN = 0x00; //采取查询式,故不需要ALARM中断
|
||
191 1 REG.AFESCONF1 = 0x50; //使能CTLD和WDT功能
|
||
192 1 REG.AFESCONF2 = 0x00; //AFE引脚配置为复位信号,ALARM输出低电平脉冲,放电MOS与充电MOS都关闭
|
||
193 1 REG.AFESCONF3 = 0xF8; //默认VADC和CADC都开启,CADC连续采样,10位ADC,VADC只采集
|
||
-电压转换周期50ms
|
||
194 1 REG.AFESCONF4 = 0x00; //默认关闭平衡BAT6-10
|
||
195 1 REG.AFESCONF5 = 0x00; //默认关闭平衡BAT1-5
|
||
196 1 REG.AFESCONF6 = 0x70; //CADC采集200mV范围,复位信号宽度1S,硬件短路保护电压100mV,硬件短路保护延时5
|
||
-0uS
|
||
197 1 REG.AFESCONF7 = 0x01; //硬件过冲保护延时1个转换周期,充放电状态阈值选择位1.4mV<EFBFBD>
|
||
-<2D>渲每疵殴芬绯<E88AAC>10S
|
||
198 1 REG.AFESCONF8 = 0x03; //SCONF8 + SCONF9 = 11 1111 1111 = 1023
|
||
199 1 REG.AFESCONF9 = 0xff; //硬件过冲保护阈值1023*5.86mV = 5994.78
|
||
200 1 REG.AFESCONF10= 0x00; //低功耗控制位,写入0x33再写PD_EN=1进入低功耗
|
||
201 1
|
||
202 1 if(bSC_EN) //配置使能AFE短路功能
|
||
203 1 {
|
||
204 2 REG.AFESCONF1 |= 0x08;
|
||
205 2 REG.AFESCONF6 |= (E2ucAFEProtectConfig&0x0f);//将FLASH内参数写入AFE寄存器
|
||
206 2 }
|
||
207 1 if(bOV_EN) //配置使能AFE过压功能
|
||
208 1 {
|
||
209 2 REG.AFESCONF1 |= 0x04;
|
||
210 2 REG.AFESCONF7 |= (E2ucAFEProtectConfig&0xf0);//将FLASH内参数写入AFE寄存器
|
||
211 2 TempVar = (U32)E2uiAFEOVvol*50/293; //取出过压保护电压
|
||
212 2 REG.AFESCONF8 = TempVar>>8; //写高两位
|
||
213 2 REG.AFESCONF9 = TempVar; //写低八位
|
||
214 2 }
|
||
215 1 }
|
||
216
|
||
217
|
||
218
|
||
219 /*************************************************************************************************
|
||
220 * 函数名: AFEInit
|
||
221 * 参 数:
|
||
222 * 返回值: 1:成功;0:失败
|
||
223 * 描 述: 初始化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/08/2025 15:18:20 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) //平衡寄存器除外,因为平衡寄存器不置位,持续30s会自动清零
|
||
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 * 函数名: AFERdFlg
|
||
266 * 参 数:
|
||
267 * 返回值: 无
|
||
268 * 描 述: 读取AFE标志寄存器
|
||
269 AFE_SC表示发生短路保护
|
||
270 FLAG2的bit2为1表示发生LVR复位,需要重新初始化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 电流转换完成
|
||
277 2 {
|
||
278 3 bCADCFlg = 1;
|
||
279 3 }
|
||
280 2
|
||
281 2 if((REG.AFEFLAG2&0x01) != 0) //VADC 电压转换完成
|
||
282 2 {
|
||
283 3 bVADCFlg = 1;
|
||
284 3 }
|
||
285 2
|
||
286 2 if((REG.AFEFLAG1&0x08) != 0 && (bLoadChkingFlg != 1)) //AFE短路保护
|
||
287 2 {
|
||
288 3 bAFE_SC = 1;
|
||
289 3 bLoadStartCheckFlg = 1; //开启负载检测
|
||
290 3 }
|
||
291 2 if((REG.AFEFLAG1&0x04) != 0) //AFE 硬件过压保护
|
||
292 2 {
|
||
293 3 bAFE_OV= 1;
|
||
294 3 }
|
||
295 2
|
||
296 2 if((REG.AFEFLAG2&0x04) != 0) //判断FLAG2的bit2是否为1,如为1则表示AFE发生过LVR,需<EFBC8C>
|
||
-<2D>匦鲁跏蓟疉FE寄存器
|
||
C51 COMPILER V9.01 AFE 02/08/2025 15:18:20 PAGE 6
|
||
|
||
297 2 {
|
||
298 3 AFEInit();
|
||
299 3 }
|
||
300 2 }
|
||
301 1 }
|
||
302
|
||
303
|
||
304 /*************************************************************************************************
|
||
305 * 函数名: AFERdStatus
|
||
306 * 参 数:
|
||
307 * 返回值: 无
|
||
308 * 描 述: 读取AFE状态寄存器
|
||
309 *************************************************************************************************/
|
||
310 void AFERdStatus(void)
|
||
311 {
|
||
312 1 U8 RegTemp[2];
|
||
313 1 if(AFEReadReg(AFE_BSTATUS, 2, RegTemp))//®.AFEBSTATUS))//AFE固定读2Bytes,只取1Byte
|
||
314 1 {
|
||
315 2 ucAFEStatus = REG.AFEBSTATUS = RegTemp[0]; //更新充电器、负载的检测结果
|
||
316 2 }
|
||
317 1 }
|
||
318
|
||
319
|
||
320 /*************************************************************************************************
|
||
321 * 函数名: AFERamCheck
|
||
322 * 参 数:
|
||
323 * 返回值: 无
|
||
324 * 描 述: 定时检测AFE的寄存器是否被改写,如果是则重新初始化
|
||
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) //平衡寄存器除外,因为平衡寄存器不置位,持续30s会自动清零
|
||
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 * 函数名: AFEEnterPD
|
||
352 * 参 数:
|
||
353 * 返回值: 无
|
||
354 * 描 述: 控制AFE进入PD状态,关闭3.3V输出
|
||
355 *************************************************************************************************/
|
||
356 void AFEEnterPD(void)
|
||
357 {
|
||
358 1 REG.AFESCONF10 = 0x33;
|
||
C51 COMPILER V9.01 AFE 02/08/2025 15:18:20 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 * 函数名: AFEMosCtl
|
||
369 * 参 数: MosStatus:MOS状态。1:开启;0:关闭
|
||
370 * 返回值: 无
|
||
371 * 描 述: 控制充放电MOS的开启和关闭
|
||
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 * 函数名: AFEChgerCheckEn、AFEChgerCheckDis、AFELoadCheckEn、AFELoadCheckDis
|
||
384 * 参 数:
|
||
385 * 返回值: 无
|
||
386 * 描 述: 使能/关闭充电器检测、负载检测
|
||
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 * 函数名: AfeBalEn
|
||
418 * 参 数: BalChTemp:平衡对应的CELL,如果全部为0,则关闭平衡
|
||
419 * 返回值: 无
|
||
420 * 描 述: 开启和关闭平衡
|
||
C51 COMPILER V9.01 AFE 02/08/2025 15:18:20 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 * 函数名: AfeWDTEn, AfeWDTDis
|
||
435 * 参 数:
|
||
436 * 返回值: 无
|
||
437 * 描 述: 开启和关闭看门狗模块
|
||
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 * 函数名: AfeWDTEn, AfeWDTDis
|
||
455 * 参 数: 无
|
||
456 * 返回值: 无
|
||
457 * 描 述: 开启和关闭看门狗模块
|
||
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/08/2025 15:18:20 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 * 函数名: AfeAlarmEn,AfeAlarmDis
|
||
501 * 参 数: AlarmFlg:置位对应的ALARM位
|
||
502 * 返回值: 无
|
||
503 * 描 述: 开启和关闭对应的ALARM中断触发
|
||
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)
|