123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- #include "battery_display.h"
- #include "tasks.h"
- void Charging_Status_Battery_Display(uint8_t Soc)
- {
- static uint32_t Charging1TimeCnt = 0;
- static uint32_t Charging2TimeCnt = 0;
- static uint32_t Charging3TimeCnt = 0;
- static uint32_t Charging4TimeCnt = 0;
- static uint32_t Charging5TimeCnt = 0;
- static uint8_t Charging1_Flag = 0;
- static uint8_t Charging2_Flag = 0;
- static uint8_t Charging3_Flag = 0;
- static uint8_t Charging4_Flag = 0;
- static uint8_t Charging5_Flag = 0;
-
- static uint8_t reset_flag = 0;
-
- if(Soc < 0x19)
- {
- Charging2_Flag = 0;
- Charging3_Flag = 0;
- Charging4_Flag = 0;
- Charging5_Flag = 0;
- reset_flag = 0;
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_SET);
- if(Charging1_Flag == 0)
- {
- Charging1TimeCnt = SysTime_5ms;
- Charging1_Flag = 1;
- }
-
- if(TimeCntDiff_5ms(Charging1TimeCnt) >= CHARGING_TIME)
- {
- HAL_GPIO_TogglePin(ONE_GPIO_Port, ONE_Pin);
-
- Charging1_Flag = 0;
- }
- }
- else if((Soc >= 0x19) && (Soc < 0x32))
- {
- Charging1_Flag = 0;
- Charging3_Flag = 0;
- Charging4_Flag = 0;
- Charging5_Flag = 0;
- reset_flag = 0;
- HAL_GPIO_WritePin(ONE_GPIO_Port, ONE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_SET);
- if(Charging2_Flag == 0)
- {
- Charging2TimeCnt = SysTime_5ms;
- Charging2_Flag = 1;
- }
-
- if(TimeCntDiff_5ms(Charging2TimeCnt) >= CHARGING_TIME)
- {
- HAL_GPIO_TogglePin(TWO_GPIO_Port, TWO_Pin);
-
- Charging2_Flag = 0;
- }
- }
- else if((Soc >= 0x32) && (Soc < 0x4B))
- {
- Charging1_Flag = 0;
- Charging2_Flag = 0;
- Charging4_Flag = 0;
- Charging5_Flag = 0;
- reset_flag = 0;
- HAL_GPIO_WritePin(ONE_GPIO_Port, ONE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_SET);
- if(Charging3_Flag == 0)
- {
- Charging3TimeCnt = SysTime_5ms;
- Charging3_Flag = 1;
- }
-
- if(TimeCntDiff_5ms(Charging3TimeCnt) >= CHARGING_TIME)
- {
- HAL_GPIO_TogglePin(THREE_GPIO_Port, THREE_Pin);
-
- Charging3_Flag = 0;
- }
- }
- else if((Soc >= 0x4B) && (Soc < 0x64))
- {
- Charging1_Flag = 0;
- Charging2_Flag = 0;
- Charging3_Flag = 0;
- Charging5_Flag = 0;
- reset_flag = 0;
- HAL_GPIO_WritePin(ONE_GPIO_Port, ONE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_RESET);
- if(Charging4_Flag == 0)
- {
- Charging4TimeCnt = SysTime_5ms;
- Charging4_Flag = 1;
- }
-
- if(TimeCntDiff_5ms(Charging4TimeCnt) >= CHARGING_TIME)
- {
- HAL_GPIO_TogglePin(FOUR_GPIO_Port, FOUR_Pin);
-
- Charging4_Flag = 0;
- }
- }
- else if(Soc == 0x64)
- {
- Charging1_Flag = 0;
- Charging2_Flag = 0;
- Charging3_Flag = 0;
- Charging4_Flag = 0;
-
- if(reset_flag == 0)
- {
- HAL_GPIO_WritePin(ONE_GPIO_Port, ONE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_RESET);
- reset_flag = 1;
- }
-
- if(Charging5_Flag == 0)
- {
- Charging5TimeCnt = SysTime_5ms;
- Charging5_Flag = 1;
- }
-
- if(TimeCntDiff_5ms(Charging5TimeCnt) >= CHARGING_TIME)
- {
- HAL_GPIO_TogglePin(ONE_GPIO_Port, ONE_Pin);
- HAL_GPIO_TogglePin(TWO_GPIO_Port, TWO_Pin);
- HAL_GPIO_TogglePin(THREE_GPIO_Port, THREE_Pin);
- HAL_GPIO_TogglePin(FOUR_GPIO_Port, FOUR_Pin);
-
- Charging5_Flag = 0;
- }
- }
- }
- void Normal_Work_Battery_Display(uint8_t Soc)
- {
- static uint32_t LowerPowerTimeCnt = 0;
- static uint32_t VeryLowerPowerTimeCnt = 0;
- static uint8_t Low_Power_Flag = 0;
- static uint8_t Very_Low_Power_Flag = 0;
- static uint8_t NoBattery_Flag = 0;
- static uint32_t NoBattery_TimeCnt=0;
-
- if(Soc < 0x05)//<5%
- {
- if(Very_Low_Power_Flag == 0)
- {
- VeryLowerPowerTimeCnt = SysTime_5ms;
- Very_Low_Power_Flag = 1;
- }
-
- if(TimeCntDiff_5ms(VeryLowerPowerTimeCnt) >= VERY_LOW_POWER_TIME)
- {
- HAL_GPIO_TogglePin(ONE_GPIO_Port, ONE_Pin);
-
- Very_Low_Power_Flag = 0;
- }
-
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_SET);
- }
- if((Soc >= 0x05) && (Soc <= 0x0A))//5%-10%
- {
- if(Low_Power_Flag == 0)
- {
- LowerPowerTimeCnt = SysTime_5ms;
- Low_Power_Flag = 1;
- }
-
- if(TimeCntDiff_5ms(LowerPowerTimeCnt) >= LOW_POWER_TIME)
- {
- HAL_GPIO_TogglePin(ONE_GPIO_Port, ONE_Pin);
-
- Low_Power_Flag = 0;
- }
-
- Very_Low_Power_Flag = 0;
-
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_SET);
- }
- else if((Soc > 0x0A) && (Soc <= 0x19))//10%-25%
- {
- Low_Power_Flag = 0;
- Very_Low_Power_Flag = 0;
-
- HAL_GPIO_WritePin(ONE_GPIO_Port, ONE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_SET);
- }
- else if((Soc > 0x19) && (Soc <= 0x32))//25%-50%
- {
- Low_Power_Flag = 0;
- Very_Low_Power_Flag = 0;
-
- HAL_GPIO_WritePin(ONE_GPIO_Port, ONE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_SET);
- }
- else if((Soc > 0x32) && (Soc <= 0x4B))//50%-75%
- {
- Low_Power_Flag = 0;
- Very_Low_Power_Flag = 0;
-
- HAL_GPIO_WritePin(ONE_GPIO_Port, ONE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_SET);
- }
- else if(Soc == 0xff)
- {
- if(NoBattery_Flag == 0)
- {
- NoBattery_TimeCnt = SysTime_5ms;
- NoBattery_Flag= 1;
- }
-
- if(TimeCntDiff_5ms(NoBattery_TimeCnt) >= 200)
- {
- HAL_GPIO_TogglePin(ONE_GPIO_Port, ONE_Pin);
- HAL_GPIO_TogglePin(TWO_GPIO_Port, TWO_Pin);
- HAL_GPIO_TogglePin(THREE_GPIO_Port, THREE_Pin);
- HAL_GPIO_TogglePin(FOUR_GPIO_Port, FOUR_Pin);
-
- NoBattery_Flag= 0;
- }
- }
- else if(Soc > 0x4B)//>75%
- {
- Low_Power_Flag = 0;
- Very_Low_Power_Flag = 0;
-
- HAL_GPIO_WritePin(ONE_GPIO_Port, ONE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(TWO_GPIO_Port, TWO_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(THREE_GPIO_Port, THREE_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(FOUR_GPIO_Port, FOUR_Pin, GPIO_PIN_RESET);
- }
- }
- uint8_t Battery_Infor = 0;
- /* Functional battery information processing */
- void Battery_Information_Process(void)
- {
- if(BMS_Online_Flag == 1)
- {
- Battery_Infor=BMS_RunInfo.SOC;
- }
- else if(BMS_Online_Flag!= 0x01)
- {
- Battery_Infor=MC_RunInfo.SOC;
- }
- if(BMS_ChargingFlag == TRUE)
- {
- Charging_Status_Battery_Display(Battery_Infor);
- }
- else
- {
- Normal_Work_Battery_Display(Battery_Infor);
- }
- }
|