adc.h 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. /**
  2. ******************************************************************************
  3. * File Name : ADC.h
  4. * Description : This file provides code for the configuration
  5. * of the ADC instances.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2022 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under Ultimate Liberty license
  13. * SLA0044, the "License"; You may not use this file except in compliance with
  14. * the License. You may obtain a copy of the License at:
  15. * www.st.com/SLA0044
  16. *
  17. ******************************************************************************
  18. */
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef __adc_H
  21. #define __adc_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "main.h"
  27. /* USER CODE BEGIN Includes */
  28. #include <math.h>
  29. /* USER CODE END Includes */
  30. extern ADC_HandleTypeDef hadc1;
  31. extern ADC_HandleTypeDef hadc2;
  32. extern ADC_HandleTypeDef hadc3;
  33. /* USER CODE BEGIN Private defines */
  34. #define ADC1_CHANEL_COUNT 1
  35. #define ADC1_SAMPLE_COUNT 1000
  36. #define ADC2_CHANEL_COUNT 2
  37. #define ADC2_SAMPLE_COUNT 384
  38. #define ADC3_CHANEL_COUNT 10
  39. #define ADC3_SAMPLE_COUNT 180
  40. #define LIMIT_MOVE_FILTER 8
  41. #define CURRENT_LIMIT_MOVE_FILTER 4
  42. #define VOLTAGE_LIMIT_MOVE_FILTER 8
  43. typedef struct{
  44. uint16_t idx_put;
  45. uint32_t buffer[LIMIT_MOVE_FILTER];
  46. uint32_t value;
  47. }MOVE_AVG_FILTER;
  48. /* USER CODE END Private defines */
  49. void MX_ADC1_Init(void);
  50. void MX_ADC2_Init(void);
  51. void MX_ADC3_Init(void);
  52. /* USER CODE BEGIN Prototypes */
  53. extern uint8_t filter_move_avg(MOVE_AVG_FILTER *data, uint32_t value);
  54. extern uint8_t Current_filter_move_avg(MOVE_AVG_FILTER *data, uint32_t value) ;
  55. extern uint8_t Voltage_filter_move_avg(MOVE_AVG_FILTER *data, uint32_t value) ;
  56. #ifdef MODIFY_CAL_MALLOC
  57. void CalMalloc(float** pBuf, u16 Len, u16* pLastLen);
  58. #endif
  59. //extern uint16_t vRms_cal(uint16_t *data, uint16_t length);
  60. extern uint16_t cRms_cal(uint16_t *data, uint16_t length);
  61. extern uint16_t GFRms_cal(uint16_t *data, uint16_t length);
  62. extern uint16_t avg_cal(uint16_t *data, uint16_t length);
  63. #ifdef FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  64. extern int16_t getTemperature(uint16_t adc_raw);
  65. #ifdef FUNC_AX48_NACS_TEMP_SENSOR_COMPENSATION_AND_MODIFY_FORMULA_20240522
  66. extern int16_t getTemperature_NACS(uint16_t adc_raw);
  67. #endif
  68. #else //FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  69. extern uint16_t getTemperature(uint16_t adc_raw);
  70. #endif //FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  71. extern uint16_t vRms_cal2(uint16_t *data, uint16_t length) ;
  72. //extern uint16_t cRms_cal2(uint16_t *data, uint16_t length) ;
  73. extern uint16_t RlyVmax_cal(uint16_t *data, uint16_t length) ;
  74. extern uint16_t avg_v_cal(uint16_t *data, uint16_t length) ;
  75. extern uint32_t ADC1_Buffer[ADC1_CHANEL_COUNT*ADC1_SAMPLE_COUNT];
  76. extern uint32_t ADC2_Buffer[ADC2_CHANEL_COUNT*ADC2_SAMPLE_COUNT];
  77. extern uint16_t ADC2_Buffer_Each[ADC2_CHANEL_COUNT][ADC2_SAMPLE_COUNT];
  78. extern uint32_t ADC3_Buffer[ADC3_CHANEL_COUNT*ADC3_SAMPLE_COUNT];
  79. extern uint16_t ADC3_Buffer_Each[ADC3_CHANEL_COUNT][ADC3_SAMPLE_COUNT];
  80. extern uint8_t isDMAEnd_ADC1;
  81. extern uint8_t isDMAEnd_ADC2;
  82. extern uint8_t isDMAEnd_ADC3;
  83. #ifdef FUNC_AX80_ADD_4_TEMP_SENEOR
  84. #ifdef FUNC_AW48_ADD_6_TEMP_SENEOR
  85. #ifdef FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  86. #ifdef FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  87. struct ADC_VALUE{
  88. union
  89. {
  90. MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
  91. MOVE_AVG_FILTER ADC3_IN9_Relay1_Temp;
  92. MOVE_AVG_FILTER ADC3_IN9_AW48_T1; //T1
  93. MOVE_AVG_FILTER ADC3_IN9_AX48_NACS_T1; //T1
  94. MOVE_AVG_FILTER ADC3_IN9_AX80_NACS_T1; //T1
  95. };
  96. MOVE_AVG_FILTER ADC3_IN14_UL_1998;
  97. MOVE_AVG_FILTER ADC3_IN15_Temp;
  98. MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
  99. union
  100. {
  101. MOVE_AVG_FILTER ADC3_IN7_Current_L1;
  102. MOVE_AVG_FILTER ADC3_IN7_Input_N_L2_Temp;
  103. MOVE_AVG_FILTER ADC3_IN7_AW48_T4; //T4
  104. MOVE_AVG_FILTER ADC3_IN7_AX48_NACS_T4; //T4
  105. MOVE_AVG_FILTER ADC3_IN7_AX80_NACS_T4; //T4
  106. };
  107. union
  108. {
  109. MOVE_AVG_FILTER ADC3_IN5_Current_L2;
  110. MOVE_AVG_FILTER ADC3_IN5_AW48_T5; //T5
  111. MOVE_AVG_FILTER ADC3_IN5_AX48_NACS_T5; //T5
  112. MOVE_AVG_FILTER ADC3_IN5_AX80_NACS_T5; //T5
  113. };
  114. MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
  115. union
  116. {
  117. MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
  118. MOVE_AVG_FILTER ADC3_IN8_Relay2_Temp;
  119. MOVE_AVG_FILTER ADC3_IN8_AW48_T2; //T2
  120. MOVE_AVG_FILTER ADC3_IN8_AX48_NACS_T2; //T2
  121. MOVE_AVG_FILTER ADC3_IN8_AX80_NACS_T2; //T2
  122. };
  123. union
  124. {
  125. MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
  126. MOVE_AVG_FILTER ADC3_IN10_Input_L1_Temp;
  127. MOVE_AVG_FILTER ADC3_IN10_AW48_T3; //T3
  128. MOVE_AVG_FILTER ADC3_IN10_AX48_NACS_T3; //T3
  129. MOVE_AVG_FILTER ADC3_IN10_AX80_NACS_T3; //T3
  130. };
  131. union
  132. {
  133. MOVE_AVG_FILTER ADC3_IN11_Current_L3;
  134. MOVE_AVG_FILTER ADC3_IN11_AW48_T6; //T6
  135. MOVE_AVG_FILTER ADC3_IN11_AX48_NACS_T6; //T6
  136. MOVE_AVG_FILTER ADC3_IN11_AX80_NACS_T6; //T6
  137. };
  138. MOVE_AVG_FILTER ADC1_IN4_CP;
  139. MOVE_AVG_FILTER ADC2_IN5_Welding;
  140. MOVE_AVG_FILTER ADC2_IN6_GF;
  141. };
  142. #else //FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  143. struct ADC_VALUE{
  144. union
  145. {
  146. MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
  147. MOVE_AVG_FILTER ADC3_IN9_Relay1_Temp;
  148. MOVE_AVG_FILTER ADC3_IN9_AW48_T1; //T1
  149. MOVE_AVG_FILTER ADC3_IN9_AX48_NACS_T1; //T1
  150. };
  151. MOVE_AVG_FILTER ADC3_IN14_UL_1998;
  152. MOVE_AVG_FILTER ADC3_IN15_Temp;
  153. MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
  154. union
  155. {
  156. MOVE_AVG_FILTER ADC3_IN7_Current_L1;
  157. MOVE_AVG_FILTER ADC3_IN7_Input_N_L2_Temp;
  158. MOVE_AVG_FILTER ADC3_IN7_AW48_T4; //T4
  159. MOVE_AVG_FILTER ADC3_IN7_AX48_NACS_T4; //T4
  160. };
  161. union
  162. {
  163. MOVE_AVG_FILTER ADC3_IN5_Current_L2;
  164. MOVE_AVG_FILTER ADC3_IN5_AW48_T5; //T5
  165. MOVE_AVG_FILTER ADC3_IN5_AX48_NACS_T5; //T5
  166. };
  167. MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
  168. union
  169. {
  170. MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
  171. MOVE_AVG_FILTER ADC3_IN8_Relay2_Temp;
  172. MOVE_AVG_FILTER ADC3_IN8_AW48_T2; //T2
  173. MOVE_AVG_FILTER ADC3_IN8_AX48_NACS_T2; //T2
  174. };
  175. union
  176. {
  177. MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
  178. MOVE_AVG_FILTER ADC3_IN10_Input_L1_Temp;
  179. MOVE_AVG_FILTER ADC3_IN10_AW48_T3; //T3
  180. MOVE_AVG_FILTER ADC3_IN10_AX48_NACS_T3; //T3
  181. };
  182. union
  183. {
  184. MOVE_AVG_FILTER ADC3_IN11_Current_L3;
  185. MOVE_AVG_FILTER ADC3_IN11_AW48_T6; //T6
  186. MOVE_AVG_FILTER ADC3_IN11_AX48_NACS_T6; //T6
  187. };
  188. MOVE_AVG_FILTER ADC1_IN4_CP;
  189. MOVE_AVG_FILTER ADC2_IN5_Welding;
  190. MOVE_AVG_FILTER ADC2_IN6_GF;
  191. };
  192. #endif //FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  193. #else //FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  194. struct ADC_VALUE{
  195. union
  196. {
  197. MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
  198. MOVE_AVG_FILTER ADC3_IN9_Relay1_Temp;
  199. MOVE_AVG_FILTER ADC3_IN9_AW48_T1; //T1
  200. };
  201. MOVE_AVG_FILTER ADC3_IN14_UL_1998;
  202. MOVE_AVG_FILTER ADC3_IN15_Temp;
  203. MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
  204. union
  205. {
  206. MOVE_AVG_FILTER ADC3_IN7_Current_L1;
  207. MOVE_AVG_FILTER ADC3_IN7_Input_N_L2_Temp;
  208. MOVE_AVG_FILTER ADC3_IN7_AW48_T4; //T4
  209. };
  210. union
  211. {
  212. MOVE_AVG_FILTER ADC3_IN5_Current_L2;
  213. MOVE_AVG_FILTER ADC3_IN5_AW48_T5; //T5
  214. };
  215. MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
  216. union
  217. {
  218. MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
  219. MOVE_AVG_FILTER ADC3_IN8_Relay2_Temp;
  220. MOVE_AVG_FILTER ADC3_IN8_AW48_T2; //T2
  221. };
  222. union
  223. {
  224. MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
  225. MOVE_AVG_FILTER ADC3_IN10_Input_L1_Temp;
  226. MOVE_AVG_FILTER ADC3_IN10_AW48_T3; //T3
  227. };
  228. union
  229. {
  230. MOVE_AVG_FILTER ADC3_IN11_Current_L3;
  231. MOVE_AVG_FILTER ADC3_IN11_AW48_T6; //T6
  232. };
  233. MOVE_AVG_FILTER ADC1_IN4_CP;
  234. MOVE_AVG_FILTER ADC2_IN5_Welding;
  235. MOVE_AVG_FILTER ADC2_IN6_GF;
  236. };
  237. #endif //FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  238. #else //FUNC_AW48_ADD_6_TEMP_SENEOR
  239. struct ADC_VALUE{
  240. union
  241. {
  242. MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
  243. MOVE_AVG_FILTER ADC3_IN9_Relay1_Temp;
  244. };
  245. MOVE_AVG_FILTER ADC3_IN14_UL_1998;
  246. MOVE_AVG_FILTER ADC3_IN15_Temp;
  247. MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
  248. union
  249. {
  250. MOVE_AVG_FILTER ADC3_IN7_Current_L1;
  251. MOVE_AVG_FILTER ADC3_IN7_Input_N_L2_Temp;
  252. };
  253. MOVE_AVG_FILTER ADC3_IN5_Current_L2;
  254. MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
  255. union
  256. {
  257. MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
  258. MOVE_AVG_FILTER ADC3_IN8_Relay2_Temp;
  259. };
  260. union
  261. {
  262. MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
  263. MOVE_AVG_FILTER ADC3_IN10_Input_L1_Temp;
  264. };
  265. MOVE_AVG_FILTER ADC3_IN11_Current_L3;
  266. MOVE_AVG_FILTER ADC1_IN4_CP;
  267. MOVE_AVG_FILTER ADC2_IN5_Welding;
  268. MOVE_AVG_FILTER ADC2_IN6_GF;
  269. };
  270. #endif //FUNC_AW48_ADD_6_TEMP_SENEOR
  271. #else //FUNC_AX80_ADD_4_TEMP_SENEOR
  272. struct ADC_VALUE{
  273. MOVE_AVG_FILTER ADC3_IN9_Voltage_L1;
  274. MOVE_AVG_FILTER ADC3_IN14_UL_1998;
  275. MOVE_AVG_FILTER ADC3_IN15_Temp;
  276. MOVE_AVG_FILTER ADC3_IN4_GMI_VL1;
  277. MOVE_AVG_FILTER ADC3_IN7_Current_L1;
  278. MOVE_AVG_FILTER ADC3_IN5_Current_L2;
  279. MOVE_AVG_FILTER ADC3_IN6_Gun_Detec;
  280. MOVE_AVG_FILTER ADC3_IN8_Voltage_L2;
  281. MOVE_AVG_FILTER ADC3_IN10_Voltage_L3;
  282. MOVE_AVG_FILTER ADC3_IN11_Current_L3;
  283. MOVE_AVG_FILTER ADC1_IN4_CP;
  284. MOVE_AVG_FILTER ADC2_IN5_Welding;
  285. MOVE_AVG_FILTER ADC2_IN6_GF;
  286. };
  287. #endif //FUNC_AX80_ADD_4_TEMP_SENEOR
  288. extern struct ADC_VALUE adc_value;
  289. extern uint16_t ADCWDGHighThreshold;
  290. extern uint16_t ADCWDGLowThreshold;
  291. extern uint8_t is60Hz;
  292. /* USER CODE END Prototypes */
  293. #ifdef __cplusplus
  294. }
  295. #endif
  296. #endif /*__ adc_H */
  297. /**
  298. * @}
  299. */
  300. /**
  301. * @}
  302. */
  303. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/