12345678910111213141516171819202122232425262728293031323334353637383940 |
- /*
- * adc.c
- *
- * Created on: Mar 11, 2025
- * Author: andre
- */
- #include "main.h"
- #include "adc.h"
- extern ADC_HandleTypeDef hadc1;
- #define ADC_REGULAR_BUF_LEN 1
- uint32_t ADCRegular[ADC_REGULAR_BUF_LEN]; // ADC regular conventions
- void ADC_Init(void) {
- ADC_Enable(&hadc1);
- // ADC Calibration
- if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) {
- Error_Handler();
- }
- HAL_ADC_Start_DMA(&hadc1, ADCRegular, ADC_REGULAR_BUF_LEN);
- }
- void ADC_Start_Convertion(void) {
- HAL_ADC_Stop_DMA(&hadc1);
- HAL_ADC_Start_DMA(&hadc1, ADCRegular, ADC_REGULAR_BUF_LEN);
- }
- uint16_t ADC_GetVoltage(void) {
- uint32_t adc_value;
- adc_value = ADC_REF_Voltage_mV * ADCRegular[0] / 4095;
- adc_value = (adc_value* (ADC_Voltage_R1 + ADC_Voltage_R2)) / ADC_Voltage_R2; // Milivolts
- adc_value = adc_value / 100; // Volts * 10 It is need for telemetry
- return adc_value;
- }
|