208 lines
9.0 KiB
Plaintext
208 lines
9.0 KiB
Plaintext
C51 COMPILER V9.01 CALIBRATE 02/19/2025 10:42:27 PAGE 1
|
||
|
||
|
||
C51 COMPILER V9.01, COMPILATION OF MODULE CALIBRATE
|
||
OBJECT MODULE PLACED IN .\output\Calibrate.obj
|
||
COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\Calibrate.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_L
|
||
-oad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\
|
||
-code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Calibrate.lst) OBJECT(.\output
|
||
-\Calibrate.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
|
||
12 BOOL bCaliFlg; //上位机发送校准命令后置位该标志
|
||
13 U16 xdata ulExtVPack;
|
||
14 S32 xdata slExtCur;
|
||
15 U16 xdata uiExtTemp1;
|
||
16 U16 xdata uiExtTemp2;
|
||
17 U8 xdata ucExtRTC[7];
|
||
18 U8 xdata ucExtcaliSwitch1;
|
||
19
|
||
20 /*************************************************************************************************
|
||
21 * 函数名: CaliVoltage
|
||
22 * 参 数: 无
|
||
23 * 返回值: 无
|
||
24 * 描 述: 校准总电压,更新E2uiVPackGain增益
|
||
25 *************************************************************************************************/
|
||
26 void CaliVoltage(void)
|
||
27 {
|
||
28 1 U8 i;
|
||
29 1 U16 VPackTemp = 0;
|
||
30 1
|
||
31 1 for(i=ucCellNumOffset; i<(ucCellNumOffset+ucCellNum); i++)
|
||
32 1 {
|
||
33 2 VPackTemp += AFE.uiCell[i];
|
||
34 2 }
|
||
35 1
|
||
36 1 E2uiVPackGain = (U32)CALIPACKVOL*VPackTemp/ulExtVPack;
|
||
37 1 }
|
||
38
|
||
39
|
||
40 /*************************************************************************************************
|
||
41 * 函数名: CaliCurrentGain
|
||
42 * 参 数: 无
|
||
43 * 返回值: 无
|
||
44 * 描 述: 校准电流增益E2siCadcGain,连续两次采集的电流求平均后再校准更新
|
||
45 *************************************************************************************************/
|
||
46 void CaliCurrentGain(void)
|
||
47 {
|
||
48 1 S16 TempGain;
|
||
49 1
|
||
50 1 TempGain = (S32)CALICUR*(AFE.siCurr-E2siCadcOffset)/slExtCur;
|
||
51 1 if(TempGain != 0)
|
||
52 1 {
|
||
C51 COMPILER V9.01 CALIBRATE 02/19/2025 10:42:27 PAGE 2
|
||
|
||
53 2 E2siCadcGain = TempGain;
|
||
54 2 }
|
||
55 1 }
|
||
56
|
||
57
|
||
58 /*************************************************************************************************
|
||
59 * 函数名: CaliCurZero
|
||
60 * 参 数: 无
|
||
61 * 返回值: 无
|
||
62 * 描 述: 校准零电流
|
||
63 *************************************************************************************************/
|
||
64 void CaliCurZero(void)
|
||
65 {
|
||
66 1 E2siCadcOffset = AFE.siCurr;
|
||
67 1 }
|
||
68
|
||
69
|
||
70 /*************************************************************************************************
|
||
71 * 函数名: CaliTS1、CaliTS2
|
||
72 * 参 数: 无
|
||
73 * 返回值: 无
|
||
74 * 描 述: 校准温度,温度偏差小于15℃才允许校准
|
||
75 *************************************************************************************************/
|
||
76 void CaliTS1(void)
|
||
77 {
|
||
78 1 S16 Tempe;
|
||
79 1
|
||
80 1 Tempe = uiExtTemp1 - CalcuTemp(AFE.uiTS[0]);
|
||
81 1 if(((Tempe-E2siTS0Offset)<150) && ((Tempe-E2siTS0Offset)>-150))
|
||
82 1 {
|
||
83 2 E2siTS0Offset = Tempe;
|
||
84 2 }
|
||
85 1 }
|
||
86
|
||
87 void CaliTS2(void)
|
||
88 {
|
||
89 1 S16 Tempe;
|
||
90 1
|
||
91 1 Tempe = uiExtTemp2 - CalcuTemp(AFE.uiTS[1]);
|
||
92 1 if(((Tempe-E2siTS1Offset)<150) && ((Tempe-E2siTS1Offset)>-150))
|
||
93 1 {
|
||
94 2 E2siTS1Offset = Tempe;
|
||
95 2 }
|
||
96 1 }
|
||
97
|
||
98
|
||
99
|
||
100 /*************************************************************************************************
|
||
101 * 函数名: CaliRTCTime
|
||
102 * 参 数: 无
|
||
103 * 返回值: 无
|
||
104 * 描 述: 校准RTC
|
||
105 *************************************************************************************************/
|
||
106 void CaliRTCTime(void)
|
||
107 {
|
||
108 1 RTC.Second = ucExtRTC[0];
|
||
109 1 RTC.Minute = ucExtRTC[1];
|
||
110 1 RTC.Hour = ucExtRTC[2];
|
||
111 1 RTC.Date = ucExtRTC[3];
|
||
112 1 RTC.Month = ucExtRTC[4];
|
||
113 1 RTC.Year = ucExtRTC[5];
|
||
114 1 RTC.Week = ucExtRTC[6];
|
||
C51 COMPILER V9.01 CALIBRATE 02/19/2025 10:42:27 PAGE 3
|
||
|
||
115 1
|
||
116 1 RTCModifyTime(&RTC);
|
||
117 1
|
||
118 1 bE2PProcessFlg = 1; //校准RTC之后,需要保存RTC数据至外部EEP
|
||
119 1 bE2PBKRtc = 1;
|
||
120 1 }
|
||
121
|
||
122
|
||
123
|
||
124 /*************************************************************************************************
|
||
125 * 函数名: CaliProcess
|
||
126 * 参 数: 无
|
||
127 * 返回值: 无
|
||
128 * 描 述: 处理校准,通讯中断会置位当前需要校准模块对应的标志。
|
||
129 校准结束后,将校准参数写入Flash
|
||
130 *************************************************************************************************/
|
||
131 void CaliProcess(void)
|
||
132 {
|
||
133 1 if(bCaliFlg)
|
||
134 1 {
|
||
135 2 bCaliFlg = 0;
|
||
136 2
|
||
137 2 if((ucExtcaliSwitch1 & 0x01) != 0) //校准总电压
|
||
138 2 {
|
||
139 3 CaliVoltage();
|
||
140 3 }
|
||
141 2
|
||
142 2 if((ucExtcaliSwitch1 & 0x10) != 0) //校准电流增益
|
||
143 2 {
|
||
144 3 CaliCurrentGain();
|
||
145 3 }
|
||
146 2
|
||
147 2 if((ucExtcaliSwitch1 & 0x20) != 0) //校准零电流
|
||
148 2 {
|
||
149 3 CaliCurZero();
|
||
150 3 }
|
||
151 2
|
||
152 2 if((ucExtcaliSwitch1 & 0x04) != 0) //校准TS1
|
||
153 2 {
|
||
154 3 CaliTS1();
|
||
155 3 }
|
||
156 2
|
||
157 2 if((ucExtcaliSwitch1 & 0x08) != 0) //校准TS2
|
||
158 2 {
|
||
159 3 CaliTS2();
|
||
160 3 }
|
||
161 2
|
||
162 2 if((ucExtcaliSwitch1 & 0x80) != 0) //校准RTC
|
||
163 2 {
|
||
164 3 CaliRTCTime();
|
||
165 3 }
|
||
166 2
|
||
167 2 ucExtcaliSwitch1 = 0;
|
||
168 2 bMcuFlashWrWaitFlg = 1; //更新Flash参数
|
||
169 2 bMcuFlashWrWaitCnt = MCU_FLASH_WATI_DELAY; //立即写
|
||
170 2 }
|
||
171 1 }
|
||
172
|
||
173
|
||
174
|
||
175
|
||
|
||
C51 COMPILER V9.01 CALIBRATE 02/19/2025 10:42:27 PAGE 4
|
||
|
||
|
||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||
CODE SIZE = 469 ----
|
||
CONSTANT SIZE = ---- ----
|
||
XDATA SIZE = 18 2
|
||
PDATA SIZE = ---- ----
|
||
DATA SIZE = ---- ----
|
||
IDATA SIZE = ---- ----
|
||
BIT SIZE = 1 ----
|
||
END OF MODULE INFORMATION.
|
||
|
||
|
||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|