246 lines
6 KiB
C
246 lines
6 KiB
C
/**
|
|
******************************************************************************
|
|
* @file pwrmon.h
|
|
* @author MCD Application Team
|
|
* @brief This header file contains the functions prototypes for the
|
|
* Current/Power Monitor device driver.
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© Copyright (c) 2017 STMicroelectronics.
|
|
* All rights reserved.</center></h2>
|
|
*
|
|
* This software component is licensed by ST under BSD 3-Clause license,
|
|
* the "License"; You may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at:
|
|
* opensource.org/licenses/BSD-3-Clause
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef __PWRMON_H
|
|
#define __PWRMON_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include <stdint.h>
|
|
|
|
/** @addtogroup BSP
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup Components
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup PWRMON
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Exported_Types
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Operating_Mode_enum Power Monitor Operating Mode enums
|
|
* @{
|
|
*/
|
|
typedef enum {
|
|
OPERATING_MODE_TRIGGERED = 0,
|
|
OPERATING_MODE_CONTINUOUS,
|
|
OPERATING_MODE_NB
|
|
} PWRMON_OperatingMode_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Conversion_Time_enum Power Monitor Conversion_Time enums
|
|
* @{
|
|
*/
|
|
typedef enum {
|
|
CONVERT_TIME_140 = 0,
|
|
CONVERT_TIME_204,
|
|
CONVERT_TIME_332,
|
|
CONVERT_TIME_588,
|
|
CONVERT_TIME_1100,
|
|
CONVERT_TIME_2116,
|
|
CONVERT_TIME_4156,
|
|
CONVERT_TIME_8244,
|
|
CONVERT_TIME_NB
|
|
} PWRMON_ConvertTime_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Conversion_Time_enum Power Monitor Conversion_Time enums
|
|
* @{
|
|
*/
|
|
typedef enum {
|
|
AVERAGING_MODE_1 = 0,
|
|
AVERAGING_MODE_4,
|
|
AVERAGING_MODE_16,
|
|
AVERAGING_MODE_64,
|
|
AVERAGING_MODE_128,
|
|
AVERAGING_MODE_256,
|
|
AVERAGING_MODE_512,
|
|
AVERAGING_MODE_1024,
|
|
AVERAGING_MODE_NB
|
|
} PWRMON_AveragingMode_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Device_Configuration_structure Power Monitor Device Configuration structure
|
|
* @{
|
|
*/
|
|
typedef struct
|
|
{
|
|
PWRMON_ConvertTime_t ShuntConvertTime;
|
|
PWRMON_ConvertTime_t BusConvertTime;
|
|
PWRMON_AveragingMode_t AveragingMode;
|
|
} PWRMON_Config_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Alert_Polarity_enum Power Monitor Alert Polarity enums
|
|
* @{
|
|
*/
|
|
typedef enum {
|
|
ALERT_POLARITY_NORMAL = 0,
|
|
ALERT_POLARITY_INVERTED,
|
|
ALERT_POLARITY_NB
|
|
} PWRMON_AlertPolarity_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Alert_Latch_Enable_enum Power Monitor Alert Latch Enable enums
|
|
* @{
|
|
*/
|
|
typedef enum {
|
|
ALERT_LATCH_DISABLE = 0,
|
|
ALERT_LATCH_ENABLE,
|
|
ALERT_LATCH_NB
|
|
} PWRMON_AlertLatchEnable_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Alert_Function_enum Power Monitor Alert Function enums
|
|
* @{
|
|
*/
|
|
typedef enum {
|
|
ALERT_FUNCTION_NONE = 0,
|
|
ALERT_FUNCTION_SOL,
|
|
ALERT_FUNCTION_SUL,
|
|
ALERT_FUNCTION_BOL,
|
|
ALERT_FUNCTION_BUL,
|
|
ALERT_FUNCTION_POL,
|
|
ALERT_FUNCTION_NB,
|
|
} PWRMON_AlertFunction_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Alert_Configuration_structure Power Monitor Alert Configuration structure
|
|
* @{
|
|
*/
|
|
typedef struct
|
|
{
|
|
PWRMON_AlertPolarity_t Polarity;
|
|
PWRMON_AlertLatchEnable_t LatchEnable;
|
|
} PWRMON_AlertPinConfig_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Voltage_Input_enum Power Monitor Voltage Input enums
|
|
* @{
|
|
*/
|
|
typedef enum {
|
|
VOLTAGE_INPUT_SHUNT = 0,
|
|
VOLTAGE_INPUT_BUS,
|
|
VOLTAGE_INPUT_ALL,
|
|
VOLTAGE_INPUT_NB
|
|
} PWRMON_InputSignal_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Flag_enum Power Monitor Flag enums
|
|
* @{
|
|
*/
|
|
typedef enum {
|
|
FLAG_ALERT_FUNCTION = 0,
|
|
FLAG_CONVERSION_READY,
|
|
FLAG_MATH_OVERFLOW,
|
|
FLAG_NB
|
|
} PWRMON_Flag_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWRMON_Driver_structure Power Monitor Driver structure
|
|
* @{
|
|
*/
|
|
typedef struct
|
|
{
|
|
void (*Init)(uint16_t, PWRMON_Config_t *);
|
|
void (*DeInit)(uint16_t);
|
|
uint16_t (*ReadId)(uint16_t);
|
|
void (*Reset)(uint16_t);
|
|
void (*SetCalibration)(uint16_t, uint16_t);
|
|
uint16_t (*GetCalibration)(uint16_t);
|
|
void (*SetAlertFunction)(uint16_t, PWRMON_AlertFunction_t);
|
|
PWRMON_AlertFunction_t (*GetAlertFunction)(uint16_t);
|
|
void (*AlertPinConfig)(uint16_t, PWRMON_AlertPinConfig_t *);
|
|
void (*SetVBusThreshold)(uint16_t, uint16_t);
|
|
uint16_t (*GetVBusThreshold)(uint16_t);
|
|
void (*SetVShuntThreshold)(uint16_t, int16_t);
|
|
int16_t (*GetVShuntThreshold)(uint16_t);
|
|
void (*SetPowerThreshold)(uint16_t, uint32_t);
|
|
uint32_t (*GetPowerThreshold)(uint16_t);
|
|
void (*AlertThresholdEnableIT)(uint16_t);
|
|
void (*AlertThresholdDisableIT)(uint16_t);
|
|
void (*ConversionReadyEnableIT)(uint16_t);
|
|
void (*ConversionReadyDisableIT)(uint16_t);
|
|
void (*StartConversion)(uint16_t, PWRMON_InputSignal_t, PWRMON_OperatingMode_t);
|
|
void (*StopConversion)(uint16_t);
|
|
uint16_t (*GetVBus)(uint16_t);
|
|
int16_t (*GetVShunt)(uint16_t);
|
|
uint16_t (*GetPower)(uint16_t);
|
|
int16_t (*GetCurrent)(uint16_t);
|
|
uint8_t (*GetFlag)(uint16_t, PWRMON_Flag_t);
|
|
} PWRMON_Drv_t;
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __PWRMON_H */
|
|
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|