This commit is contained in:
cfif 2025-06-02 13:26:40 +03:00
commit f837b94a9d
3 changed files with 131 additions and 0 deletions

86
Adcs.c Normal file
View File

@ -0,0 +1,86 @@
//
// Created by ilya on 14.12.23.
//
#include <stdbool.h>
#include "Adcs.h"
#include "at32f435_437.h"
//todo Проверить правильность инициализации Adcs
void Adc_Battery(tAdc *env){
//*gpio*//
gpio_init_type gpio_initstructure;
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_ADC2_PERIPH_CLOCK, TRUE);
gpio_default_para_init(&gpio_initstructure);
gpio_initstructure.gpio_mode = GPIO_MODE_ANALOG;
gpio_initstructure.gpio_pins = GPIO_PINS_2;
gpio_init(GPIOA, &gpio_initstructure);
//*adc*//
env->vcc = ADC_Initial(ADC2, ADC_CHANNEL_2,0,env->calibCoef,1);
env->vccIo = vAdcGetIo(&env->vcc);
}
void Adc_BoardVoltage(tAdc *env){
// nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
//*gpio*//
gpio_init_type gpio_initstructure;
crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_ADC1_PERIPH_CLOCK, TRUE);
gpio_default_para_init(&gpio_initstructure);
gpio_initstructure.gpio_mode = GPIO_MODE_ANALOG;
gpio_initstructure.gpio_pins = GPIO_PINS_3;
gpio_init(GPIOC, &gpio_initstructure);
env->vcc = ADC_Initial(ADC1, ADC_CHANNEL_13,0,env->calibCoef,1);
env->vccIo = vAdcGetIo(&env->vcc);
}
void Adc_AntGnss(tAdc *env){
//*gpio*//
gpio_init_type gpio_initstructure;
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_ADC3_PERIPH_CLOCK, TRUE);
gpio_default_para_init(&gpio_initstructure);
gpio_initstructure.gpio_mode = GPIO_MODE_ANALOG;
gpio_initstructure.gpio_pins = GPIO_PINS_3;
gpio_init(GPIOA, &gpio_initstructure);
env->vcc = ADC_Initial(ADC3, ADC_CHANNEL_3,0,1,1);
env->vccIo = vAdcGetIo(&env->vcc);
}
tAdcs ADCS;
void Adcs_Init() {
tAdcs *env = &ADCS;
env->battery.calibCoef = (float)1.60;
env->boardVoltageVal.calibCoef = 1;// 8.97
Adc_AntGnss(&env->antGnss);
Adc_Battery(&env->battery);
Adc_BoardVoltage(&env->boardVoltageVal);
}
bool Adcs_SetCalibBoardVoltage(tAdc *env, float *externalCalibCoef) {
env->calibCoef = 1;
Adc_BoardVoltage(env);
uint16_t volts = AdcGet(&env->vccIo, 1000);
*externalCalibCoef = (float)12000.0/(float)volts;
env->calibCoef = *externalCalibCoef;
Adc_BoardVoltage(env);
volts = AdcGet(&env->vccIo, 1000);
if((volts>11500) && (volts<12500)){
return true;
} else {
return false;
}
}
void Adcs_InitBip() {
tAdcs *env = &ADCS;
// Adc_BipButtons(&env->bipADC);
}

32
Adcs.h Normal file
View File

@ -0,0 +1,32 @@
//
// Created by ilya on 14.12.23.
//
#ifndef ERA_ELEMENT_2_ADCS_H
#define ERA_ELEMENT_2_ADCS_H
#include "AdcArtery.h"
typedef struct {
tAdcArtery vcc;
tAdcIO vccIo;
float calibCoef;
} tAdc;
typedef struct {
tAdc antGnss;
tAdc battery;
tAdc boardVoltageVal;
} tAdcs;
extern tAdcs ADCS;
bool Adcs_SetCalibBoardVoltage(tAdc *env, float *externalCalibCoef);
void Adcs_Init();
void Adc_BoardVoltage(tAdc *env);
void Adcs_InitBip();
#endif //ERA_ELEMENT_2_ADCS_H

13
modular.json Normal file
View File

@ -0,0 +1,13 @@
{
"dep": [
],
"cmake": {
"inc_dirs": [
"./"
],
"srcs": [
"./**.c"
]
}
}