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

📄 pmic_batterytest.cpp

📁 Microsoft WinCE 6.0 BSP FINAL release source code for use with the i.MX27ADS TO2 WCE600_FINAL_MX27_S
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
// Copyright (C) 2004, 2006, 2007, Freescale Semiconductor, Inc. All Rights Reserved.
// THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
// AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT
//
//------------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//
//  File:  ATLAS_Battery.cpp
//
//  This file contains test code for the ATLAS Battery interface
//  Note: We dont test the Coincell charger in this test since this is already covered
//  in the power Control tests
//------------------------------------------------------------------------------

#pragma warning(push)
#pragma warning(disable: 4115)
#pragma warning(disable: 4201)
#pragma warning(disable: 4204)
#pragma warning(disable: 4214)
#include <windows.h>
#pragma warning(pop)
#include <Devload.h>
#include<Winbase.h>

#include <ceddk.h>
#include "main.h"
#include "globals.h"
#include "pmic_lla.h"
#include "pmic_regulator.h"

#include "csp.h"
#include "pmic_battery.h"
#include "test.h"


//-----------------------------------------------------------------------------
// External Functions


//-----------------------------------------------------------------------------
// External Variables

//-----------------------------------------------------------------------------
// Defines

#define MAX_CHAGER_INPUT_VOLTAGE_SETTINGS   8
#define MAX_CHARGER_INPUT_CURRENT_SETTINGS  16
#define MAX_BATTERY_TRICKLE_CURRENT_SETTINGS    8
#define MAX_BATTERY_FET_CONTROL_STRINGS     4
#define MAX_BATTERY_O_VOLTAGE_SETTINGS      4

//-----------------------------------------------------------------------------
// Types

typedef enum Charger_Voltage_Values
{
    Charger_Input_voltage_4_05_v=0, /* 4.05V*/
    Charger_Input_voltage_4_0_v,    /*4.0V*/
    Charger_Input_voltage_4_15_v,   /*4.15V*/
    Charger_Input_voltage_4_2_v,    /*4.2V*/
    Charger_Input_voltage_4_25_v,   /*4.25V*/
    Charger_Input_voltage_4_3_v,    /*4.3V*/
    Charger_Input_voltage_3_8_v,    /*3.8V*/
    Charger_Input_voltage_4_5_v     /*4.5V*/
}MC13783_Battery_Charger_Input_Voltage;


typedef enum Charger_Current_Values
{
    Charger_Input_Current_0_mA=0,   /* 0 mA*/
    Charger_Input_Current_100_mA,   /* 100 mA*/
    Charger_Input_Current_200_mA,   /* 200 mA*/
    Charger_Input_Current_300_mA,   /* 300 mA*/
    Charger_Input_Current_400_mA,   /* 400 mA*/
    Charger_Input_Current_500_mA,   /* 500 mA*/
    Charger_Input_Current_600_mA,   /* 600 mA*/
    Charger_Input_Current_700_mA,   /* 700 mA*/
    Charger_Input_Current_800_mA,   /* 800 mA*/
    Charger_Input_Current_900_mA,   /* 900 mA*/
    Charger_Input_Current_1000_mA,  /* 1000 mA*/
    Charger_Input_Current_1100_mA,  /* 1100 mA*/
    Charger_Input_Current_1200_mA,  /* 1200 mA*/
    Charger_Input_Current_1300_mA,  /* 1300 mA*/
    Charger_Input_Current_1800_mA,  /* 1800 mA*/
    Charger_Input_Current_Disable   /* 0 mA*/
}MC13783_Battery_Charger_Input_Current;


typedef enum Battery_Trickle_Current_Values
{
    Battery_Trickle_Current_0=0,    /*0 mA*/
    Battery_Trickle_Current_12,     /*12 mA*/
    Battery_Trickle_Current_24,     /*24 mA*/
    Battery_Trickle_Current_36,     /*36 mA*/
    Battery_Trickle_Current_48,     /*48 mA*/
    Battery_Trickle_Current_60,     /*60 mA*/
    Battery_Trickle_Current_72,     /*72 mA*/
    Battery_Trickle_Current_84      /*84 mA*/
}MC13783_Battery_Trickle_Current;


typedef enum Battery_FET_Control
{
    BATTFET_BPFET_CTRL_HARDWARE0=0,
    BATTFET_BPFET_CTRL_HARDWARE1,
    BATTFET_BPFET_CTRL_FETCTRL0,
    BATTFET_BPFET_CTRL_FETCTRL1
}MC13783_Battery_FET_Control;


typedef enum Battery_Overvoltage_Threshold
{
    Battery_O_Voltage_5_3_v=0,      /*5.3 Volts*/
    Battery_O_Voltage_6_9_v,        /*6.9 Volts*/
    Battery_O_Voltage_9_8_v,        /*9.8 Volts*/
    Battery_O_Voltage_19_6_v        /*19.6 Volts*/
}MC13783_Battery_O_Voltage_Threshold;
//-----------------------------------------------------------------------------
// Global Variables

static const TCHAR* Charger_Input_Voltage_String
                    [MAX_CHAGER_INPUT_VOLTAGE_SETTINGS] =
{
    TEXT("Charger_Input_voltage_4_05_v"),
    TEXT("Charger_Input_voltage_4_0_v"),
    TEXT("Charger_Input_voltage_4_15_v"),
    TEXT("Charger_Input_voltage_4_2_v"),
    TEXT("Charger_Input_voltage_4_25_v"),
    TEXT("Charger_Input_voltage_4_3_v"),
    TEXT("Charger_Input_voltage_3_8_v"),
    TEXT("Charger_Input_voltage_4_5_v")
};


static const TCHAR* Charger_Input_Current_String
                    [MAX_CHARGER_INPUT_CURRENT_SETTINGS] =
{
    TEXT("Charger_Input_Current_0_mA"),
    TEXT("Charger_Input_Current_100_mA"),
    TEXT("Charger_Input_Current_200_mA"),
    TEXT("Charger_Input_Current_300_mA"),
    TEXT("Charger_Input_Current_400_mA"),
    TEXT("Charger_Input_Current_500_mA"),
    TEXT("Charger_Input_Current_600_mA"),
    TEXT("Charger_Input_Current_700_mA"),
    TEXT("Charger_Input_Current_800_mA"),
    TEXT("Charger_Input_Current_900_mA"),
    TEXT("Charger_Input_Current_1000_mA"),
    TEXT("Charger_Input_Current_1100_mA"),
    TEXT("Charger_Input_Current_1200_mA"),
    TEXT("Charger_Input_Current_1300_mA"),
    TEXT("Charger_Input_Current_1800_mA"),
    TEXT("Charger_Input_Current_Disable")
};


static const TCHAR* Battery_Trickle_Current_String
                    [MAX_BATTERY_TRICKLE_CURRENT_SETTINGS] =
{
    TEXT("Battery_Trickle_Current_0_mA"),
    TEXT("Battery_Trickle_Current_12_mA"),
    TEXT("Battery_Trickle_Current_24_mA"),
    TEXT("Battery_Trickle_Current_36_mA"),
    TEXT("Battery_Trickle_Current_48_mA"),
    TEXT("Battery_Trickle_Current_60_mA"),
    TEXT("Battery_Trickle_Current_72_mA"),
    TEXT("Battery_Trickle_Current_84_mA")
};


static const TCHAR* Battery_FET_Control_String
                         [MAX_BATTERY_FET_CONTROL_STRINGS] =
{
    TEXT("BATTFET and BPFET outputs are controlled by hardware"),
    TEXT("BATTFET and BPFET outputs are controlled by hardware"),
    TEXT("BATTFET low and BATTFET high, controlled by FETCTRL"),
    TEXT("BATTFET high and BATTFET low, controlled by FETCTRL")
};


static const TCHAR* Battery_O_Voltage_Threshold
                          [MAX_BATTERY_O_VOLTAGE_SETTINGS] =
{
    TEXT("Battery_Over_Voltage_Threshold = 5.3 v"),
    TEXT("Battery_Over_Voltage_Threshold = 6.9 v"),
    TEXT("Battery_Over_Voltage_Threshold = 9.8 v"),
    TEXT("Battery_Over_Voltage_Threshold = 19.6 v")
};



//-----------------------------------------------------------------------------
// Local Variables

//-----------------------------------------------------------------------------
// Local Functions



//------------------------------------------------------------------------------
//
// Function: PMICTestBattery
//
// This function tests the Battery Interface and control on MC13783
//
// Parameters:
//      uiMsg
//           [in] Ignored.
//
//      tpParam
//           [in] Ignored.
//
//      lpFTE
//           [in] Ignored.
// Returns:
//      Specifies if the test passed (TPR_PASS), failed (TPR_FAIL)
//------------------------------------------------------------------------------

TESTPROCAPI PMICTestBattery(UINT uMsg, TPPARAM tpParam, LPFUNCTION_TABLE_ENTRY lpFTE)
{
    UINT32 ChargerVoltageVal = 0; /*Counter*/
    UINT32 ChargerCurrentVal = 0;
    UINT32 BatteryTrickleCurrent = 0;
    UINT32 BatteryFetControlVal = 0;
    UINT32 BatteryOverVoltageVal = 0;
    UINT8 ChargerVoltageReturnVal = 0;
    UINT8 ChargerCurrentReturnVal = 0;
    UINT8 BatteryTrickleCurrentReturnVal = 0;
    UINT8 BatteryOverVoltageReturnVal = 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("ATLAS_Battery.cpp:() PMICTestBattery+\r\n"));

        /**
        *Test the charger voltage settings
        **/

        g_pKato->Log(LOG_COMMENT, TEXT("\n ATLAS_Battery.cpp:() -START OF CHARGER VOLTAGE\
        SETTINGS VERIFICATION+ \r\n\n"));


        for(ChargerVoltageVal = 0; ChargerVoltageVal <= Charger_Input_voltage_4_5_v; ChargerVoltageVal++)
        {

            /*Set the charger voltage*/
            if(PMIC_SUCCESS != PmicBatterySetChargeVoltage((UINT8)(ChargerVoltageVal)))
             {
                g_pKato->Log(LOG_COMMENT, TEXT("ATLAS_Battery.cpp:()\
                        Failed to set %s \r\n"),(Charger_Input_Voltage_String[ChargerVoltageVal]));
                return TPR_FAIL;
             }

                g_pKato->Log(LOG_COMMENT, TEXT("ATLAS_Battery.cpp:()\
                                        %s +\r\n"),(Charger_Input_Voltage_String[ChargerVoltageVal]));

            /*Read back the same*/
            if(PMIC_SUCCESS == PmicBatteryGetChargeVoltage(&ChargerVoltageReturnVal))
            {
                if(ChargerVoltageReturnVal != ChargerVoltageVal)
                {
                    g_pKato->Log(LOG_COMMENT, TEXT("ATLAS_Battery.cpp:()\
                            Failed to get %s +\r\n"),(Charger_Input_Voltage_String[ChargerVoltageVal]));
                    return TPR_FAIL;
                }
            }

                g_pKato->Log(LOG_COMMENT, TEXT("ATLAS_Battery.cpp:()\
                                    %s verifed +\r\n"),(Charger_Input_Voltage_String[ChargerVoltageVal]));

            /*Reset this value*/
            ChargerVoltageReturnVal = 0;

        }   /*end of for*/

        g_pKato->Log(LOG_COMMENT, TEXT("\n ATLAS_Battery.cpp:() -END OF CHARGER VOLTAGE\
        SETTINGS VERIFICATION+ \r\n\n"));

        /**
         * Charger voltage settings verifed
         **/


        /**

⌨️ 快捷键说明

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