Files
LFP_48V_mBMS_FW/mBMS_APP_V3117/APP/screen.c

363 lines
21 KiB
C

/**
******************************************************************************
* File Name : screen.c
* Description : This file provides code for the string
* of debug console.
******************************************************************************
* @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under Ultimate Liberty license
* SLA0044, the "License"; You may not use this file except in compliance with
* the License. You may obtain a copy of the License at:
* www.st.com/SLA0044
*
******************************************************************************
*/
#ifdef CONSOLE_DEBUG
/* Includes ------------------------------------------------------------------*/
#include <includes.h>
#include "delay.h"
#define SCREEN_LINE_DELAY 2 // line delay 2ms
const char OPMODE_STR[][84] =
{
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
"\r\n+--[Battery : ]---+---+---+---+---+---+---+---+---+---+--------------------+", // 2
"\r\n| | B |OCA|TCA|TDA|AFE|RSV|ZVC|F-C|F-D| Warning ( )HEX|", // 3
"\r\n| HeartB ( ) | S |INI|MD |FC |FD |RXM|ZVC|F-C|F-D| Protection( )HEX|", // 4
"\r\n+---------------------+---+---+---+---+---+---+---+---+---+-[CELL AVG ]--------+", // 5
"\r\n| B-Volt ( . )V | W |RSV|RSV|RSV|L-C|LTD|LTC|HTD|HTC| C-MAX ( . )V |", // 6
"\r\n| Current ( . )A | N |RSV|RSV|OCD|OCC|CUV|SUV|COV|SOV| C-AVG ( . )V |", // 7
"\r\n| SOC ( . )% +---+---+---+---+---+---+---+---+---+ C-MIN ( . )V |", // 8
"\r\n| | P |AFE|RSV|SC |RSV|LTD|LTC|HTD|HTC| C-DIFF ( . )V |", // 9
"\r\n+---------------------+ T |RSV|RSV|OCD|OCC|CUV|SUV|COV|SOV| CB AVG ( . )V |", // 0
"\r\n| F-Capa ( . )AH +---+---+---+---+---+---+---+---+---+ [ ] |", // 1
"\r\n+---------------------+ +-[TEMP AVG ]--------+", // 2
"\r\n| Operate( )| | T-MAX ( . )C |", // 3
"\r\n| Status ( )| | T-AVG ( . )C |", // 4
"\r\n| | | T-MIN ( . )C |", // 5
"\r\n+--[Cell Volt]--------+ M( )| T-DIFF ( . )C |", // 6
"\r\n|( . )( . )( . )+---------+---------+---------+-----+---+----------------+", // 7
"\r\n|( . )( . )( . )|T1( . )|T3( . )|T5( . )|F1( . )+-<INFORMATION>--+", // 8
"\r\n|( . )( . )( . )| | | | |DATE: / / |", // 9
"\r\n|( . )( . )( . )|T2( . )|T4( . )|T6( . )|F2( . )+TIME: : : |", // 0
"\r\n|( . )( . )( . )| | | | |T-CPU ( . )V |", // 1
"\r\n+---------------------+---------+---------+---------+---------+----------------+", // 2
"\r\n s : SETTING d : DIAGNOSTIC " // 3
};
void OmodeScreen(void)
{
for (int i = 0; i < 22; i++)
{
printf("%s", OPMODE_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
const char SETMODE_STR[22][84] =
{
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
" mBMS [SETTING] MODE",
"\r\n+--[PARMAMETER]---------+------------------------------------------------------+",
"\r\n| '1': Safety Config | |",
"\r\n| '2': Charge Control | |",
"\r\n| '3': SBS Config | |",
"\r\n| '4': Calibration | |",
"\r\n| | |",
"\r\n| | |",
"\r\n| | |",
"\r\n+-----------------------+ |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| 't' TIME SET (20151028180003)|",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n+------------------------------------------------------------------------------+",
"\r\n 'o' : OPERATING 'd' : DIAGNOSTIC "
};
void SmodeScreen(void)
{
for (int i = 0; i < 22; i++)
{
printf("%s", SETMODE_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
const char DIAGMODE_STR[22][84] = {
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
" mBMS [DIAGNOSTIC] MODE",
"\r\n+------------------------------------------------------------------------------+",
"\r\n| |",
"\r\n| |",
"\r\n|----------------------------< PL455 COMM MONITOR >----------------------------|",
"\r\n| '0' : P455 MSG MONITOR ( ) '1' : P455 MSG MONITOR ( ) |",
"\r\n|----------------------------< CAN COMM MONITOR >----------------------------|",
"\r\n| '2' : CAN MSG MONITOR ( ) '3' : CAN DATA MONITOR ( ) |",
"\r\n|----------------------------< RS485 COMM MONITOR >----------------------------|",
"\r\n| '4' : R485 MSG MONITOR ( ) '5' : R485 DATA MONITOR ( ) |",
"\r\n|------------------------------------------------------------------------------|",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n|---------------------------------------------------+--[SYSTEM CONTROL]--------+",
"\r\n| | 'q': S/W Reset |",
"\r\n| | |",
"\r\n| | |",
"\r\n| | |",
"\r\n| | |",
"\r\n+---------------------------------------------------+--------------------------+",
"\r\n o : OPERATING s: SETTING "
};
void DmodeScreen(void)
{
u16 i;
for (i = 0; i < 22; i++)
{
printf("%s", DIAGMODE_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
const char CC_MODE_STR[][86] =
{
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
" mBMS [SOC SETTING] MODE",
"\r\n+--[SYSTEM]--------------------------------------------------------------------+",
"\r\n| |",
"\r\n+--------------------------------------+--[CURRENT]----------------------------+",
"\r\n| | CHARGE DISCHARGE |",
"\r\n| | 10ms : ( . )A ( . )A |",
"\r\n| | 1 S : ( . )A ( . )A |",
"\r\n| | 1 M : ( . )A ( . )A( )|",
"\r\n| | 1 H : ( . )A ( . )A |",
"\r\n| | Capacity ( )AH |",
"\r\n| | CHG Capacity ( )AH |",
"\r\n| | DCH Capacity ( )AH |",
"\r\n| | |",
"\r\n| | |",
"\r\n| | |",
"\r\n| | |",
"\r\n| |---------------------------------------|",
"\r\n| | C-OFFSET ( . )V ( . )V |",
"\r\n| | D-OFFSET ( . )V ( . )V |",
"\r\n| | |",
"\r\n+--------------------------------------+---------------------------------------+",
"\r\n 'o' : OPERATING 's' : SETTING 'd' : DIAGNOSTIC "
};
void CcModeScreen(void)
{
for (int i = 0; i < 22; i++)
{
printf("%s", CC_MODE_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
const char TASK_STS_MODE_STR[22][84] =
{
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
" mBMS [OS TASK STATUS] MODE",
"\r\n+------------------------------------------------------------------------------+",
"\r\n| uC/OS-III, The Real-Time Kernel |",
"\r\n| Modify by JKWoo In Amogreentech |",
"\r\n|------------------------------------------------------------------------------|",
"\r\n| Task TStack FStack UStack CPU Us Peak ExecTime (mS) |",
"\r\n|-------------- ------ ------ ------ ------ ------ ------------- |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n|------------------------------------------------------------------------------|",
"\r\n| #Tasks : #CPU Usage: % #Task switch/sec: |",
"\r\n+------------------------------------------------------------------------------+",
"\r\n o : OPERATING s: SETTING "
};
void OSmodeScreen(void)
{
for (int i = 0; i < 22; i++)
{
printf("%s", TASK_STS_MODE_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
const char SF1_SET_STR[22][84] =
{
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
" mBMS [SAFETY] MODE",
"\r\n+--[1ST LEVEL SAFETY ]---------------------------------------------------------+",
"\r\n+-[VOLTAGE : '1' ]---------+-[TEMP : '3']------------+-[S VOLTAGE : '4']------+",
"\r\n| '1': COV Protect( )mV | '1': OT Chg Pro( . )C | '1': SOV Protect( )V |",
"\r\n| '2': COV Warning( )mV | '2': OT Chg War( . )C | '2': SOV Warning( )V |",
"\r\n| '3': COV Recover( )mV | '3': OT Chg Rec( . )C | '3': SOV Recover( )V |",
"\r\n|--------------------------|-------------------------|-------------------------|",
"\r\n| '4': CUV Protect( )mV | '4': OT Dsg Pro( . )C | '4': SUV Protect( )V |",
"\r\n| '5': CUV Warning( )mV | '5': OT Dsg War( . )C | '5': SUV Warning( )V |",
"\r\n| '6': CUV Recover( )mV | '6': OT Dsg Rec( . )C | '6': SUV Recover( )V |",
"\r\n+-[CURRENT : '2']----------+-------------------------+-[SOC : '5']------+",
"\r\n| '1': OC Chg Pro( )A | '7': LT Chg Pro( . )C | '1': Low SOC Warn( )% |",
"\r\n| '2': OC Chg War( )A | '8': LT Chg War( . )C | '2': Low SOC Reco( )% |",
"\r\n| '3': OC Chg Rec( )A | '9': LT Chg Rec( . )C +-[CELL DIFF : '6']------+",
"\r\n| '4': OC Chg Time ( )S |-------------------------| '1': CVD Protect( )mV|",
"\r\n|--------------------------| 'a': LT Dsg Pro( . )C | '2': CVD Warning( )mV|",
"\r\n| '5': OC Dsg Pro( )A | 'b': LT Dsg War( . )C | '3': CVD Recover( )mV|",
"\r\n| '6': OC Dsg War( )A | 'c': LT Dsg Rec( . )C +-[Thermistor : '7']------+",
"\r\n| '7': OC Dsg Rec( )A +-------------------------+ '1': Therm Open( . )C |",
"\r\n| '8;: OC Dsg Time ( )S | | '2': Therm Reco( . )C |",
"\r\n+--------------------------+-------------------------+-------------------------+",
"\r\n 'o' : OPERATING 'd' : DIAGNOSTIC "
};
void SF1modeScreen(void)
{
for (int i = 0; i < 22; i++)
{
printf("%s", SF1_SET_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
const char CHG_SET_STR[22][84] =
{
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
" mBMS [CHARGE CONTROL] MODE",
"\r\n+-[CHG CFG : '1']-----+-[Balance Cfg : '4']-----+------------------------+",
"\r\n| '1': ST Chg V ( )mV | '1': C-Bal Thr ( )mV | |",
"\r\n| '2': ST Chg C ( )A | '2': C-Bal Win ( )mV | |",
"\r\n+-[Pre-CHG CFG : '2']-----+ '3': C-Bal Min ( )mV | |",
"\r\n| '1': P-Chg Curr( )A | '4': C-Bal Int ( )S | |",
"\r\n| '2': P-Chg Volt( )mV +-[Current Cfg : '5']-----+ |",
"\r\n| '3': Recov Volt( )mV | '1': D-D Thr ( )mA | |",
"\r\n| '4': P-Chg Time( )min| '2': C-D Thr ( )mA | |",
"\r\n+-[Term Cfg : '3']-----| '3': Quit Cur ( )mA | |",
"\r\n| '1': Tap Curr ( )mA | '4': Dsg R-T ( )S | |",
"\r\n| '2': Tap Volt ( )mV | '5': Chg R-T ( )S | |",
"\r\n| '3': C-Tap Win ( )S +--------------------------+ |",
"\r\n| '4': FC Set ( )% | | |",
"\r\n| '5': FC Clear ( )% | | |",
"\r\n| '6': FD Set ( )% | | |",
"\r\n| '7': FD Clear ( )% | | |",
"\r\n+--------------------------+ | |",
"\r\n| | | |",
"\r\n| | | |",
"\r\n+--------------------------+--------------------------+------------------------+",
"\r\n 'o' : OPERATING 'd' : DIAGNOSTIC "
};
void ChgCtrlCfgmodeScreen(void)
{
for (int i = 0; i < 22; i++)
{
printf("%s", CHG_SET_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
const char SBS_SET_STR[22][84] =
{
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
" mBMS [SBS Configuration] MODE",
"\r\n+-[Data : '1']-------------+---------------------------------------------------+",
"\r\n| '1': Init B-Mode( )Hex| |",
"\r\n| '2': D-Volt ( )mV | |",
"\r\n| '3': Spec Info ( )Hex| |",
"\r\n| '4': M-Date ( )Hex| |",
"\r\n| '5': Ser.Noum. ( )Hex| |",
"\r\n| '6': Cycle Cnt ( )Cnt| |",
"\r\n| '7': CC Thr ( )mAh| |",
"\r\n| '8': D-Capa ( )Ah | |",
"\r\n| '9': D-Energy( )Wh | |",
"\r\n| 'a': F-Chg-Cap( )Ah | |",
"\r\n+--------------------------+ |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n| |",
"\r\n+------------------------------------------------------------------------------+",
"\r\n 'o' : OPERATING 'd' : DIAGNOSTIC "
};
void SBSmodeScreen(void)
{
for (int i = 0; i < 22; i++)
{
printf("%s", SBS_SET_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
const char CAL_SET_STR[22][84] =
{
// 1 2 3 4 5 6 7 8
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
" mBMS [Calibration] MODE",
"\r\n+-[Voltage : '1']--------+-[Internal Power '6']-----+-[Real Value]-----------+",
"\r\n| '1': Cell Sc 0 ( ) | '1': INT PWR ( )mA | DCH CURR ( )V |",
"\r\n| '2': Cell Sc 1 ( ) | '2': RLY PWR ( )mA | CHG CURR ( )V |",
"\r\n| '3': Pack Gain ( ) +--------------------------+ |",
"\r\n| '4': BATT Gain ( ) | | DIFF CURR ( )V |",
"\r\n+-[Discharge Current '2']--+ +------------------------+",
"\r\n| '1': DC Gain ( ) | | 'K': Init Zero Current |",
"\r\n| '2': DC Offset( ) | | '8': DCH Current Set |",
"\r\n+-[Charge Current '3']--+ | (ex: 8 100.0 + enter)|",
"\r\n| '1': CC1 Gain ( ) | | '9': CHG Current Set |",
"\r\n| '2': CC1 Offse( ) | | (ex: 9 50.0 + enter) |",
"\r\n|--------------------------| | |",
"\r\n| '3': CC2 Gain ( ) | | |",
"\r\n| '4': CC2 Offse( ) | | |",
"\r\n+--------------------------+ | |",
"\r\n| | | |",
"\r\n| | | |",
"\r\n| | | |",
"\r\n| | | |",
"\r\n+--------------------------+--------------------------+------------------------+",
"\r\n 'o' : OPERATING 'd' : DIAGNOSTIC "
};
void CalmodeScreen(void)
{
for (int i = 0; i < 22; i++)
{
printf("%s", CAL_SET_STR[i]);
delay_os_ms(SCREEN_LINE_DELAY);
}
}
#endif //CONSOLE_DEBUG