view src/cs/drivers/drv_app/pwr/pwr_cust.h @ 192:4f40ae165be4

abb.c & init.c: sync with Magnetite for Luna additions These Luna target-specific additions are conditionalized on CONFIG_TARGET_LUNA, a C preprocessor symbol that will never be defined in Selenite, hence this change has exactly zero impact on FC Selenite. However, they are being pulled in as a sync in order to keep the diff between Magnetite and Selenite to a minimum; keeping this diff to a minimum increases our opportunities for possible evolution of future FC firmwares.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 23 May 2020 07:03:46 +0000
parents b6a5e36de839
children
line wrap: on
line source

/*******************************************************************************
 *
 * pwr_cust.h
 *
 * Purpose: This file contains definitions for battery management.
 *          These definitions can be modified by the customer.
 *
 * Author   Candice Bazanegue (c-brille@ti.com)
 *
 *
 * (C) Texas Instruments 2001
 *
 ******************************************************************************/

#ifndef __PWR_CUST_H__
#define __PWR_CUST_H__

#include "pwr/pwr_api.h"


/* Constants relative to the battery type */

#define BAT_TYPE_LI_ION_MIN      0x400
#define BAT_TYPE_LI_ION_MAX      0x450


/* Constants relative to the charging process */

#define CONSTANT_VOLTAGE_VALUE   4200     // (mV)  /* for CV charge */
#define CONSTANT_CURRENT_VALUE   500      // (mA)  /* for CI charge */
#define END_OF_CHARGE_I          150      // (mA)  /* for CV charge */
#define END_OF_CHARGE_V          4200     // (mV)  /* for CI charge */

#define CHARGE_START_AGAIN_CAPACITY 75 /* capacity threshold under which */
                                       /* the charge is started again if */
                                       /* the charger has been left plugged. */
                                       /* the chosen value must be part of the */
                                       /* a_pwr_thresholds array. */


/* Constants relative to the battery temperature */

#define BAT_TEMPERATURE_MAX_LI_ION  (50) /* Celsius degrees */
#define BAT_TEMPERATURE_MIN_LI_ION  (0)  /* Celsius degrees */

#define BAT_TEMPERATURE_MAX         BAT_TEMPERATURE_MAX_LI_ION 
#define BAT_TEMPERATURE_MIN         BAT_TEMPERATURE_MIN_LI_ION


#define THEN_10uA 0x0041 /* THSENS0 , THSENS1, THSENS2 = 0, 0, 0  MESBAT = 1 */
#define THEN_30uA 0x0051 /* THSENS0 , THSENS1, THSENS2 = 0, 1, 0  MESBAT = 1 */
#define THEN_50uA 0x0061 /* THSENS0 , THSENS1, THSENS2 = 0, 0, 1  MESBAT = 1 */
#define THEN_80uA 0x0079 /* THSENS0 , THSENS1, THSENS2 = 1, 1, 1  MESBAT = 1 */
#define MESBAT    0x0001 /* Resistive divider connected to main battery */


/* Constants relative to the timers duration */
#define PWR_BAT_TEST_TIME_1            (10)   /* 10 ms */
#define PWR_BAT_TEST_TIME_2            (5000) /* 5s */
#define PWR_CALIBRATION_TIME_1         (10)   /* 10 ms */
#define PWR_CALIBRATION_TIME_2         (5000) /* 5s */
#define PWR_CI_CHECKING_TIME           (4000) /* 4s */
#define PWR_CV_CHECKING_TIME           (4000) /* 4s */
#define PWR_DISCHARGE_CHECKING_TIME_1  (60000) /* 1 minute */
#define PWR_DISCHARGE_CHECKING_TIME_2  (10000) /* 10s */


typedef struct { 
   UINT16 bat_voltage;
   T_PWR_PERCENT remain_capa;
}T_PWR_THRESHOLDS; 


typedef enum {
   LI_ION,
   UNKNOWN
} T_PWR_BATTERY_TYPE;


#define NB_THRESHOLDS   (6)      /* number of elements in the a_pwr_thresholds array */	
extern const T_PWR_THRESHOLDS a_pwr_thresholds[NB_THRESHOLDS];





/* Prototypes */

UINT16 pwr_adc_to_mvolt(UINT16 bat_voltage_madc);
UINT16 pwr_adc_to_mA(UINT16 current_madc);
UINT8 pwr_bat_temp_within_limits(INT16 battery_temperature);
UINT8 pwr_madc_to_Celsius_conv(UINT8 bias_current, UINT16 madc_temp, INT16 *celsius_temp);
void pwr_get_battery_type(void);
void pwr_get_battery_temperature(void);
T_PWR_PERCENT pwr_get_capacity_vs_voltage(UINT16 bat_voltage);
void pwr_bat_50uA_temp_test_timer_process(void);
void pwr_bat_10uA_temp_test_timer_process(void);
void pwr_type_test_timer_process(void);

#endif /* __PWR_CUST_H__ */