137 lines
3.9 KiB
C
137 lines
3.9 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"
|
|||
|
#include "stdio.h"
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
char putchar(char c)
|
|||
|
{
|
|||
|
REN = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IO_485_DE = 1; // <20><><EFBFBD><EFBFBD>485<38><35><EFBFBD><EFBFBD>
|
|||
|
SBUF = c; // <20><>
|
|||
|
while(!TI);
|
|||
|
IO_485_DE = 0; // <20>ر<EFBFBD>485<38><35><EFBFBD><EFBFBD>
|
|||
|
TI = 0;
|
|||
|
return c;
|
|||
|
}
|
|||
|
|
|||
|
/*************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: main
|
|||
|
* <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>While(1)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>
|
|||
|
1.<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>
|
|||
|
2.<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 main(void)
|
|||
|
{
|
|||
|
Initial(); //<2F><>ʼ<EFBFBD><CABC>ϵͳ
|
|||
|
|
|||
|
printf("SystemClock: 8MHz");
|
|||
|
|
|||
|
while(1)
|
|||
|
{
|
|||
|
//KeyProcess(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
if(bTimer50msFlg) //50mS<6D><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AFE<46><45><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡢<EFBFBD><E3A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
McuWDTClear(); //<2F><>ʱ<EFBFBD>幷
|
|||
|
|
|||
|
bTimer50msFlg = 0;
|
|||
|
AFEInfoProcess(); //<2F><>ȡAFE<46><45>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>¶ȡ<C2B6><C8A1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
BalanceProcess(); //ƽ<>⼰<EFBFBD><E2BCB0><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
|||
|
|
|||
|
ProtectProcess(); //<2F><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶ȱ<C2B6><C8B1><EFBFBD>
|
|||
|
|
|||
|
PorSelfTest(); //<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ籣<CFB5><E7B1A3><EFBFBD><EFBFBD><EFBFBD>⣨<EFBFBD><E2A3A8>ʱ<EFBFBD>϶̣<CFB6><CCA3>ݶ<EFBFBD>50mSһ<53>μ<EFBFBD><CEBC>⣩
|
|||
|
|
|||
|
LoadCheck(); //<2F><><EFBFBD>⸺<EFBFBD><E2B8BA><EFBFBD>Ƿ<EFBFBD><C7B7>ͷ<EFBFBD>
|
|||
|
|
|||
|
ChgerCheck(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ͷ<EFBFBD>
|
|||
|
|
|||
|
MosCtrl(); //MOS״̬<D7B4><CCAC><EFBFBD>⼰<EFBFBD><E2BCB0><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
ProtectOCRecover(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Իָ<D4BB>
|
|||
|
|
|||
|
//LedDisplay(); //LED<45><44>ʾ
|
|||
|
|
|||
|
#if (UART0_DEFINE != 0)
|
|||
|
Uart0Check(); //<2F><><EFBFBD><EFBFBD>UART0<54>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λָ<CEBB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#endif
|
|||
|
|
|||
|
#if (UART1_DEFINE != 0)
|
|||
|
Uart1Check(); //<2F><><EFBFBD><EFBFBD>UART1<54>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λָ<CEBB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#endif
|
|||
|
|
|||
|
#if (UART2_DEFINE != 0)
|
|||
|
Uart2Check(); //<2F><><EFBFBD><EFBFBD>UART2<54>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λָ<CEBB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
if(bTimer1sFlg) //1s<31><73>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
IO_LED = ~IO_LED; //LED
|
|||
|
|
|||
|
printf("\r\n");
|
|||
|
printf("BAT0:%.2f mV\r\n", AFE.uiCell[0]*1.0*CALIVOL/E2uiVPackGain);
|
|||
|
printf("BAT1:%.2f mV\r\n", AFE.uiCell[1]*1.0*CALIVOL/E2uiVPackGain);
|
|||
|
printf("BAT2:%.2f mV\r\n", AFE.uiCell[2]*1.0*CALIVOL/E2uiVPackGain);
|
|||
|
printf("BAT3:%.2f mV\r\n", AFE.uiCell[3]*1.0*CALIVOL/E2uiVPackGain);
|
|||
|
printf("BAT4:%.2f mV\r\n", AFE.uiCell[4]*1.0*CALIVOL/E2uiVPackGain);
|
|||
|
printf("TOTAL:%.2f mV\r\n",(AFE.uiCell[1]+AFE.uiCell[2]+AFE.uiCell[3]+AFE.uiCell[4])*1.0*CALIVOL/E2uiVPackGain);
|
|||
|
printf("\r\n");
|
|||
|
printf("TEMP0:%.2f C\r\n", AFE.uiICTempe[0]*17.0/100.0-270);
|
|||
|
// printf("TEMP1:%.2f C\r\n", (CalcuTemp(AFE.uiTS[0]) + E2siTS0Offset)*1.0);
|
|||
|
printf("TEMP1.0:%.2f C\r\n", AFE.uiTS[0]*1.0);
|
|||
|
printf("TEMP1.1:%.2f C\r\n", AFE.uiTS[1]*1.0);
|
|||
|
|
|||
|
bTimer1sFlg = 0;
|
|||
|
GasGaugeManage(); //Calculate the battery charge and discharge capacity
|
|||
|
|
|||
|
AFERamCheck(); //<2F><><EFBFBD><EFBFBD>AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>д
|
|||
|
|
|||
|
AFETwiCheck(); //<2F><><EFBFBD><EFBFBD>AFE<46><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5SͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
|
|||
|
E2PRomTwiCheck(); //<2F><><EFBFBD><EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5SͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
|
|||
|
RTCTwiCheck(); //<2F><><EFBFBD><EFBFBD>RTC<54><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5SͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
if(!RamCheckProcess()) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>д
|
|||
|
{
|
|||
|
SysParaInit();
|
|||
|
}
|
|||
|
|
|||
|
McuFlashWrWaitCheck(); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>MCU Flash
|
|||
|
|
|||
|
E2PRomBKCheck(); //<2F><><EFBFBD><EFBFBD>EEPROM
|
|||
|
|
|||
|
//LowPowerCheck(); //<2F><EFBFBD><CDB9>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
SystemResetProcess(); //ϵͳ<CFB5><CDB3>λ
|
|||
|
|
|||
|
ISPProcess(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
CaliProcess(); //У
|
|||
|
|
|||
|
McuFlashProcess(); //<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>MCU Flash<73><68>
|
|||
|
|
|||
|
E2PRomBKProcess(); //<2F><><EFBFBD><EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//LowPowerProcess(); //<2F><EFBFBD><CDB9>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
|
|||
|
Info.uiPackStatus = uiPackStatus; //<2F><><EFBFBD><EFBFBD>PACK<43><4B>Battery<72><79><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>UART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
Info.uiBatStatus = uiBatStatus;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|