176 lines
4.1 KiB
C
176 lines
4.1 KiB
C
|
/********************************************************************************
|
|||
|
Copyright (C), Sinowealth Electronic. Ltd.
|
|||
|
Author: Sino
|
|||
|
Version: V0.0
|
|||
|
Date: 2020/04/26
|
|||
|
History:
|
|||
|
V2.0 2020/04/26 Preliminary
|
|||
|
********************************************************************************/
|
|||
|
#include "Main.h"
|
|||
|
|
|||
|
|
|||
|
BOOL bCaliFlg; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ñ<EFBFBD>־
|
|||
|
U16 xdata ulExtVPack;
|
|||
|
S32 xdata slExtCur;
|
|||
|
U16 xdata uiExtTemp1;
|
|||
|
U16 xdata uiExtTemp2;
|
|||
|
U8 xdata ucExtRTC[7];
|
|||
|
U8 xdata ucExtcaliSwitch1;
|
|||
|
|
|||
|
/*************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: CaliVoltage
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: У<EFBFBD>ܵ<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E2uiVPackGain<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*************************************************************************************************/
|
|||
|
void CaliVoltage(void)
|
|||
|
{
|
|||
|
U8 i;
|
|||
|
U16 VPackTemp = 0;
|
|||
|
|
|||
|
for(i=ucCellNumOffset; i<(ucCellNumOffset+ucCellNum); i++)
|
|||
|
{
|
|||
|
VPackTemp += AFE.uiCell[i];
|
|||
|
}
|
|||
|
|
|||
|
E2uiVPackGain = (U32)CALIPACKVOL*VPackTemp/ulExtVPack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: CaliCurrentGain
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E2siCadcGain<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>βɼ<EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*************************************************************************************************/
|
|||
|
void CaliCurrentGain(void)
|
|||
|
{
|
|||
|
S16 TempGain;
|
|||
|
|
|||
|
TempGain = (S32)CALICUR*(AFE.siCurr-E2siCadcOffset)/slExtCur;
|
|||
|
if(TempGain != 0)
|
|||
|
{
|
|||
|
E2siCadcGain = TempGain;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: CaliCurZero
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*************************************************************************************************/
|
|||
|
void CaliCurZero(void)
|
|||
|
{
|
|||
|
E2siCadcOffset = AFE.siCurr;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: CaliTS1<EFBFBD><EFBFBD>CaliTS2
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: У<EFBFBD>¶ȣ<EFBFBD><EFBFBD>¶<EFBFBD>ƫ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>15<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У
|
|||
|
*************************************************************************************************/
|
|||
|
void CaliTS1(void)
|
|||
|
{
|
|||
|
S16 Tempe;
|
|||
|
|
|||
|
Tempe = uiExtTemp1 - CalcuTemp(AFE.uiTS[0]);
|
|||
|
if(((Tempe-E2siTS0Offset)<150) && ((Tempe-E2siTS0Offset)>-150))
|
|||
|
{
|
|||
|
E2siTS0Offset = Tempe;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CaliTS2(void)
|
|||
|
{
|
|||
|
S16 Tempe;
|
|||
|
|
|||
|
Tempe = uiExtTemp2 - CalcuTemp(AFE.uiTS[1]);
|
|||
|
if(((Tempe-E2siTS1Offset)<150) && ((Tempe-E2siTS1Offset)>-150))
|
|||
|
{
|
|||
|
E2siTS1Offset = Tempe;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: CaliRTCTime
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: УRTC
|
|||
|
*************************************************************************************************/
|
|||
|
void CaliRTCTime(void)
|
|||
|
{
|
|||
|
RTC.Second = ucExtRTC[0];
|
|||
|
RTC.Minute = ucExtRTC[1];
|
|||
|
RTC.Hour = ucExtRTC[2];
|
|||
|
RTC.Date = ucExtRTC[3];
|
|||
|
RTC.Month = ucExtRTC[4];
|
|||
|
RTC.Year = ucExtRTC[5];
|
|||
|
RTC.Week = ucExtRTC[6];
|
|||
|
|
|||
|
RTCModifyTime(&RTC);
|
|||
|
|
|||
|
bE2PProcessFlg = 1; //УRTC֮<43><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>RTC<54><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿEEP
|
|||
|
bE2PBKRtc = 1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: CaliProcess
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ͨѶ<EFBFBD>жϻ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ҪУģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ı<EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>Flash
|
|||
|
*************************************************************************************************/
|
|||
|
void CaliProcess(void)
|
|||
|
{
|
|||
|
if(bCaliFlg)
|
|||
|
{
|
|||
|
bCaliFlg = 0;
|
|||
|
|
|||
|
if((ucExtcaliSwitch1 & 0x01) != 0) //У<D0A3>ܵ<EFBFBD>ѹ
|
|||
|
{
|
|||
|
CaliVoltage();
|
|||
|
}
|
|||
|
|
|||
|
if((ucExtcaliSwitch1 & 0x10) != 0) //У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
CaliCurrentGain();
|
|||
|
}
|
|||
|
|
|||
|
if((ucExtcaliSwitch1 & 0x20) != 0) //У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
CaliCurZero();
|
|||
|
}
|
|||
|
|
|||
|
if((ucExtcaliSwitch1 & 0x04) != 0) //УTS1
|
|||
|
{
|
|||
|
CaliTS1();
|
|||
|
}
|
|||
|
|
|||
|
if((ucExtcaliSwitch1 & 0x08) != 0) //УTS2
|
|||
|
{
|
|||
|
CaliTS2();
|
|||
|
}
|
|||
|
|
|||
|
if((ucExtcaliSwitch1 & 0x80) != 0) //УRTC
|
|||
|
{
|
|||
|
CaliRTCTime();
|
|||
|
}
|
|||
|
|
|||
|
ucExtcaliSwitch1 = 0;
|
|||
|
bMcuFlashWrWaitFlg = 1; //<2F><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD><EFBFBD>
|
|||
|
bMcuFlashWrWaitCnt = MCU_FLASH_WATI_DELAY; //<2F><><EFBFBD><EFBFBD>д
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|