/**
******************************************************************************
* File Name : ADC.h
* Description : This file provides code for the configuration
* of the ADC instances.
******************************************************************************
* @attention
*
*
© Copyright (c) 2020 STMicroelectronics.
* All rights reserved.
*
* This software component is licensed by ST under Ultimate Liberty license
* SLA0044, the "License"; You may not use this file except in compliance with
* the License. You may obtain a copy of the License at:
* www.st.com/SLA0044
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __adc_H
#define __adc_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "main.h"
/* USER CODE BEGIN Includes */
#include
/* USER CODE END Includes */
extern ADC_HandleTypeDef hadc1;
extern ADC_HandleTypeDef hadc2;
extern ADC_HandleTypeDef hadc3;
/* USER CODE BEGIN Private defines */
#define ADC1_CHANEL_COUNT 1
#define ADC1_SAMPLE_COUNT 1000
#define ADC2_CHANEL_COUNT 2
#define ADC2_SAMPLE_COUNT 256
#define ADC3_CHANEL_COUNT 5
#define ADC3_SAMPLE_COUNT 180
#define LIMIT_MOVE_FILTER 8
#define CURRENT_LIMIT_MOVE_FILTER 4
#define VOLTAGE_LIMIT_MOVE_FILTER 8
typedef struct{
uint16_t idx_put;
uint32_t buffer[LIMIT_MOVE_FILTER];
uint32_t value;
}MOVE_AVG_FILTER;
/* USER CODE END Private defines */
void MX_ADC1_Init(void);
void MX_ADC2_Init(void);
void MX_ADC3_Init(void);
/* USER CODE BEGIN Prototypes */
extern uint8_t filter_move_avg(MOVE_AVG_FILTER *data, uint32_t value);
extern uint8_t Current_filter_move_avg(MOVE_AVG_FILTER *data, uint32_t value) ;
extern uint8_t Voltage_filter_move_avg(MOVE_AVG_FILTER *data, uint32_t value) ;
//extern uint16_t vRms_cal(uint16_t *data, uint16_t length);
extern uint16_t cRms_cal(uint16_t *data, uint16_t length);
extern uint16_t GFRms_cal(uint16_t *data, uint16_t length);
extern uint16_t avg_cal(uint16_t *data, uint16_t length);
#ifdef FUNC_TEMP_SENSOR_WITH_NEG_VALUE
extern int16_t getTemperature(uint16_t adc_raw);
#else
extern uint16_t getTemperature(uint16_t adc_raw);
#endif
extern uint16_t vRms_cal2(uint16_t *data, uint16_t length) ;
//extern uint16_t cRms_cal2(uint16_t *data, uint16_t length) ;
extern uint16_t RlyVmax_cal(uint16_t *data, uint16_t length) ;
extern uint16_t avg_v_cal(uint16_t *data, uint16_t length) ;
extern uint32_t ADC1_Buffer[ADC1_CHANEL_COUNT*ADC1_SAMPLE_COUNT];
extern uint32_t ADC2_Buffer[ADC2_CHANEL_COUNT*ADC2_SAMPLE_COUNT];
extern uint16_t ADC2_Buffer_Each[ADC2_CHANEL_COUNT][ADC2_SAMPLE_COUNT];
extern uint32_t ADC3_Buffer[ADC3_CHANEL_COUNT*ADC3_SAMPLE_COUNT];
extern uint16_t ADC3_Buffer_Each[ADC3_CHANEL_COUNT][ADC3_SAMPLE_COUNT];
extern uint8_t isDMAEnd_ADC1;
extern uint8_t isDMAEnd_ADC2;
extern uint8_t isDMAEnd_ADC3;
struct ADC_VALUE{
MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
MOVE_AVG_FILTER ADC3_IN14_UL_1998;
MOVE_AVG_FILTER ADC3_IN15_Temp;
MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
MOVE_AVG_FILTER ADC3_IN5_Current_L2;
MOVE_AVG_FILTER ADC3_IN6_Current_L3;
MOVE_AVG_FILTER ADC3_IN7_Current_L1;
MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
MOVE_AVG_FILTER ADC1_IN4_CP;
MOVE_AVG_FILTER ADC2_IN5_Welding;
MOVE_AVG_FILTER ADC2_IN6_GF;
};
extern struct ADC_VALUE adc_value;
extern uint16_t ADCWDGHighThreshold;
extern uint16_t ADCWDGLowThreshold;
extern uint8_t is60Hz;
/* USER CODE END Prototypes */
#ifdef __cplusplus
}
#endif
#endif /*__ adc_H */
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/