/** ****************************************************************************** * 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****/