191 lines
8.1 KiB
C
191 lines
8.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"
|
|
|
|
|
|
//*****************************DATA MEMORY START***************************//
|
|
U8 idata STACK[0x100-STACK_ADDR] _at_ STACK_ADDR; //堆栈
|
|
|
|
//*****************************BIT MEMORY START***************************//
|
|
U16 bdata uiPackConfig;
|
|
sbit bCellNum1 = uiPackConfig^8;
|
|
sbit bCellNum2 = uiPackConfig^9;
|
|
sbit bCellNum3 = uiPackConfig^10;
|
|
sbit bLEDNum0 = uiPackConfig^11; //预留,程序未使用
|
|
sbit bLEDNum1 = uiPackConfig^12;
|
|
sbit bTempNum = uiPackConfig^13;
|
|
sbit bChgerLock = uiPackConfig^14; //是否支持充电器锁定
|
|
sbit bLoadLock = uiPackConfig^15; //是否支持负载锁定
|
|
|
|
sbit bSC_EN = uiPackConfig^0; //00101011
|
|
sbit bOV_EN = uiPackConfig^1;
|
|
sbit bOCRC_EN = uiPackConfig^2; //auto reset or nor when OCC
|
|
sbit bBAL_EN = uiPackConfig^3;
|
|
sbit bPF_EN = uiPackConfig^4; //disable
|
|
sbit bCTO_EN = uiPackConfig^5; //cell on
|
|
sbit bOCPM = uiPackConfig^6; //disable
|
|
sbit bEnEEPRomBK = uiPackConfig^7;
|
|
|
|
U16 bdata uiPackStatus;
|
|
sbit bCHGMOS = uiPackStatus^8;
|
|
sbit bDSGMOS = uiPackStatus^9;
|
|
sbit bCHGING = uiPackStatus^10;
|
|
sbit bDSGING = uiPackStatus^11;
|
|
sbit bSlowDischarge = uiPackStatus^12;
|
|
sbit bMidDischarge = uiPackStatus^13;
|
|
sbit bFastDischarge = uiPackStatus^14;
|
|
|
|
sbit bFC = uiPackStatus^0;
|
|
sbit bFD = uiPackStatus^1;
|
|
sbit bVDQ = uiPackStatus^2;
|
|
|
|
|
|
U16 bdata uiBatStatus;
|
|
sbit bOV = uiBatStatus^8;
|
|
sbit bUV = uiBatStatus^9;
|
|
sbit bOCC = uiBatStatus^10;
|
|
sbit bOCD1 = uiBatStatus^11;
|
|
sbit bOCD2 = uiBatStatus^12;
|
|
|
|
sbit bOTC = uiBatStatus^0;
|
|
sbit bOTD = uiBatStatus^1;
|
|
sbit bUTC = uiBatStatus^2;
|
|
sbit bUTD = uiBatStatus^3;
|
|
sbit bAFE_OV = uiBatStatus^4;
|
|
sbit bAFE_SC = uiBatStatus^5;
|
|
sbit bCTO = uiBatStatus^6;
|
|
|
|
U8 bdata ucAFEStatus;
|
|
sbit bAfeChger = ucAFEStatus^0;
|
|
sbit bAfeLoad = ucAFEStatus^1;
|
|
sbit bAfeChging = ucAFEStatus^2;
|
|
sbit bAfeDsging = ucAFEStatus^3;
|
|
sbit bAfeCHG = ucAFEStatus^4;
|
|
sbit bAfeDSG = ucAFEStatus^5;
|
|
|
|
/**************************************************************************************/
|
|
//DataFlash中区块地址定义
|
|
/**************************************************************************************/
|
|
//系统信息区开始 SubClassID=0x00 langth=48
|
|
U16 xdata E2uiPackConfigMap _at_ SYS_PARA_MAP_ADDR;
|
|
U16 xdata E2uiVOC[10] _at_ SYS_PARA_MAP_ADDR+2;
|
|
U32 xdata E2ulDesignCapacity _at_ SYS_PARA_MAP_ADDR+22;
|
|
U32 xdata E2ulFCC _at_ SYS_PARA_MAP_ADDR+26;
|
|
U32 xdata E2ulCycleThreshold _at_ SYS_PARA_MAP_ADDR+30;
|
|
U16 xdata E2uiCycleCount _at_ SYS_PARA_MAP_ADDR+34;
|
|
U16 xdata E2uiLearnLowTempe _at_ SYS_PARA_MAP_ADDR+36;
|
|
U16 xdata E2Reserve _at_ SYS_PARA_MAP_ADDR+38;//与上位机参数对应,预留占位
|
|
S16 xdata E2siDfilterCur _at_ SYS_PARA_MAP_ADDR+40;
|
|
U8 xdata E2ucLowPowerDeley _at_ SYS_PARA_MAP_ADDR+42;
|
|
U8 xdata E2ucChgBKDelay _at_ SYS_PARA_MAP_ADDR+43;
|
|
S16 xdata E2siChgBKCur _at_ SYS_PARA_MAP_ADDR+44;
|
|
U8 xdata E2ucRTCBKDelay _at_ SYS_PARA_MAP_ADDR+46;
|
|
U8 xdata E2ucRamCheckFlg0 _at_ SYS_PARA_MAP_ADDR+47; //ucRamCheckFlg + SubClassID
|
|
|
|
//用户自定义参数区开始 SubClassID=0x01 langth=50
|
|
U16 xdata E2uiSWVersion _at_ SYSINFO_MAP_ADDR;
|
|
U16 xdata E2uiHWVersion _at_ SYSINFO_MAP_ADDR+2;
|
|
U8 xdata E2ucID _at_ SYSINFO_MAP_ADDR+4;
|
|
U8 xdata E2ucMNFName[12] _at_ SYSINFO_MAP_ADDR+5;
|
|
U32 xdata E2ulMNFDate _at_ SYSINFO_MAP_ADDR+17;
|
|
U16 xdata E2uiSerialNum _at_ SYSINFO_MAP_ADDR+21;
|
|
U8 xdata E2ucDeviceName[12] _at_ SYSINFO_MAP_ADDR+23;
|
|
U8 xdata E2ucDeviceChem[12] _at_ SYSINFO_MAP_ADDR+35;
|
|
U16 xdata E2uiChemID _at_ SYSINFO_MAP_ADDR+47;
|
|
U8 xdata E2ucRamCheckFlg1 _at_ SYSINFO_MAP_ADDR+49;
|
|
|
|
//充电参数区开始 SubClassID=0x02 langth=18
|
|
U16 xdata E2uiOVvol _at_ CHG_PARA_MAP_ADDR;
|
|
U16 xdata E2uiOVRvol _at_ CHG_PARA_MAP_ADDR+2;
|
|
U8 xdata E2ucOVDelay _at_ CHG_PARA_MAP_ADDR+4;
|
|
U8 xdata E2ucOVRDelay _at_ CHG_PARA_MAP_ADDR+5;
|
|
U16 xdata E2uiChgEndVol _at_ CHG_PARA_MAP_ADDR+6;
|
|
S16 xdata E2siChgEndCurr _at_ CHG_PARA_MAP_ADDR+8;
|
|
U8 xdata E2ucChgEndDelay _at_ CHG_PARA_MAP_ADDR+10;
|
|
S32 xdata E2slOCCCurrent _at_ CHG_PARA_MAP_ADDR+11;
|
|
U8 xdata E2ucOCCDelay _at_ CHG_PARA_MAP_ADDR+15;
|
|
U8 xdata E2ucOCCRDelay _at_ CHG_PARA_MAP_ADDR+16;
|
|
U8 xdata E2ucRamCheckFlg2 _at_ CHG_PARA_MAP_ADDR+17;
|
|
|
|
//放电参数区开始 SubClassID=0x03 langth=21
|
|
U16 xdata E2uiUVvol _at_ DSG_PARA_MAP_ADDR;
|
|
U16 xdata E2uiUVRvol _at_ DSG_PARA_MAP_ADDR+2;
|
|
U8 xdata E2ucUVDelay _at_ DSG_PARA_MAP_ADDR+4; //all the delay unit is 500mS
|
|
U8 xdata E2ucUVRDelay _at_ DSG_PARA_MAP_ADDR+5;
|
|
U16 xdata E2uiDsgEndVol _at_ DSG_PARA_MAP_ADDR+6;
|
|
U8 xdata E2ucDsgEndDelay _at_ DSG_PARA_MAP_ADDR+8;
|
|
S32 xdata E2slOCD1Current _at_ DSG_PARA_MAP_ADDR+9;
|
|
U8 xdata E2ucOCD1Delay _at_ DSG_PARA_MAP_ADDR+13;
|
|
S32 xdata E2slOCD2Current _at_ DSG_PARA_MAP_ADDR+14;
|
|
U8 xdata E2ucOCD2Delay _at_ DSG_PARA_MAP_ADDR+18;
|
|
U8 xdata E2ucLoadRDelay _at_ DSG_PARA_MAP_ADDR+19;
|
|
U8 xdata E2ucRamCheckFlg3 _at_ DSG_PARA_MAP_ADDR+20;
|
|
|
|
//预留参数区开始 SubClassID=0x04
|
|
//Reserved
|
|
|
|
//放电PWM参数区开始 SubClassID=0x05 langth=5
|
|
U16 xdata E2uiDSG1PWMFreq _at_ DSG_PWM_PARA_MAP_ADDR;
|
|
U8 xdata E2ucDSG1PWMRatioL _at_ DSG_PWM_PARA_MAP_ADDR+2;
|
|
U8 xdata E2ucDSG1PWMRatioH _at_ DSG_PWM_PARA_MAP_ADDR+3;
|
|
U8 xdata E2ucRamCheckFlg5 _at_ DSG_PWM_PARA_MAP_ADDR+4;
|
|
|
|
//充电温度保护参数开始 SubClassID=0x06 langth=11
|
|
U16 xdata E2uiTempOTC _at_ CHG_TEMP_PARA_MAP_ADDR;
|
|
U16 xdata E2uiTempOTCR _at_ CHG_TEMP_PARA_MAP_ADDR+2;
|
|
U16 xdata E2uiTempUTC _at_ CHG_TEMP_PARA_MAP_ADDR+4;
|
|
U16 xdata E2uiTempUTCR _at_ CHG_TEMP_PARA_MAP_ADDR+6;
|
|
U8 xdata E2ucTempDelay _at_ CHG_TEMP_PARA_MAP_ADDR+8;
|
|
U8 xdata E2ucTempRDelay _at_ CHG_TEMP_PARA_MAP_ADDR+9;
|
|
U8 xdata E2ucRamCheckFlg6 _at_ CHG_TEMP_PARA_MAP_ADDR+10;
|
|
|
|
//放电温度保护参数开始 SubClassID=0x07 langth=9
|
|
U16 xdata E2uiTempOTD _at_ DSG_TEMP_PARA_MAP_ADDR;
|
|
U16 xdata E2uiTempOTDR _at_ DSG_TEMP_PARA_MAP_ADDR+2;
|
|
U16 xdata E2uiTempUTD _at_ DSG_TEMP_PARA_MAP_ADDR+4;
|
|
U16 xdata E2uiTempUTDR _at_ DSG_TEMP_PARA_MAP_ADDR+6;
|
|
U8 xdata E2ucRamCheckFlg7 _at_ DSG_TEMP_PARA_MAP_ADDR+8;
|
|
|
|
//平衡参数区开始 SubClassID=0x08 langth=8
|
|
U16 xdata E2uiBalanceVol _at_ BAL_PARA_MAP_ADDR;
|
|
U16 xdata E2uiBalanceVolDiff _at_ BAL_PARA_MAP_ADDR+2;
|
|
S16 xdata E2siBalCurrent _at_ BAL_PARA_MAP_ADDR+4;
|
|
U8 xdata E2ucBalanceDelay _at_ BAL_PARA_MAP_ADDR+6;
|
|
U8 xdata E2ucRamCheckFlg8 _at_ BAL_PARA_MAP_ADDR+7;
|
|
|
|
//容量统计参数开始 SubClassID=0x09 length=17
|
|
U8 xdata E2ucSOC _at_ SOC_PARA_MAP_ADDR;
|
|
U32 xdata E2ulDfRC _at_ SOC_PARA_MAP_ADDR+1;
|
|
S32 xdata E2slDsgEndCurr _at_ SOC_PARA_MAP_ADDR+5; //放电截止电流
|
|
U32 xdata E2ulCycleThresholdCount _at_ SOC_PARA_MAP_ADDR+9;
|
|
U16 xdata E2uiLastCCount _at_ SOC_PARA_MAP_ADDR+13;
|
|
U8 xdata E2ucDsgEndFlg _at_ SOC_PARA_MAP_ADDR+15; //放电截至标志
|
|
U8 xdata E2ucRamCheckFlg9 _at_ SOC_PARA_MAP_ADDR+16;
|
|
|
|
|
|
//AFE参数区开始 SubClassID=0x0A langth=4
|
|
U8 xdata E2ucAFEProtectConfig _at_ AFE_PARA_MAP_ADDR;
|
|
U16 xdata E2uiAFEOVvol _at_ AFE_PARA_MAP_ADDR+1;
|
|
U8 xdata E2ucRamCheckFlgA _at_ AFE_PARA_MAP_ADDR+3;
|
|
|
|
//校准参数区开始 SubClassID=0x0B langth=12
|
|
U16 xdata E2uiVPackGain _at_ CALI_PARA_MAP_ADDR;
|
|
S16 xdata E2siCadcGain _at_ CALI_PARA_MAP_ADDR+2;
|
|
S16 xdata E2siCadcOffset _at_ CALI_PARA_MAP_ADDR+4;
|
|
S16 xdata E2siTS0Offset _at_ CALI_PARA_MAP_ADDR+6;
|
|
S16 xdata E2siTS1Offset _at_ CALI_PARA_MAP_ADDR+8;
|
|
U8 xdata E2ucCalibrated _at_ CALI_PARA_MAP_ADDR+10;
|
|
U8 xdata E2ucRamCheckFlgB _at_ CALI_PARA_MAP_ADDR+11;
|
|
|
|
U8 xdata Reserved[RESERVED_DATA_LEN] _at_ RESERVED_DATA_MAP_ADDR;
|
|
|
|
//DataflashCheck
|
|
U16 xdata E2uiCheckFlag _at_ XRAM_MAP_ADDR+510;
|
|
|