⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 Microsoft WinCE 6.0 BSP FINAL release source code for use with the i.MX27ADS TO2 WCE600_FINAL_MX27_S
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//BP Detection

// EOL conf

    PmicBatteryDisableEolComparator();

    index = 0x0D;//MC13783_PWR_CTL0_ADDR
    PmicRegisterRead(index, &reg);
    if(reg & 0x40000)
        g_pKato->Log(LOG_COMMENT, TEXT("Disabled EOL conf setting 0X%X\r\n"), (reg & 0xFFFFFF));
    else
        g_pKato->Log(LOG_COMMENT, TEXT(" ENABLED EOL conf to 0\r\n"));

    coincellvoltagelevel = 5;
    g_pKato->Log(LOG_COMMENT, TEXT("Set Coin Cell Voltage level to %d\r\n"),coincellvoltagelevel);
    PmicBatterySetCoincellVoltage (coincellvoltagelevel);

    PmicBatteryGetCoincellVoltage (&coincellvoltagelevel);
    g_pKato->Log(LOG_COMMENT, TEXT("Get Coin Cell Voltage level:  %d\r\n"),coincellvoltagelevel);

    coincellvoltagelevel = 0;
    g_pKato->Log(LOG_COMMENT, TEXT("Set Coin Cell Voltage level to %d\r\n"),coincellvoltagelevel);
    PmicBatterySetCoincellVoltage (coincellvoltagelevel);

    PmicBatteryDisableCoincellCharger();
    
    index = 0x0D;//MC13783_PWR_CTL0_ADDR
    PmicRegisterRead(index, &reg);
    if(reg & 0x08000000)
        g_pKato->Log(LOG_COMMENT, TEXT("Enable Coincell Charger 0X%X\r\n"), (reg & 0xFFFFFF));
    else
        g_pKato->Log(LOG_COMMENT, TEXT(" Disable Coincell Charger\r\n"));

    index = 0x0F;//MC13783_PWR_CTL2_ADDR
    reg = 0x01;
    PmicRegisterWrite(index, reg,0xffff);
    g_pKato->Log(LOG_COMMENT, TEXT("Enable Auto Restart after System Reset\r\n"));
    
    index = 0x0F;//MC13783_PWR_CTL2_ADDR
    PmicRegisterRead(index, &reg);
    
    if(reg & 0x01)
        g_pKato->Log(LOG_COMMENT, TEXT("Enable Auto Restart after System Reset\r\n"));
    else
        g_pKato->Log(LOG_COMMENT, TEXT(" Disable Auto Restart after System Reset\r\n"));
    


    index = 0x0F;//MC13783_PWR_CTL2_ADDR
    reg = 0x00;
    PmicRegisterWrite(index, reg,0xffff);
    g_pKato->Log(LOG_COMMENT, TEXT("Disable Auto Restart of System Reset\r\n"));
    
    index = 0x0F;//MC13783_PWR_CTL2_ADDR
    PmicRegisterRead(index, &reg);
////////////////////////////////////////////
    g_pKato->Log(LOG_COMMENT, TEXT("Pwrctrl Set VBKUP2 Regulator\r\n"));
    
    PmicPwrctrlSetVBKUPRegulator ((MC13783_PWRCTRL_REG_VBKUP)1, (MC13783_PWRCTRL_VBKUP_MODE)0);
    index = 0x0D;//MC13783_PWR_CTL0_ADDR
    reg = 0x00;
    PmicRegisterRead(index, &reg);

    g_pKato->Log(LOG_COMMENT, TEXT("Pwrctrl Get VBKUP2 Regulator : 0x%x\r\n"),reg);

    PmicRegisterWrite(index, reg,(0xffff & ~reg));
    
    PmicRegisterRead(index, &reg);

    g_pKato->Log(LOG_COMMENT, TEXT("Pwrctrl Get VBKUP2 Regulator : 0x%x\r\n"),reg);
#if 0
    for (i=0;i<REGU_NUMBER;i++) {
                if( ((i == REGU_VAUDIO) || 
                     (i == REGU_VCAM)   || 
                     (i == REGU_VVIB)   ||
                     (i == REGU_VMMC1)  ||
                     (i == REGU_VMMC2)) ) { 
                g_pKato->Log(LOG_COMMENT, TEXT("TEST Regu conf %d\r\n"),i);
                if(   !((i == REGU_VSIM) || 
                        (i == REGU_VESIM) || 
                        (i == REGU_VVIB) )) { 

                        PmicPwrctrlEnableRegenAssig((t_regulator)i);
                        PmicPwrctrlGetRegenAssig ((t_regulator)i, &value);
                        if (value!=1) {
                        g_pKato->Log(LOG_COMMENT, TEXT("Error in Regen conf %d\r\n"),i);
                        }
                       PmicPwrctrlDisableRegenAssig((t_regulator)i);
                }

                if(!(i == VRF2)){
                PmicVoltageRegulatorOn((PMIC_REGULATOR_VREG)i) ;
              //  CHECK_ERROR(MC13783_power_get_regu_state(i,&val));
               
                PmicVoltageRegulatorOff((PMIC_REGULATOR_VREG)i) ;
                }
                }
        }
#endif
#ifndef PLAT_FALCON
    UINT32 i;
    UINT8 value;

    for(i=0;i<16;i++)
    {

        if(REGULATOR_REGEN_BIT[i]!=-1)
        {
        PmicPwrctrlEnableRegenAssig((t_regulator)i);
        PmicPwrctrlGetRegenAssig ((t_regulator)i, &value);
            if (value!=1) {
            g_pKato->Log(LOG_COMMENT, TEXT("Error in Regen conf %d\r\n"),i);
            GPT_TEST_FUNCTION_EXIT();
            return TPR_FAIL;
            }
        PmicPwrctrlDisableRegenAssig((t_regulator)i);
        PmicPwrctrlGetRegenAssig ((t_regulator)i, &value);
            if (value!=0) {
            g_pKato->Log(LOG_COMMENT, TEXT("Error in Regen Disable %d\r\n"),i);
            GPT_TEST_FUNCTION_EXIT();
            return TPR_FAIL;
            }
        }


    }
#endif


    GPT_TEST_FUNCTION_EXIT();
    return TPR_PASS;

}



int MC13783_power_get_power_mode_sense(struct t_p_up_sense* mod)
{
    UINT32 reg;  
    unsigned char index;
    
    /*
    Additional sense bits are available in the power up mode sense register. Via these bits the state of the
    power up mode selection pins for the regulators, charger and USB can be read out. The table below
    summarizes these bits.
    */
    index = 0x06;//MC13783_PWR_MOD_ADDR
    PmicRegisterRead(index, &reg);
    g_pKato->Log(LOG_COMMENT, TEXT("Register MC13783_PWR_MOD_ADDR is 0X%X\r\n"), (reg & 0xFFFFFF));
    mod=(struct t_p_up_sense*)&reg;
    g_pKato->Log(LOG_COMMENT, TEXT("Register MC13783_PWR_MOD_ADDR is 0X%X\r\n"), (mod->state_ictest));

    if(mod)
    {
        if(mod->state_ictest)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins high %d\r\n"), (mod->state_ictest));
        else
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins low %d\r\n"), (mod->state_ictest));
        
        if(mod->state_clksel)
            g_pKato->Log(LOG_COMMENT, TEXT("CLKSELS SET %d\r\n"), (mod->state_clksel));

        if(mod->state_chrgmode10 ==0)
            g_pKato->Log(LOG_COMMENT, TEXT("charger interface CHRGMOD0 low %d\r\n"), (mod->state_chrgmode10));
        else if(mod->state_chrgmode10 ==1)
            g_pKato->Log(LOG_COMMENT, TEXT("charger interface CHRGMOD0 Open %d\r\n"), (mod->state_chrgmode10));
        else if(mod->state_chrgmode10==2)
            g_pKato->Log(LOG_COMMENT, TEXT("charger interface CHRGMOD0 Not available %d\r\n"), (mod->state_chrgmode10));
        else if(mod->state_chrgmode10 ==3)
            g_pKato->Log(LOG_COMMENT, TEXT("charger interface CHRGMOD0 high %d\r\n"), (mod->state_chrgmode10));

        if(mod->state_chrgmode20 ==0)
            g_pKato->Log(LOG_COMMENT, TEXT("charger interface CHRGMOD1 low %d\r\n"), (mod->state_chrgmode20));
        else if(mod->state_chrgmode20 ==1)
            g_pKato->Log(LOG_COMMENT, TEXT("charger interface CHRGMOD1 Open %d\r\n"), (mod->state_chrgmode20));
        else if(mod->state_chrgmode20 ==2)
            g_pKato->Log(LOG_COMMENT, TEXT("charger interface CHRGMOD1 Not available %d\r\n"), (mod->state_chrgmode20));
        else if(mod->state_chrgmode20 ==3)
            g_pKato->Log(LOG_COMMENT, TEXT("charger interface CHRGMOD1 high %d\r\n"), (mod->state_chrgmode20));

        if(mod->state_pums00 ==0)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS1 low %d\r\n"), (mod->state_pums00));
        else if(mod->state_pums00 ==1)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS1 Open %d\r\n"), (mod->state_pums00));
        else if(mod->state_pums00 ==2)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS1 Not available %d\r\n"), (mod->state_pums00));
        else if(mod->state_pums00 ==3)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS1 high %d\r\n"), (mod->state_pums00));


        if(mod->state_pums10==0)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS2 low %d\r\n"), (mod->state_pums10));
        else if(mod->state_pums10 ==1)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS2 Open %d\r\n"), (mod->state_pums10));
        else if(mod->state_pums10 ==2)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS2 Not available %d\r\n"), (mod->state_pums10));
        else if(mod->state_pums10 ==3)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS2 high %d\r\n"), (mod->state_pums10));


        if(mod->state_pums20 ==0)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS3 low %d\r\n"), (mod->state_pums20));
        else if(mod->state_pums20 ==1)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS3 Open %d\r\n"), (mod->state_pums20));
        else if(mod->state_pums20 ==2)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS3 Not available %d\r\n"), (mod->state_pums20));
        else if(mod->state_pums20 ==3)
            g_pKato->Log(LOG_COMMENT, TEXT("power up mode select pins PUMS3 high %d\r\n"), (mod->state_pums20));

        if(mod->state_sw_1a1b_joined)
            g_pKato->Log(LOG_COMMENT, TEXT("sw_1a1b joined %d\r\n"), (mod->state_sw_1a1b_joined));
        else
            g_pKato->Log(LOG_COMMENT, TEXT("sw_1a1b open %d\r\n"), (mod->state_sw_1a1b_joined));

        if(mod->state_sw_2a2b_joined)
            g_pKato->Log(LOG_COMMENT, TEXT("sw_2a2b joined %d\r\n"), (mod->state_sw_2a2b_joined));
        else
            g_pKato->Log(LOG_COMMENT, TEXT("sw_2a2b open %d\r\n"), (mod->state_sw_2a2b_joined));
        
        if(mod->state_umod00 ==0)
            g_pKato->Log(LOG_COMMENT, TEXT("USB transceiver operation mode selection at power up UMOD low %d\r\n"), (mod->state_umod00));
        else if(mod->state_umod00 ==1)
            g_pKato->Log(LOG_COMMENT, TEXT("USB transceiver operation mode selection at power up UMOD Open %d\r\n"), (mod->state_umod00));
        else if(mod->state_umod00 ==2)
            g_pKato->Log(LOG_COMMENT, TEXT("USB transceiver operation mode selection at power up UMOD Not available %d\r\n"), (mod->state_umod00));
        else if(mod->state_umod00 ==3)
            g_pKato->Log(LOG_COMMENT, TEXT("USB transceiver operation mode selection at power up UMOD high %d\r\n"), (mod->state_umod00));

        if(mod->state_usben)
            g_pKato->Log(LOG_COMMENT, TEXT("USB transceiver enabled  %d\r\n"), (mod->state_usben));
        else
            g_pKato->Log(LOG_COMMENT, TEXT("USB transceiver disabled  %d\r\n"), (mod->state_usben));

    }
    return 0;
}

int MC13783_power_cut_conf(struct t_power_cut_conf *pc)
{
        if(!pc->pc_counter_en)
        {
            PmicPwrctrlDisablePowerCut();
        }
        else
            PmicPwrctrlEnablePowerCut();

        if(!pc->pc_auto_user_off)
        {
            PmicPwrctrlDisableUserOffModeWhenDelay();
        }
        else
            PmicPwrctrlEnableUserOffModeWhenDelay();

        if(!pc->pc_user_off_32k_en)
        {
            PmicPwrctrlDisableClk32kMCU();
        }
        else
            PmicPwrctrlEnableClk32kMCU();
        
    
        if(pc->pc_timer)
            PmicPwrctrlSetPowerCutTimer ((UINT8)(pc->pc_timer));
        if(pc->pc_counter)
            PmicPwrctrlSetPowerCutCounter((UINT8)(pc->pc_counter));

        if(pc->pc_max_nb_pc)
            PmicPwrctrlSetPowerCutMaxCounter((UINT8)(pc->pc_max_nb_pc));
        if(pc->pc_ext_timer)
            PmicPwrctrlSetMemHoldTimer ((UINT8)(pc->pc_ext_timer));

        if(pc->pc_ext_timer_inf)
            PmicPwrctrlSetMemHoldTimerAllOn();
        else 
            PmicPwrctrlClearMemHoldTimerAllOn();


        

return 0;
}

int MC13783_power_cut_get_conf(struct t_power_cut_conf *pc)
{
    UINT8 duration;
    UINT8 counter;
    UINT32 reg;  
    unsigned char index;
    PmicPwrctrlGetPowerCutTimer (&duration);
    pc->pc_timer = duration;

    PmicPwrctrlGetPowerCutCounter (&counter);
    pc->pc_counter = counter;

    PmicPwrctrlGetPowerCutMaxCounter(&duration);
    pc->pc_max_nb_pc = duration;
    PmicPwrctrlGetMemHoldTimer (&duration);
    pc->pc_ext_timer = duration;
    index = 0x0E;//MC13783_PWR_CTL1_ADDR
    PmicRegisterRead(index, &reg);
    if((reg &0x00100000))
        pc->pc_ext_timer_inf = 1;//((reg &0x00100000) >> 20);
    else
        pc->pc_ext_timer_inf = 0;

    pc->pc_max_nb_pc = ((reg &0x0000F800) >> 11);
    
    PmicPwrctrlGetMemHoldTimer (&duration);
    pc->pc_ext_timer=duration;

    index = 0x0D;//MC13783_PWR_CTL0_ADDR
    PmicRegisterRead(index, &reg);
    if((reg &0x00000002))
        pc->pc_counter_en = 1;
    else
        pc->pc_counter_en = 0;

    if((reg &0x00000008))
        pc->pc_auto_user_off =1;
    else
        pc->pc_auto_user_off =0;

    if((reg &0x00000020))
        pc->pc_user_off_32k_en=1;
    else
        pc->pc_user_off_32k_en=0;

return 0;
}



//Local function 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -