From f837b94a9dfe3a662bd3bbbfbc2716ffef5f6750 Mon Sep 17 00:00:00 2001 From: cfif Date: Mon, 2 Jun 2025 13:26:40 +0300 Subject: [PATCH] Init --- Adcs.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Adcs.h | 32 +++++++++++++++++++ modular.json | 13 ++++++++ 3 files changed, 131 insertions(+) create mode 100644 Adcs.c create mode 100644 Adcs.h create mode 100644 modular.json diff --git a/Adcs.c b/Adcs.c new file mode 100644 index 0000000..0c56f30 --- /dev/null +++ b/Adcs.c @@ -0,0 +1,86 @@ +// +// Created by ilya on 14.12.23. +// +#include +#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); +} \ No newline at end of file diff --git a/Adcs.h b/Adcs.h new file mode 100644 index 0000000..56d39fa --- /dev/null +++ b/Adcs.h @@ -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 diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..9589ff8 --- /dev/null +++ b/modular.json @@ -0,0 +1,13 @@ +{ + "dep": [ + + ], + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "./**.c" + ] + } +} \ No newline at end of file