diff --git a/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.c b/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.c index 2a82441745843bb9da6cb4232e9f0782723c3780..d811e8fc76e99488e22ace6a9dc7cca1309013d7 100644 --- a/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.c +++ b/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.c @@ -62,12 +62,36 @@ void adc_set_dual_mode(uint8_t dual_mode) adc_core_set_dual_mode(dual_mode); } -void adc_configure_trigger_source(uint8_t adc_number, uint32_t trigger_source) +void adc_configure_trigger_source(uint8_t adc_number, adc_ev_src_t trigger_source) { + ///// + // Convert to LL constants + + uint32_t trig; + switch (trigger_source) + { + case hrtim_ev1: + trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG1; + break; + case hrtim_ev2: + trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG2; + break; + case hrtim_ev3: + trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG3; + break; + case hrtim_ev4: + trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG4; + break; + case software: + default: + trig = LL_ADC_REG_TRIG_SOFTWARE; + break; + } + // Only store configuration: it must be applied after ADC enable if ( (adc_number > 0) && (adc_number <= NUMBER_OF_ADCS) ) { - adc_trigger_sources[adc_number-1] = trigger_source; + adc_trigger_sources[adc_number-1] = trig; } } diff --git a/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.h b/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.h index 0b91a13cf9865df099b2d49d0ac42c85dfe0be23..91b6112545a579f1320909fff2177b021e8d2433 100644 --- a/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.h +++ b/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.h @@ -47,6 +47,22 @@ extern "C" { #endif +///// +// Public enums + +typedef enum +{ + hrtim_ev1, + hrtim_ev2, + hrtim_ev3, + hrtim_ev4, + software +} adc_ev_src_t; + + +///// +// Public API + /** * @brief Initializes the ADCs. It must be * called *before* any configuration is made. @@ -67,17 +83,16 @@ void adc_set_dual_mode(uint8_t dual_mode); * Registers the triger source for an ADC. * It will be applied when ADC is started. * - * @param adc_number Number of the ADC to configure - * @param triggger_source Source of the trigger as defined - * in stm32gxx_ll_adc.h (LL_ADC_REG_TRIG_***) + * @param adc_number Number of the ADC to configure. + * @param triggger_source Source of the trigger. */ -void adc_configure_trigger_source(uint8_t adc_number, uint32_t trigger_source); +void adc_configure_trigger_source(uint8_t adc_number, adc_ev_src_t trigger_source); /** * Registers the discontinuous count for an ADC. * It will be applied when ADC is started. * - * @param adc_number Number of the ADC to configure + * @param adc_number Number of the ADC to configure. * @param dicontinuous_count Number of channels to acquire on each * trigger event. 0 to disable discontinuous mode (default). */ @@ -103,7 +118,8 @@ int8_t adc_configure_adc_channels(uint8_t adc_number, const char* channel_list[] /** * Get the number of enabled channels for an ADC. - * @param adc_num Number of the ADC + * + * @param adc_num Number of the ADC. * @return Number of enabled channels in this ADC. */ uint8_t adc_get_enabled_channels_count(uint8_t adc_num); @@ -116,10 +132,10 @@ void adc_start(); /** * This function returns the name of an enabled channel. * - * This function must onle be called after + * This function must only be called after * adc_configure_adc_channels has been called. * - * @param adc_number Number of the ADC + * @param adc_number Number of the ADC. * @param channel_rank Rank of the ADC channel to query. * Rank ranges from 0 to (number of enabled channels)-1 * @return Name of the channel as defined in the device tree, or diff --git a/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.cpp b/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.cpp index 19de4f2b1371bd3f1d58bb2f3dc6be78c0632c53..50af50b2cc1c7de20f0602c653948112a5168dd8 100644 --- a/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.cpp +++ b/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.cpp @@ -19,6 +19,7 @@ /** * @date 2022 + * * @author Clément Foucher <clement.foucher@laas.fr> */ @@ -241,7 +242,7 @@ int8_t HardwareConfiguration::configureAdcChannels(uint8_t adc_number, const cha return configure_adc_channels(adc_number, channel_list, channel_count); } -void HardwareConfiguration::configureAdcTriggerSource(uint8_t adc_number, adc_src_t trigger_source) +void HardwareConfiguration::configureAdcTriggerSource(uint8_t adc_number, adc_ev_src_t trigger_source) { configure_adc_trigger_source(adc_number, trigger_source); } diff --git a/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.h b/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.h index 4a66b41fd29e90a13f61a28bb68556231f49898b..cc9b8630c8921427864d3613c929df3c46876487 100644 --- a/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.h +++ b/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.h @@ -19,6 +19,7 @@ /** * @date 2022 + * * @author Clément Foucher <clement.foucher@laas.fr> */ @@ -104,7 +105,7 @@ public: // ADC static void configureAdc12DualMode(uint8_t dual_mode); static int8_t configureAdcChannels(uint8_t adc_number, const char* channel_list[], uint8_t channel_count); - static void configureAdcTriggerSource(uint8_t adc_number, adc_src_t trigger_source); + static void configureAdcTriggerSource(uint8_t adc_number, adc_ev_src_t trigger_source); static void configureAdcDefaultAllMeasurements(); }; diff --git a/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.cpp b/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.cpp index 265afa23183d290b75a5d0373331a755e9e435c4..ee08ac31edf405c8bf40ba958af692be7c97c01c 100644 --- a/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.cpp +++ b/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.cpp @@ -19,13 +19,11 @@ /** * @date 2022 + * * @author Clément Foucher <clement.foucher@laas.fr> */ -// STM32 LL -#include <stm32_ll_adc.h> - // OwnTech Power API #include "adc.h" @@ -94,7 +92,7 @@ int8_t configure_adc_channels(uint8_t adc_number, const char* channel_list[], ui return NOERROR; } -void configure_adc_trigger_source(uint8_t adc_number, adc_src_t trigger_source) +void configure_adc_trigger_source(uint8_t adc_number, adc_ev_src_t trigger_source) { ///// // Make sure module is initialized @@ -106,28 +104,8 @@ void configure_adc_trigger_source(uint8_t adc_number, adc_src_t trigger_source) ///// // Proceed - uint32_t trig; - switch (trigger_source) - { - case hrtim_ev1: - trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG1; - break; - case hrtim_ev2: - trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG2; - break; - case hrtim_ev3: - trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG3; - break; - case hrtim_ev4: - trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG4; - break; - case software: - default: - trig = LL_ADC_REG_TRIG_SOFTWARE; - break; - } - adc_configure_trigger_source(adc_number, trig); + adc_configure_trigger_source(adc_number, trigger_source); } void configure_adc_default_all_measurements() diff --git a/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.h b/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.h index 482b6580002fcadc4090c3fb92e2ae62bce13580..cc67dc4f114c18c9a89f031bd52567ca987bf745 100644 --- a/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.h +++ b/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.h @@ -19,6 +19,7 @@ /** * @date 2022 + * * @author Clément Foucher <clement.foucher@laas.fr> */ @@ -30,17 +31,8 @@ // Stdlib #include <stdint.h> - -///// -// Public enums -typedef enum -{ - hrtim_ev1, - hrtim_ev2, - hrtim_ev3, - hrtim_ev4, - software -} adc_src_t; +// OwnTech API +#include "adc.h" ///// @@ -88,7 +80,7 @@ int8_t configure_adc_channels(uint8_t adc_number, const char* channel_list[], ui * @param adc_number Number of the ADC to configure * @param trigger_source Source of the trigger */ -void configure_adc_trigger_source(uint8_t adc_number, adc_src_t trigger_source); +void configure_adc_trigger_source(uint8_t adc_number, adc_ev_src_t trigger_source); /** * This function is used to configure all ADC channels in default configuration.