Index: ctrl/firmware/Main/CubeMX/Core/Inc/adc.h
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Inc/adc.h	(revision 94)
+++ ctrl/firmware/Main/CubeMX/Core/Inc/adc.h	(revision 95)
@@ -40,4 +40,5 @@
 
 #define ADC3_CHANNELS	(4U)
+#define VREF			(3000U)
 
 typedef union ADC3_data_t
@@ -50,5 +51,5 @@
 		uint16_t CPUTemp;
 		uint16_t UBat;
-	};
+	} Name;
 } __attribute__((packed, aligned(32))) ADC3_data_t;
 
@@ -58,4 +59,6 @@
 
 /* USER CODE BEGIN Prototypes */
+
+extern volatile uint16_t ADC3_values[2];
 
 /* USER CODE END Prototypes */
Index: ctrl/firmware/Main/CubeMX/Core/Src/adc.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/adc.c	(revision 94)
+++ ctrl/firmware/Main/CubeMX/Core/Src/adc.c	(revision 95)
@@ -23,5 +23,5 @@
 /* USER CODE BEGIN 0 */
 
-uint16_t ADC3_values[1] __attribute__((section(".BKP_RAM_4_DMA")));
+volatile uint16_t ADC3_values[2] __attribute__((section(".BKP_RAM_4_DMA")));
 
 /* USER CODE END 0 */
@@ -50,9 +50,9 @@
   hadc3.Init.Resolution = ADC_RESOLUTION_12B;
   hadc3.Init.DataAlign = ADC3_DATAALIGN_RIGHT;
-  hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
-  hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
+  hadc3.Init.ScanConvMode = ADC_SCAN_ENABLE;
+  hadc3.Init.EOCSelection = ADC_EOC_SEQ_CONV;
   hadc3.Init.LowPowerAutoWait = DISABLE;
   hadc3.Init.ContinuousConvMode = ENABLE;
-  hadc3.Init.NbrOfConversion = 1;
+  hadc3.Init.NbrOfConversion = 2;
   hadc3.Init.DiscontinuousConvMode = DISABLE;
   hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
@@ -86,4 +86,13 @@
     Error_Handler();
   }
+
+  /** Configure Regular Channel
+  */
+  sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
+  sConfig.Rank = ADC_REGULAR_RANK_2;
+  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
   /* USER CODE BEGIN ADC3_Init 2 */
 
@@ -94,5 +103,5 @@
 
   //if (HAL_OK != HAL_ADC_Start(&hadc3)) Error_Handler();
-  if (HAL_OK != HAL_ADC_Start_DMA(&hadc3, (uint32_t*)ADC3_values, 1/*ADC3_CHANNELS*/)) Error_Handler();
+  if (HAL_OK != HAL_ADC_Start_DMA(&hadc3, (uint32_t*)ADC3_values, 2/*ADC3_CHANNELS*/)) Error_Handler();
   //__HAL_DMA_DISABLE_IT(&hdma_adc3, DMA_IT_HT);
 
Index: ctrl/firmware/Main/CubeMX/charger.ioc
===================================================================
--- ctrl/firmware/Main/CubeMX/charger.ioc	(revision 94)
+++ ctrl/firmware/Main/CubeMX/charger.ioc	(revision 95)
@@ -1,20 +1,25 @@
 #MicroXplorer Configuration settings - do not modify
 ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
+ADC3.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR
 ADC3.ClockPrescalerADC3=ADC_CLOCK_ASYNC_DIV256
 ADC3.ContinuousConvMode=ENABLE
 ADC3.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR
 ADC3.DMAContinuousRequests=ENABLE
-ADC3.EOCSelection=ADC_EOC_SINGLE_CONV
-ADC3.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSign-0\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,DMAContinuousRequests,EOCSelection,Overrun,OversamplingMode,ClockPrescalerADC3,Ratio,NbrOfConversion,RightBitShift,ConversionDataManagement
-ADC3.NbrOfConversion=1
+ADC3.EOCSelection=ADC_EOC_SEQ_CONV
+ADC3.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSign-0\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,DMAContinuousRequests,EOCSelection,Overrun,OversamplingMode,ClockPrescalerADC3,Ratio,NbrOfConversion,RightBitShift,ConversionDataManagement,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,OffsetSign-1\#ChannelRegularConversion
+ADC3.NbrOfConversion=2
 ADC3.NbrOfConversionFlag=1
 ADC3.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
+ADC3.OffsetNumber-1\#ChannelRegularConversion=ADC_OFFSET_NONE
 ADC3.OffsetSign-0\#ChannelRegularConversion=ADC3_OFFSET_SIGN_NEGATIVE
+ADC3.OffsetSign-1\#ChannelRegularConversion=ADC3_OFFSET_SIGN_NEGATIVE
 ADC3.Overrun=ADC_OVR_DATA_OVERWRITTEN
 ADC3.OversamplingMode=ENABLE
 ADC3.Rank-0\#ChannelRegularConversion=1
+ADC3.Rank-1\#ChannelRegularConversion=2
 ADC3.Ratio=ADC3_OVERSAMPLING_RATIO_256
 ADC3.RightBitShift=ADC_RIGHTBITSHIFT_8
 ADC3.SamplingTime-0\#ChannelRegularConversion=ADC3_SAMPLETIME_640CYCLES_5
+ADC3.SamplingTime-1\#ChannelRegularConversion=ADC3_SAMPLETIME_640CYCLES_5
 Bdma.ADC3.0.Direction=DMA_PERIPH_TO_MEMORY
 Bdma.ADC3.0.EventEnable=DISABLE
@@ -55,4 +60,7 @@
 CORTEX_M7.TypeExtField_S-Cortex_Memory_Protection_Unit_Region2_Settings_S=MPU_TEX_LEVEL1
 CORTEX_M7.default_mode_Activation=1
+DTS.IPParameters=RefClock,SamplingTime
+DTS.RefClock=DTS_REFCLKSEL_LSE
+DTS.SamplingTime=DTS_SMP_TIME_15_CYCLE
 Dma.Request0=SPI4_TX
 Dma.Request1=USART3_RX
@@ -256,27 +264,28 @@
 Mcu.IP0=ADC3
 Mcu.IP1=BDMA
-Mcu.IP10=NVIC
-Mcu.IP11=RCC
-Mcu.IP12=RTC
-Mcu.IP13=SDMMC1
-Mcu.IP14=SPI2
-Mcu.IP15=SPI4
-Mcu.IP16=SYS
-Mcu.IP17=TIM3
-Mcu.IP18=TIM6
-Mcu.IP19=TIM8
+Mcu.IP10=MEMORYMAP
+Mcu.IP11=NVIC
+Mcu.IP12=RCC
+Mcu.IP13=RTC
+Mcu.IP14=SDMMC1
+Mcu.IP15=SPI2
+Mcu.IP16=SPI4
+Mcu.IP17=SYS
+Mcu.IP18=TIM3
+Mcu.IP19=TIM6
 Mcu.IP2=CORTEX_M7
-Mcu.IP20=USART2
-Mcu.IP21=USART3
-Mcu.IP22=USART10
-Mcu.IP23=VREFBUF
+Mcu.IP20=TIM8
+Mcu.IP21=USART2
+Mcu.IP22=USART3
+Mcu.IP23=USART10
+Mcu.IP24=VREFBUF
 Mcu.IP3=DEBUG
 Mcu.IP4=DMA
-Mcu.IP5=FATFS
-Mcu.IP6=FREERTOS
-Mcu.IP7=I2C1
-Mcu.IP8=I2C2
-Mcu.IP9=MEMORYMAP
-Mcu.IPNb=24
+Mcu.IP5=DTS
+Mcu.IP6=FATFS
+Mcu.IP7=FREERTOS
+Mcu.IP8=I2C1
+Mcu.IP9=I2C2
+Mcu.IPNb=25
 Mcu.Name=STM32H723ZETx
 Mcu.Package=LQFP144
@@ -334,21 +343,23 @@
 Mcu.Pin55=PB8
 Mcu.Pin56=PB9
-Mcu.Pin57=VP_FATFS_VS_SDIO
-Mcu.Pin58=VP_FREERTOS_VS_CMSIS_V2
-Mcu.Pin59=VP_RTC_VS_RTC_Activate
+Mcu.Pin57=VP_ADC3_TempSens_Input
+Mcu.Pin58=VP_DTS_VS-DTS
+Mcu.Pin59=VP_FATFS_VS_SDIO
 Mcu.Pin6=PF1
-Mcu.Pin60=VP_RTC_VS_RTC_Calendar
-Mcu.Pin61=VP_SYS_VS_tim7
-Mcu.Pin62=VP_TIM3_VS_ClockSourceINT
-Mcu.Pin63=VP_TIM6_VS_ClockSourceINT
-Mcu.Pin64=VP_TIM8_VS_ControllerModeReset
-Mcu.Pin65=VP_TIM8_VS_ClockSourceINT
-Mcu.Pin66=VP_VREFBUF_V_VREFBUF
-Mcu.Pin67=VP_MEMORYMAP_VS_MEMORYMAP
-Mcu.Pin68=VP_STMicroelectronics.X-CUBE-EEPRMA1_VS_BoardOoPartJjEEPROM_5.1.0_5.1.0
+Mcu.Pin60=VP_FREERTOS_VS_CMSIS_V2
+Mcu.Pin61=VP_RTC_VS_RTC_Activate
+Mcu.Pin62=VP_RTC_VS_RTC_Calendar
+Mcu.Pin63=VP_SYS_VS_tim7
+Mcu.Pin64=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin65=VP_TIM6_VS_ClockSourceINT
+Mcu.Pin66=VP_TIM8_VS_ControllerModeReset
+Mcu.Pin67=VP_TIM8_VS_ClockSourceINT
+Mcu.Pin68=VP_VREFBUF_V_VREFBUF
+Mcu.Pin69=VP_MEMORYMAP_VS_MEMORYMAP
 Mcu.Pin7=PH0-OSC_IN
+Mcu.Pin70=VP_STMicroelectronics.X-CUBE-EEPRMA1_VS_BoardOoPartJjEEPROM_5.1.0_5.1.0
 Mcu.Pin8=PH1-OSC_OUT
 Mcu.Pin9=PC0
-Mcu.PinsNb=69
+Mcu.PinsNb=71
 Mcu.ThirdParty0=STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0
 Mcu.ThirdParty1=STMicroelectronics.X-CUBE-EEPRMA1.5.1.0
@@ -817,4 +828,8 @@
 USART3.SwapParam=ADVFEATURE_SWAP_ENABLE
 USART3.VirtualMode-Asynchronous=VM_ASYNC
+VP_ADC3_TempSens_Input.Mode=IN-TempSens
+VP_ADC3_TempSens_Input.Signal=ADC3_TempSens_Input
+VP_DTS_VS-DTS.Mode=DTS
+VP_DTS_VS-DTS.Signal=DTS_VS-DTS
 VP_FATFS_VS_SDIO.Mode=SDIO
 VP_FATFS_VS_SDIO.Signal=FATFS_VS_SDIO
