From 4d692276573720d59642f262d8a8b0019b4d5829 Mon Sep 17 00:00:00 2001 From: Christopher Durand Date: Wed, 12 Jul 2023 12:35:24 +0200 Subject: [PATCH] [example] Add injected conversion ADC example for Nucleo H723ZG --- .../adc_injected_conversion/main.cpp | 56 +++++++++++++++++++ .../adc_injected_conversion/project.xml | 10 ++++ 2 files changed, 66 insertions(+) create mode 100644 examples/nucleo_h723zg/adc_injected_conversion/main.cpp create mode 100644 examples/nucleo_h723zg/adc_injected_conversion/project.xml diff --git a/examples/nucleo_h723zg/adc_injected_conversion/main.cpp b/examples/nucleo_h723zg/adc_injected_conversion/main.cpp new file mode 100644 index 0000000000..56ac8b1974 --- /dev/null +++ b/examples/nucleo_h723zg/adc_injected_conversion/main.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2023, Christopher Durand + * + * This file is part of the modm project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include + +using namespace Board; + +int main() +{ + Board::initialize(); + + Adc1::connect(); + Adc1::initialize(Adc1::ClockMode::SynchronousPrescaler4, + Adc1::ClockSource::NoClock, + Adc1::Prescaler::Disabled, + Adc1::CalibrationMode::SingleEndedInputsMode); + + MODM_LOG_INFO << "ADC Injected Conversion Test\n"; + + Adc1::setInjectedConversionSequenceLength(4); + Adc1::setInjectedConversionChannel(0, Adc1::SampleTime::Cycles17); + Adc1::setInjectedConversionChannel(1, Adc1::SampleTime::Cycles17); + Adc1::setInjectedConversionChannel(2, Adc1::SampleTime::Cycles17); + Adc1::setInjectedConversionChannel(3, Adc1::SampleTime::Cycles17); + + while (true) { + // start regular conversion + Adc1::setPinChannel(Adc1::SampleTime::Cycles17); + Adc1::startConversion(); + + Adc1::startInjectedConversionSequence(); + while (!Adc1::isInjectedConversionFinished()); + + MODM_LOG_INFO << "ADC1 CH15 (injected): " << Adc1::getInjectedConversionValue(0) << '\n'; + MODM_LOG_INFO << "ADC1 CH15 (injected): " << Adc1::getInjectedConversionValue(2) << '\n'; + MODM_LOG_INFO << "ADC1 CH10 (injected): " << Adc1::getInjectedConversionValue(1) << '\n'; + MODM_LOG_INFO << "ADC1 CH10 (injected): " << Adc1::getInjectedConversionValue(3) << '\n'; + + // wait for regular conversion to finish + while (!Adc1::isConversionFinished()); + MODM_LOG_INFO << "ADC1 CH10 (regular): " << Adc1::getValue() << "\n\n"; + + Leds::toggle(); + modm::delay_ms(500); + } + + return 0; +} diff --git a/examples/nucleo_h723zg/adc_injected_conversion/project.xml b/examples/nucleo_h723zg/adc_injected_conversion/project.xml new file mode 100644 index 0000000000..c79cb1f183 --- /dev/null +++ b/examples/nucleo_h723zg/adc_injected_conversion/project.xml @@ -0,0 +1,10 @@ + + modm:nucleo-h723zg + + + + + modm:build:scons + modm:platform:adc:1 + +