/**
******************************************************************************
* File Name : ADC.h
* Description : This file provides code for the configuration
* of the ADC instances.
******************************************************************************
* @attention
*
*
© Copyright (c) 2022 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 384
#define ADC3_CHANEL_COUNT 10
#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) ;
#ifdef MODIFY_CAL_MALLOC
void CalMalloc(float** pBuf, u16 Len, u16* pLastLen);
#endif
//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);
#ifdef FUNC_AX48_NACS_TEMP_SENSOR_COMPENSATION_AND_MODIFY_FORMULA_20240522
extern int16_t getTemperature_NACS(uint16_t adc_raw);
#endif
#else //FUNC_TEMP_SENSOR_WITH_NEG_VALUE
extern uint16_t getTemperature(uint16_t adc_raw);
#endif //FUNC_TEMP_SENSOR_WITH_NEG_VALUE
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;
#ifdef FUNC_AX80_ADD_4_TEMP_SENEOR
#ifdef FUNC_AW48_ADD_6_TEMP_SENEOR
#ifdef FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
#ifdef FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
struct ADC_VALUE{
union
{
MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
MOVE_AVG_FILTER ADC3_IN9_Relay1_Temp;
MOVE_AVG_FILTER ADC3_IN9_AW48_T1; //T1
MOVE_AVG_FILTER ADC3_IN9_AX48_NACS_T1; //T1
MOVE_AVG_FILTER ADC3_IN9_AX80_NACS_T1; //T1
};
MOVE_AVG_FILTER ADC3_IN14_UL_1998;
MOVE_AVG_FILTER ADC3_IN15_Temp;
MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
union
{
MOVE_AVG_FILTER ADC3_IN7_Current_L1;
MOVE_AVG_FILTER ADC3_IN7_Input_N_L2_Temp;
MOVE_AVG_FILTER ADC3_IN7_AW48_T4; //T4
MOVE_AVG_FILTER ADC3_IN7_AX48_NACS_T4; //T4
MOVE_AVG_FILTER ADC3_IN7_AX80_NACS_T4; //T4
};
union
{
MOVE_AVG_FILTER ADC3_IN5_Current_L2;
MOVE_AVG_FILTER ADC3_IN5_AW48_T5; //T5
MOVE_AVG_FILTER ADC3_IN5_AX48_NACS_T5; //T5
MOVE_AVG_FILTER ADC3_IN5_AX80_NACS_T5; //T5
};
MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
union
{
MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
MOVE_AVG_FILTER ADC3_IN8_Relay2_Temp;
MOVE_AVG_FILTER ADC3_IN8_AW48_T2; //T2
MOVE_AVG_FILTER ADC3_IN8_AX48_NACS_T2; //T2
MOVE_AVG_FILTER ADC3_IN8_AX80_NACS_T2; //T2
};
union
{
MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
MOVE_AVG_FILTER ADC3_IN10_Input_L1_Temp;
MOVE_AVG_FILTER ADC3_IN10_AW48_T3; //T3
MOVE_AVG_FILTER ADC3_IN10_AX48_NACS_T3; //T3
MOVE_AVG_FILTER ADC3_IN10_AX80_NACS_T3; //T3
};
union
{
MOVE_AVG_FILTER ADC3_IN11_Current_L3;
MOVE_AVG_FILTER ADC3_IN11_AW48_T6; //T6
MOVE_AVG_FILTER ADC3_IN11_AX48_NACS_T6; //T6
MOVE_AVG_FILTER ADC3_IN11_AX80_NACS_T6; //T6
};
MOVE_AVG_FILTER ADC1_IN4_CP;
MOVE_AVG_FILTER ADC2_IN5_Welding;
MOVE_AVG_FILTER ADC2_IN6_GF;
};
#else //FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
struct ADC_VALUE{
union
{
MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
MOVE_AVG_FILTER ADC3_IN9_Relay1_Temp;
MOVE_AVG_FILTER ADC3_IN9_AW48_T1; //T1
MOVE_AVG_FILTER ADC3_IN9_AX48_NACS_T1; //T1
};
MOVE_AVG_FILTER ADC3_IN14_UL_1998;
MOVE_AVG_FILTER ADC3_IN15_Temp;
MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
union
{
MOVE_AVG_FILTER ADC3_IN7_Current_L1;
MOVE_AVG_FILTER ADC3_IN7_Input_N_L2_Temp;
MOVE_AVG_FILTER ADC3_IN7_AW48_T4; //T4
MOVE_AVG_FILTER ADC3_IN7_AX48_NACS_T4; //T4
};
union
{
MOVE_AVG_FILTER ADC3_IN5_Current_L2;
MOVE_AVG_FILTER ADC3_IN5_AW48_T5; //T5
MOVE_AVG_FILTER ADC3_IN5_AX48_NACS_T5; //T5
};
MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
union
{
MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
MOVE_AVG_FILTER ADC3_IN8_Relay2_Temp;
MOVE_AVG_FILTER ADC3_IN8_AW48_T2; //T2
MOVE_AVG_FILTER ADC3_IN8_AX48_NACS_T2; //T2
};
union
{
MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
MOVE_AVG_FILTER ADC3_IN10_Input_L1_Temp;
MOVE_AVG_FILTER ADC3_IN10_AW48_T3; //T3
MOVE_AVG_FILTER ADC3_IN10_AX48_NACS_T3; //T3
};
union
{
MOVE_AVG_FILTER ADC3_IN11_Current_L3;
MOVE_AVG_FILTER ADC3_IN11_AW48_T6; //T6
MOVE_AVG_FILTER ADC3_IN11_AX48_NACS_T6; //T6
};
MOVE_AVG_FILTER ADC1_IN4_CP;
MOVE_AVG_FILTER ADC2_IN5_Welding;
MOVE_AVG_FILTER ADC2_IN6_GF;
};
#endif //FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
#else //FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
struct ADC_VALUE{
union
{
MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
MOVE_AVG_FILTER ADC3_IN9_Relay1_Temp;
MOVE_AVG_FILTER ADC3_IN9_AW48_T1; //T1
};
MOVE_AVG_FILTER ADC3_IN14_UL_1998;
MOVE_AVG_FILTER ADC3_IN15_Temp;
MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
union
{
MOVE_AVG_FILTER ADC3_IN7_Current_L1;
MOVE_AVG_FILTER ADC3_IN7_Input_N_L2_Temp;
MOVE_AVG_FILTER ADC3_IN7_AW48_T4; //T4
};
union
{
MOVE_AVG_FILTER ADC3_IN5_Current_L2;
MOVE_AVG_FILTER ADC3_IN5_AW48_T5; //T5
};
MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
union
{
MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
MOVE_AVG_FILTER ADC3_IN8_Relay2_Temp;
MOVE_AVG_FILTER ADC3_IN8_AW48_T2; //T2
};
union
{
MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
MOVE_AVG_FILTER ADC3_IN10_Input_L1_Temp;
MOVE_AVG_FILTER ADC3_IN10_AW48_T3; //T3
};
union
{
MOVE_AVG_FILTER ADC3_IN11_Current_L3;
MOVE_AVG_FILTER ADC3_IN11_AW48_T6; //T6
};
MOVE_AVG_FILTER ADC1_IN4_CP;
MOVE_AVG_FILTER ADC2_IN5_Welding;
MOVE_AVG_FILTER ADC2_IN6_GF;
};
#endif //FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
#else //FUNC_AW48_ADD_6_TEMP_SENEOR
struct ADC_VALUE{
union
{
MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
MOVE_AVG_FILTER ADC3_IN9_Relay1_Temp;
};
MOVE_AVG_FILTER ADC3_IN14_UL_1998;
MOVE_AVG_FILTER ADC3_IN15_Temp;
MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
union
{
MOVE_AVG_FILTER ADC3_IN7_Current_L1;
MOVE_AVG_FILTER ADC3_IN7_Input_N_L2_Temp;
};
MOVE_AVG_FILTER ADC3_IN5_Current_L2;
MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
union
{
MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
MOVE_AVG_FILTER ADC3_IN8_Relay2_Temp;
};
union
{
MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
MOVE_AVG_FILTER ADC3_IN10_Input_L1_Temp;
};
MOVE_AVG_FILTER ADC3_IN11_Current_L3;
MOVE_AVG_FILTER ADC1_IN4_CP;
MOVE_AVG_FILTER ADC2_IN5_Welding;
MOVE_AVG_FILTER ADC2_IN6_GF;
};
#endif //FUNC_AW48_ADD_6_TEMP_SENEOR
#else //FUNC_AX80_ADD_4_TEMP_SENEOR
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_IN7_Current_L1;
MOVE_AVG_FILTER ADC3_IN5_Current_L2;
MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
MOVE_AVG_FILTER ADC3_IN11_Current_L3;
MOVE_AVG_FILTER ADC1_IN4_CP;
MOVE_AVG_FILTER ADC2_IN5_Welding;
MOVE_AVG_FILTER ADC2_IN6_GF;
};
#endif //FUNC_AX80_ADD_4_TEMP_SENEOR
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****/