From 6d7529d0342de27da37807e46657150a59aeab3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Sat, 25 Jun 2022 19:36:06 +0200 Subject: [PATCH] Fix STM temperature calculation --- Software/VNA_embedded/Application/Drivers/stm.hpp | 2 ++ Software/VNA_embedded/Src/main.c | 4 ++-- Software/VNA_embedded/VNA_embedded.ioc | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Software/VNA_embedded/Application/Drivers/stm.hpp b/Software/VNA_embedded/Application/Drivers/stm.hpp index 769407f..19f3e19 100644 --- a/Software/VNA_embedded/Application/Drivers/stm.hpp +++ b/Software/VNA_embedded/Application/Drivers/stm.hpp @@ -22,6 +22,8 @@ static inline int8_t getTemperature() { HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, 100); int16_t adc = HAL_ADC_GetValue(&hadc1); + // convert to used reference during calibration + adc = (int32_t) adc * 3300 / TEMPSENSOR_CAL_VREFANALOG; int16_t rangeFrom = *TEMPSENSOR_CAL2_ADDR - *TEMPSENSOR_CAL1_ADDR; int16_t rangeTo = TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP; adc -= *TEMPSENSOR_CAL1_ADDR; diff --git a/Software/VNA_embedded/Src/main.c b/Software/VNA_embedded/Src/main.c index 51c7663..c2393a9 100644 --- a/Software/VNA_embedded/Src/main.c +++ b/Software/VNA_embedded/Src/main.c @@ -235,7 +235,7 @@ static void MX_ADC1_Init(void) /** Common config */ hadc1.Instance = ADC1; - hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; + hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV4; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.GainCompensation = 0; @@ -274,7 +274,7 @@ static void MX_ADC1_Init(void) Error_Handler(); } /* USER CODE BEGIN ADC1_Init 2 */ - + HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED); /* USER CODE END ADC1_Init 2 */ } diff --git a/Software/VNA_embedded/VNA_embedded.ioc b/Software/VNA_embedded/VNA_embedded.ioc index 586e12a..8aa12ab 100644 --- a/Software/VNA_embedded/VNA_embedded.ioc +++ b/Software/VNA_embedded/VNA_embedded.ioc @@ -1,6 +1,7 @@ #MicroXplorer Configuration settings - do not modify ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR_ADC1 -ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag +ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV4 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler ADC1.NbrOfConversionFlag=1 ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE ADC1.Rank-0\#ChannelRegularConversion=1