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

📄 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 页
字号:
        break;
    case 3:
        for(count = 0; count <= VGEN_1_80V; count++)
        {
            lCount.vgen =(MC13783_REGULATOR_VREG_VOLTAGE_VGEN) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        break;

    case 4:
#ifndef PLAT_FALCON
        for(count = 0;count <= VRFDIG_1_875V; count++)
        {
            lCount.vrfdig =(MC13783_REGULATOR_VREG_VOLTAGE_VRFDIG) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
#endif
        break;
    case 5:
        for(count = 0; count <= VRFREF_2_775V; count++)
        {
            lCount.vrfref =(MC13783_REGULATOR_VREG_VOLTAGE_VRFREF) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        break;
    case 6:
        for(count = 0; count <= VRFCP_2_775V; count++)
        {
            lCount.vrfcp =(MC13783_REGULATOR_VREG_VOLTAGE_VRFCP) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        break;
    case 7:
        for(count = 0; count <= VSIM_2_9V; count++)
        {
            lCount.vsim =(MC13783_REGULATOR_VREG_VOLTAGE_SIM) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        break;
    case 8:
        for(count = 0; count <= VESIM_2_9V; count++)
        {
            lCount.vesim =(MC13783_REGULATOR_VREG_VOLTAGE_ESIM) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        break;
    case 9:
        for(count = 0; count <= VCAM_8;count++)
        {
            lCount.vcam =(MC13783_REGULATOR_VREG_VOLTAGE_CAM) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        break;
    case 10:
#if 0
        for(count = 0; count <= V_VIB_3_0V; count++)
        {
            lCount.v_vib =(MC13783_REGULATOR_VREG_VOLTAGE_VIB) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        if(count==V_VIB_3_0V)
            PmicVoltageRegulatorOff ((PMIC_REGULATOR_VREG)i);
#endif
        break;
    case 11:
#if 0
        for(count = 0; count <= VRF2_2_775V; count++)
        {
            lCount.vrf =(MC13783_REGULATOR_VREG_VOLTAGE_VRF) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
#endif
        break;
    case 12:
#if 0
        for(count = 0;count <= VRF2_2_775V; count++)
        {
            lCount.vrf =(MC13783_REGULATOR_VREG_VOLTAGE_VRF) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
#endif
        break;
    case 13:
        for(count = 0; count <= VMMC_8; count++)
        {
            lCount.vmmc =(MC13783_REGULATOR_VREG_VOLTAGE_MMC) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        break;
    case 14:
        for(count = 0; count <= VMMC_8; count++)
        {
            lCount.vmmc =(MC13783_REGULATOR_VREG_VOLTAGE_MMC) count;
            PmicVoltageRegulatorSetVoltageLevel (( PMIC_REGULATOR_VREG)i,lCount);
            PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
            Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);
            Sleep(3000);
        }
        break;
    default :
        break;
    }
    PmicVoltageRegulatorGetVoltageLevel (( PMIC_REGULATOR_VREG) i,&Reg_Voltage);
    Print_VoltageregulatorValues(( PMIC_REGULATOR_VREG) i,Reg_Voltage);

    }

    Sleep(10000);
    //Switch off the vibrator after 10 seconds
    i=10;
    PmicVoltageRegulatorOff ((PMIC_REGULATOR_VREG)i);

    //
    //PmicSwitchModeRegulatorGetMode
    //SW1A = 0,    SW1B,    SW2A,    SW2B,
    //LOW = 0,    HIGH,
    //    SW_MODE_OFF,    SW_MODE_PWM,    SW_MODE_PULSESKIP,    SW_MODE_PFM,
    
    for (j = 0; j < 4; j++)
    {
        sreg = sreg_tab[j];
        sreg_name = sreg_name_tab[j];
    
        PmicSwitchModeRegulatorGetMode(sreg,(PMIC_REGULATOR_SREG_STBY)LOW,&mode);
        g_pKato->Log(LOG_COMMENT, TEXT("Switch Mode Voltage Regulator %s mode is : 0x%x \r\n"), sreg_name, mode);
    
        regulator_mode = mode;
        for(i = 0; i < 4; i++)
        {
            if (!((i == 0) && (sreg == SW2A || sreg == SW2B || sreg == SW1A)))
            {
                PmicSwitchModeRegulatorSetMode(sreg,(PMIC_REGULATOR_SREG_STBY)LOW,(PMIC_REGULATOR_SREG_MODE)i);
                PmicSwitchModeRegulatorGetMode(sreg,(PMIC_REGULATOR_SREG_STBY)LOW, &mode);

                g_pKato->Log(LOG_COMMENT, TEXT("Switch Mode Voltage Regulator %s is in:"), sreg_name);
                switch(mode)
                {
                case 0:
                    g_pKato->Log(LOG_COMMENT, TEXT("        SW_MODE_OFF \r\n"));
                    break ;
                case 1:
                    g_pKato->Log(LOG_COMMENT, TEXT("        SW_MODE_PWM \r\n"));
                    break;
                case 2:
                    g_pKato->Log(LOG_COMMENT, TEXT("        SW_MODE_PULSESKIP \r\n"));
                    break ;
                case 3:
                    g_pKato->Log(LOG_COMMENT, TEXT("        SW_MODE_PFM \r\n"));
                    break;
                default :
                    g_pKato->Log(LOG_COMMENT, TEXT("        Unknown Mode \r\n"));
                    break ;
                }
            }
        }

        PmicSwitchModeRegulatorSetMode(sreg,(PMIC_REGULATOR_SREG_STBY)LOW,(PMIC_REGULATOR_SREG_MODE )regulator_mode);
    }

    
    for(dvsspeed = 0; dvsspeed < 4; dvsspeed++)
    {
        PmicSwitchModeRegulatorSetDVSSpeed((PMIC_REGULATOR_SREG)SW1A,dvsspeed);
    }

    g_pKato->Log(LOG_COMMENT, TEXT("PASS \r\n"));
    GPT_TEST_FUNCTION_EXIT();
    return TPR_PASS;
}

//------------------------------------------------------------------------------
//
// Function: PMICTestPowerControl
//
// This function attempts to test PMIC PowerControl APIs
//
// Parameters:
//      uiMsg
//           [in] Ignored.
//
//      tpParam
//           [in] Ignored.
//
//      lpFTE
//           [in] Ignored.
//
// Returns:
//      Specifies if the test passed (TPR_PASS), failed (TPR_FAIL), or was
//      skipped (TPR_SKIP).
//
//------------------------------------------------------------------------------
TESTPROCAPI PMICTestPowerControl(UINT uMsg, TPPARAM tpParam, LPFUNCTION_TABLE_ENTRY lpFTE)
{
    UINT32 reg;  
    unsigned char index;
    bool power_cut,warm_start,user_off_en;
    struct t_power_cut_conf var_pc, var2_pc;
    UINT8 coincellvoltagelevel;

    struct t_p_up_sense *mod={0,};

    UNREFERENCED_PARAMETER(tpParam);
    UNREFERENCED_PARAMETER(lpFTE);

    // Validate that the shell wants the test to run
    if (uMsg != TPM_EXECUTE)
    {
        return TPR_NOT_HANDLED;
    }

    g_pKato->Log(LOG_COMMENT, TEXT("PMICTestPowerControl() +\r\n"));

    MC13783_power_get_power_mode_sense(mod);

    index = 0x0D;//MC13783_PWR_CTL0_ADDR
    PmicRegisterRead(index, &reg);
    g_pKato->Log(LOG_COMMENT, TEXT("Register MC13783_PWR_CTL0_ADDR is 0X%X\r\n"), (reg & 0xFFFFFF));
    
    if(0x01&reg){
        power_cut =1;
        g_pKato->Log(LOG_COMMENT, TEXT("Power Cut is Enabled\r\n"));
    }
    else
    {
        power_cut =0;
        g_pKato->Log(LOG_COMMENT, TEXT("Power Cut is Disabled and call the Power Cut enabled\r\n"));
#if 0   
        PmicPwrctrlEnablePowerCut();

        PmicRegisterRead(index, &reg);
        g_pKato->Log(LOG_COMMENT, TEXT("Register MC13783_PWR_CTL0_ADDR is 0X%X\r\n"), (reg & 0xFFFFFF));
    
        if(0x01&reg)
        g_pKato->Log(LOG_COMMENT, TEXT("Power Cut is Enabled\r\n"));
        else
        g_pKato->Log(LOG_COMMENT, TEXT("Power Cut is Disabled !!!!!!!!!!!\r\n"));
#endif
    }

    if(reg & 0x4){
        warm_start=1;
            g_pKato->Log(LOG_COMMENT, TEXT("Warm start enabled \r\n"));
    }
    else {
        warm_start=0;
            g_pKato->Log(LOG_COMMENT, TEXT("Warm start disabled\r\n"));
    }
    
    if(reg & 0x4){
        user_off_en=1;
        g_pKato->Log(LOG_COMMENT, TEXT("SPI command for entering User off modes is enabled \r\n"));
    }
    else {
        user_off_en=0;
        g_pKato->Log(LOG_COMMENT, TEXT("SPI command for entering User off modes is disabled\r\n"));
    }
        var_pc.pc_counter_en = false;
        var_pc.pc_auto_user_off = false;
#ifdef PLAT_FALCON
        var_pc.pc_user_off_32k_en = true;
#else
        var_pc.pc_user_off_32k_en = false;
#endif
        var_pc.pc_timer = 5;
        var_pc.pc_counter = 4;
        var_pc.pc_max_nb_pc = 2;
        var_pc.pc_ext_timer = 3;
        var_pc.pc_ext_timer_inf = false;
        MC13783_power_cut_conf(&var_pc);
        MC13783_power_cut_get_conf(&var2_pc);
//BP Detection
    index = 0x0D;//MC13783_PWR_CTL0_ADDR
    PmicRegisterRead(index, &reg);
    g_pKato->Log(LOG_COMMENT, TEXT("Register MC13783_PWR_CTL0_ADDR is 0X%X\r\n"), (reg & 0xFFFFFF));
    
    g_pKato->Log(LOG_COMMENT, TEXT("Set BP Detection to 2\r\n"));
    
    reg |= 0x20000;

    PmicRegisterWrite(index, reg,0Xffff);
    
    index = 0x0D;//MC13783_PWR_CTL0_ADDR
    PmicRegisterRead(index, &reg);
    if(reg & 0x20000)
    g_pKato->Log(LOG_COMMENT, TEXT("BP Detection threshould setting 0X%X\r\n"), (reg & 0xFFFFFF));
    
    g_pKato->Log(LOG_COMMENT, TEXT("Set BP Detection to 0\r\n"));
    
    reg &= ~0x20000;
    PmicRegisterWrite(index, reg,0Xffff);

    
    index = 0x0D;//MC13783_PWR_CTL0_ADDR
    PmicRegisterRead(index, &reg);

    if(reg & 0x20000)
        g_pKato->Log(LOG_COMMENT, TEXT("BP Detection threshould setting 0X%X\r\n"), (reg & 0xFFFFFF));
    else
        g_pKato->Log(LOG_COMMENT, TEXT("Set BP Detection to 0\r\n"));

⌨️ 快捷键说明

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