PowerManagement_user.c 10.4 KB
Newer Older
hu's avatar
hu committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#include "PowerManagement.h"
#include "System_Monitor.h"
#include "Common_Interface.h"
#include "Data_CoolantTemperature.h"
#include "Data_VehicleSpeed.h"
#include "Data_EngineSpeed.h"
#include "Service_TPMS.h"
#include "Services_Mileage.h"
#include "Data_Gear.h"
#include "Data_Time.h"
#include "AC_TEMP.h"
#include "Service_OFF_Time.h"
#include "RTE_CAN_NM.h"
#include "Telltales.h"
#include "Line_in.h"
#include "Seg_Ref.h"
#include "Seatbelt.h"
#include "Door.h"
#include "Data_AirPressure.h"
#include "Key.h"
hu's avatar
hu committed
21
#include "Key_user.h"
hu's avatar
hu committed
22 23 24 25 26 27 28 29 30 31 32
#include "Menu.h"
#include "Services_ODO_User.h"
#include "AvgSpeed.h"
#include "Maintenance.h"
#include "GaugesInterface.h"
#include "Popup_Scheduler.h"
#include "GPIO.h"
#include "dr7f701441.dvf.h"
#include "Sound_Scheduler.h"
#include "Sound_Player.h"
#include "RTE_PWM_OUT.h"
33
#include "BackLight_APP.h"
hu's avatar
hu committed
34 35
#include "Clock.h"
#include "TimerB.h"
hu's avatar
hu committed
36
#include "SEG_DISPLAY.h"
hu's avatar
hu committed
37 38 39 40
#include "CD4051.h"
#include "GaugesInterface.h"
#include "DisplaySch_user.h"
#include "Data_FuelConsump.h"
41 42
#include "LED_Driver.h"
#include "LED_Driver_Interface.h"
hu's avatar
hu committed
43 44 45 46

#include "GUI.h"
#include "Data_Fuel_User.h"

hu's avatar
hu committed
47
#include "app_Service.h"
hu's avatar
hu committed
48
#include "UART.h"
hu's avatar
hu committed
49 50 51 52
#include "kwp2000_tp.h"
#include "kwp2000_protocol.h"
#include "kwp2000_service.h"

53
#include "RTE_TIME.h"
54 55 56 57 58
#include "Watchdog.h"
#include "GenDelay.h"
#include "DoCAN_ISO15765.h"
#include "UDS_ISO14229_Server.h"
#include "Analog_Signals.h"
hu's avatar
hu committed
59 60
#include "BGLInterface.h"
#include "BU98R10.h"
hu's avatar
hu committed
61 62
#include "RSCAN.h"
#include "RSCAN_Table.h"
63

hu's avatar
hu committed
64 65 66 67
#define POWER_NM_SLEEP  0U
#define POWER_NM_WAKEUP 1U

static uint8_t PowerGetNMStatus(void);
hu's avatar
hu committed
68
extern void SEG_LCD_Window_Switch(uint8_t Sw);
hu's avatar
hu committed
69 70 71 72

Power_Status_t Power_KL30_Init ( void )
{
    Power_Status_t u8PowerSts;
73
    RTE_RTC_KL30_Init();
hu's avatar
hu committed
74
    CD4051B_KL15Init();
hu's avatar
hu committed
75

hu's avatar
hu committed
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
    ClearNoInitArea();
    Common_DataInit();
    Sys_KL30_Init();
    Line_In_KL30_Init();
    Telltales_Left_Right_KL30_Init();
    Telltales_KL30_Init();
    SEG_BUFF_Init();
    DispSch_TotalInit();

    UserGaugeK30Init();

    Service_OFF_Timing_KL30Init();
    Data_User_Mileage_KL30Init();
    Data_AvgSpeed_KL30_Init();
    Data_Maintenance_Service_KL30_Init();

    Data_AC_Temp_KL30_Init();
    Data_TPMS_KL30_Init();
    Data_Gear_KL30_Init();
    Data_ODO_Clear_KL30Init();

    SeatbeltInit();
    Door_WakeUpInit();

hu's avatar
hu committed
100 101 102
    Key_KL30_Init_EXample();
    Key_Parameter_Set_Short_Press_1_Time(40, 800);
    Key_Parameter_Set_Long_Press_2_Time(4000);
hu's avatar
hu committed
103

104
    LED_Driver_Init();
hu's avatar
hu committed
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
    Sound_Scheduler_Init();
    Sound_Player_Init();
    RTE_PWM_Init();

    Popup_Scheduler_Init();

    /*5s不按按键计时清零*/
    //LongTimeNoKey_Operation_TimeRest();
    BL_Init();

    /*****油耗类****/
    Fuel_User_KL30_Init();
    u8PowerSts = m_IGN_OFF_Init;
    return  u8PowerSts;
}


void Power_Sleep_Init(void)
{
hu's avatar
hu committed
124
    /*数据*/
hu's avatar
hu committed
125 126 127 128
    Speed_Sleep_Init();
    Tacho_Sleep_Init();
    Coolant_Sleep_Init();

129 130 131
    /*燃油库睡眠前需要调用 ----20220503----*/
    Fuel_User_Sleep_Init();

hu's avatar
hu committed
132 133
    /*外设*/
    Seg_Display_OFF();
hu's avatar
hu committed
134

hu's avatar
hu committed
135 136 137 138 139 140
    UART_Sleep_Init();
    Buzzer_Shutdown(); /*蜂鸣器*/
    TimerB_PWM_Channel_Sleep(TIMERB_0_CH15);
    TimerB_PWM_Channel_Sleep(TIMERB_2_CH1);
    TimerB_PWM_Channel_Sleep(TIMERB_2_CH7);
    TimerB_PWM_Channel_Sleep(TIMERB_1_CH15);
hu's avatar
hu committed
141
    TimerB_PWM_Channel_Sleep(TIMERB_0_CH7);
hu's avatar
hu committed
142

hu's avatar
hu committed
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_0);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_1);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_2);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_3);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_4);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_5);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_6);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_7);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_8);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_9);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_10);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_11);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_12);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_13);

    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_0);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_1);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_2);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_3);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_4);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_5);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_6);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_7);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_8);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_9);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_10);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_11);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_12);
    RSCAN0_CH2_Abort(RSCAN_CHANNEL_BUF_13);

173
    RSCAN0_Sleep_Init();
hu's avatar
hu committed
174

hu's avatar
hu committed
175 176 177 178 179 180 181 182 183
    VCC12V0_OUT_EN = 0u;        /*12V 电源使能*/
    VCC05V0_OUT_EN = 0u;        /*外设5V 电源使能*/
    D1530_EN_MCU_OUT = 0u;      /*1530 使能*/
    //BL_ACC_EN = 1U;             /*8867 使能*/
    Fuel_VCC05V_OUT_EN = 0u ;   /*燃油电源 使能*/
    AIR_5V_OUT_EN = 0u;         /*气压 5V*/
    ACC5V_LED_PWM_MCU = 0u;
    BUZZER_ACC_OUT_EN = 0u;

hu's avatar
hu committed
184 185 186 187 188 189
    GPIO_Init(GPIO_SLEEP_MODE );
}


Power_Status_t Power_Wakeup_Init ( void )
{
hu's avatar
hu committed
190 191
    Kwp2000_Init();

hu's avatar
hu committed
192
    Power_Status_t u8PowerSts;
hu's avatar
hu committed
193

hu's avatar
hu committed
194 195 196 197 198 199 200
    Common_DataInit();
    Sys_WakeUp_Init();
    Line_In_KL30_Init();
    Telltales_Left_Right_KL30_Init();
    Telltales_KL30_Init();
    SEG_BUFF_Init();
    DispSch_TotalInit();
hu's avatar
hu committed
201

hu's avatar
hu committed
202 203
    Telltales_Wakeup_Init();
    Data_Time_WakeUp_Init();
hu's avatar
hu committed
204

hu's avatar
hu committed
205
    UserGaugeK30Init();
hu's avatar
hu committed
206

hu's avatar
hu committed
207 208
    Data_User_Mileage_KL15Init();
    Maintenance_WakeUp_Init();
hu's avatar
hu committed
209

hu's avatar
hu committed
210 211
    SeatbeltInit();
    Door_WakeUpInit();
hu's avatar
hu committed
212

hu's avatar
hu committed
213
    RTE_PWM_Init();
hu's avatar
hu committed
214
    Key_Wakeup_Init_EXample();
hu's avatar
hu committed
215

216 217 218
    /*燃油新增 ----20220503----*/
    Fuel_User_Wakeup_Init();

219
    LED_Driver_Init();
hu's avatar
hu committed
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
    /*报警调度初始化*/
    Popup_Scheduler_Init();
    /*报警调度初始化*/
    Sound_Scheduler_Init();
    Sound_Player_Init();
    u8PowerSts = m_IGN_OFF_Init;
    return  u8PowerSts;
}




void Power_IG_OFF_Init(void)
{
    Line_In_KL15_OFF_Init();
    Speed_KL15_OFF_Init();
    Tacho_KL15_OFF_Init();
    Coolant_KL15_OFF_Init();
    //Maintenance_KL15_OFF_Init();
    /*表头参数初始OFF下调用 added by yutian*/
    GaugesK15Init_OFF() ;/*仪表IGOFF调用*/
    /*end*/
    /*报警调度*/
    Popup_Scheduler_OFF();
    //Menu_Init_IG(0u);
    GUI_Display_KL15_OFF_Init();
hu's avatar
hu committed
246 247 248

    /*关闭所有断码*/
    Seg_Display_OFF();
hu's avatar
hu committed
249
    Key_Set_IG_Status(KEY_IG_OFF);
hu's avatar
hu committed
250 251 252
}
void Power_IG_ON_Init(void)
{
hu's avatar
hu committed
253
    Kwp2000_Init();
hu's avatar
hu committed
254
    DiagnosisInit_main();
hu's avatar
hu committed
255 256 257 258 259 260 261 262 263 264 265 266 267 268
    Data_ODO_Clear_KL15Init();
    Telltales_KL15_Init();
    Line_In_KL15_ON_Init();
    Coolant_KL15_ON_Init();
    Data_Time_KL15_Init();
    Data_AC_Temp_KL15_Init();
    Data_TPMS_KL15_ON_Init();
    Service_OFF_Timing_KL15Init();
    Tacho_KL15_ON_Init();
    Speed_KL15_ON_Init();
    Data_Gear_KL15_Init();
    /*表头数据处理 added by yutian*/
    UserGaugeK15Init() ;/*仪表IGON调用*/
    /*end*/
hu's avatar
hu committed
269
    CD4051B_KL15Init();
hu's avatar
hu committed
270
    Key_Set_IG_Status(KEY_IG_ON);
hu's avatar
hu committed
271 272
    /*5s不按按键计时清零*/
    //LongTimeNoKey_Operation_TimeRest();
273

hu's avatar
hu committed
274
    DispSch_TotalInit();
hu's avatar
hu committed
275
    GUI_Display_KL15_ON_Init();
276 277 278

    /*气压1 气压2 WET气压数据初始化*/
    AirPressure_KL15_ON_Init();
hu's avatar
hu committed
279
}
280

hu's avatar
hu committed
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316
Power_Status_t Power_Stay_ON(void)
{
    Power_Status_t u8PowerSts;
    uint8_t u8Condition1;
    uint8_t u8Condition2;
    uint8_t u8Condition3;
    u8Condition1 = Common_Get_IG_Sts() ;
    u8Condition2 = Common_Get_IG_Sts_Valid();
    u8Condition3 = System_FUN_KL30_Status_Get();
    if ((u8Condition1 == COMMON_POWER_ON ) && ( u8Condition2 == COMMON_Valid))
    {
        u8PowerSts = m_IGN_ON;
    }
    else
    {
        if ((u8Condition1 == COMMON_POWER_OFF ) && (u8Condition2 == COMMON_Valid))
        {
            u8PowerSts = m_IGN_OFF_Init;
        }
        else
        {
            u8PowerSts = m_IGN_ON;
        }
    }
    if (((u8Condition3 == 1u) || (u8Condition3 >= 7u)))
    {
        u8PowerSts = m_IGN_LIMIT;
    }
    return  u8PowerSts;
}

Power_Status_t Power_Stay_OFF(void)
{
    Power_Status_t u8PowerSts;
    uint8_t u8Condition1;
    uint8_t u8Condition2;
317 318
    uint32_t Get_Menu_Off_Time;

hu's avatar
hu committed
319 320
    u8Condition1 = Common_Get_IG_Sts() ;
    u8Condition2 = Common_Get_IG_Sts_Valid();
321
    Get_Menu_Off_Time = Coom_Get_Menu_Off_Time();
hu's avatar
hu committed
322 323 324 325 326 327 328 329 330

    if ((u8Condition1 == COMMON_POWER_ON ) && (u8Condition2 == COMMON_Valid))
    {
        u8PowerSts = m_IGN_ON_Init;
    }
    else
    {
        if ((u8Condition1 == COMMON_POWER_OFF ) && (u8Condition2 == COMMON_Valid))
        {
331 332 333
            if (
                (PowerGetNMStatus() == POWER_NM_SLEEP) &&
                (LED_WAKEUP == LEVEL_LOW) &&
334
                (Get_Menu_Off_Time >= 150050)
335
            )
hu's avatar
hu committed
336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355
            {
                u8PowerSts = m_IGN_Sleep_Init;
            }
            else
            {
                u8PowerSts = m_IGN_OFF;
            }
        }
        else
        {
            u8PowerSts = m_IGN_OFF;
        }
    }
    return  u8PowerSts;
}



Power_Status_t  Power_Stay_Protect(void)
{
hu's avatar
hu committed
356
    Power_Status_t u8PowerSts = m_IGN_OFF_Init;
hu's avatar
hu committed
357
    uint32_t Delaycnt = 0;
hu's avatar
hu committed
358

hu's avatar
hu committed
359 360 361 362 363 364
    /*关应用关闭了段码,所有背光,CAN 屏幕显示没有关闭 123……*/
    Seg_Display_OFF();
    BackLightSchedu(0, 0);
    SEG_LCD_Window_Switch(0);
    BU98R10_Shutdown();
    Line_In_KL15_OFF_Init();
365 366 367 368 369 370

    for (;;)
    {
        /*喂狗*/
        WDT_Clear( );
        CAN_TX_SetEnable(0);
hu's avatar
hu committed
371

372
        /*一定周期调用2ms*/
373
        Gen_TimeDelay(2000u, 50u);
374 375 376 377 378
        DoCAN_Communication_Service( );
        UDS_Server_Application_Service( );
        UDS_10ms_Service( );
        Analog_Signal_Conv_Service();
        Sys_Status_Update_Service( );
hu's avatar
hu committed
379 380 381

        Seg_Buffer_Commit();

382 383 384 385
        Delaycnt++;
        if ( Delaycnt >= 5u )
        {
            Delaycnt = 0u;
hu's avatar
hu committed
386 387
            CAN_BUSOFF_Recover();
            //Can_BusOff_Fun();
388
        }
hu's avatar
hu committed
389

390 391 392 393
        /*- 电源模式正常,退出 -*/
        if ( SYS_OPR_STAT_RUN )
        {
            CAN_TX_SetEnable(0x55);
hu's avatar
hu committed
394 395 396 397
            CD4051B_KL15Init();
            Line_In_KL15_ON_Init();
            SEG_BUFF_Init();
            BU98R10_Init();
hu's avatar
hu committed
398

399 400 401
            return u8PowerSts;
        }
    }
hu's avatar
hu committed
402

hu's avatar
hu committed
403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437
    return  u8PowerSts;
}



Power_Status_t Power_Stay_Sleep ( void )
{
    Power_Status_t u8PowerSts;

    Sys_Enter_Sleep_Mode();




    u8PowerSts = m_IGN_OFF_Init;
    return  u8PowerSts;
}


static uint8_t PowerGetNMStatus(void)
{
    uint8_t u8NMStatus = 0U;
    NM_Mode_t m_condition;
    m_condition = RTE_CAN_NM_GetStatus();

    if (m_condition == NM_Mode_Sleep)
    {
        u8NMStatus = POWER_NM_SLEEP;
    }
    else
    {
        u8NMStatus = POWER_NM_WAKEUP;
    }


438

hu's avatar
hu committed
439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455

    return u8NMStatus;
}




void ClearNoInitArea(void)
{
    uint32_t  *pRam;
    uint32_t  p;
    pRam = (unsigned int*)0x3FCE4000ul;
    for (p = 0ul; p < 4096ul; p ++)
    {
        pRam[ p ] = 0ul;
    }
}