adc.c 870 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * adc.c
  3. *
  4. * Created on: Mar 11, 2025
  5. * Author: andre
  6. */
  7. #include "main.h"
  8. #include "adc.h"
  9. extern ADC_HandleTypeDef hadc1;
  10. #define ADC_REGULAR_BUF_LEN 1
  11. uint32_t ADCRegular[ADC_REGULAR_BUF_LEN]; // ADC regular conventions
  12. void ADC_Init(void) {
  13. ADC_Enable(&hadc1);
  14. // ADC Calibration
  15. if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) {
  16. Error_Handler();
  17. }
  18. HAL_ADC_Start_DMA(&hadc1, ADCRegular, ADC_REGULAR_BUF_LEN);
  19. }
  20. void ADC_Start_Convertion(void) {
  21. HAL_ADC_Stop_DMA(&hadc1);
  22. HAL_ADC_Start_DMA(&hadc1, ADCRegular, ADC_REGULAR_BUF_LEN);
  23. }
  24. uint16_t ADC_GetVoltage(void) {
  25. uint32_t adc_value;
  26. adc_value = ADC_REF_Voltage_mV * ADCRegular[0] / 4095;
  27. adc_value = (adc_value* (ADC_Voltage_R1 + ADC_Voltage_R2)) / ADC_Voltage_R2; // Milivolts
  28. adc_value = adc_value / 100; // Volts * 10 It is need for telemetry
  29. return adc_value;
  30. }