Index: ctrl/firmware/Main/CubeMX/Core/Inc/adc.h
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Inc/adc.h	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Inc/adc.h	(revision 108)
@@ -35,10 +35,23 @@
 /* USER CODE END Includes */
 
+extern ADC_HandleTypeDef hadc2;
+
 extern ADC_HandleTypeDef hadc3;
 
 /* USER CODE BEGIN Private defines */
 
+#define ADC2_CHANNELS	(2U)
 #define ADC3_CHANNELS	(4U)
 #define VREF			(3000U)
+
+typedef union ADC2_data_t
+{
+	uint16_t Raw[ADC2_CHANNELS];
+	struct
+	{
+		int16_t charge_strom;
+		int16_t eload_strom;
+	} Name;
+} __attribute__((packed, aligned(32))) ADC2_data_t;
 
 typedef union ADC3_data_t
@@ -54,10 +67,13 @@
 } __attribute__((packed, aligned(32))) ADC3_data_t;
 
+
 /* USER CODE END Private defines */
 
+void MX_ADC2_Init(void);
 void MX_ADC3_Init(void);
 
 /* USER CODE BEGIN Prototypes */
 
+extern volatile ADC2_data_t ADC2Data;
 extern volatile ADC3_data_t ADC3Data;
 
Index: ctrl/firmware/Main/CubeMX/Core/Inc/main.h
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Inc/main.h	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Inc/main.h	(revision 108)
@@ -74,4 +74,8 @@
 #define DAC_U_LIMIT_Pin GPIO_PIN_5
 #define DAC_U_LIMIT_GPIO_Port GPIOA
+#define BAT_I_SENSE_PLUS_Pin GPIO_PIN_6
+#define BAT_I_SENSE_PLUS_GPIO_Port GPIOA
+#define BAT_I_SENSE_MINUS_Pin GPIO_PIN_7
+#define BAT_I_SENSE_MINUS_GPIO_Port GPIOA
 #define POWER_4V_EN_Pin GPIO_PIN_15
 #define POWER_4V_EN_GPIO_Port GPIOF
Index: ctrl/firmware/Main/CubeMX/Core/Inc/stm32h7xx_it.h
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Inc/stm32h7xx_it.h	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Inc/stm32h7xx_it.h	(revision 108)
@@ -58,4 +58,5 @@
 void DMA1_Stream3_IRQHandler(void);
 void DMA1_Stream4_IRQHandler(void);
+void DMA1_Stream5_IRQHandler(void);
 void EXTI9_5_IRQHandler(void);
 void TIM3_IRQHandler(void);
Index: ctrl/firmware/Main/CubeMX/Core/Src/adc.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/adc.c	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Src/adc.c	(revision 108)
@@ -23,11 +23,99 @@
 /* USER CODE BEGIN 0 */
 
+volatile ADC2_data_t ADC2Data __attribute__((section(".AXI_RAM_4_DMA")));
 volatile ADC3_data_t ADC3Data __attribute__((section(".BKP_RAM_4_DMA")));
 
 /* USER CODE END 0 */
 
+ADC_HandleTypeDef hadc2;
 ADC_HandleTypeDef hadc3;
+DMA_HandleTypeDef hdma_adc2;
 DMA_HandleTypeDef hdma_adc3;
 
+/* ADC2 init function */
+void MX_ADC2_Init(void)
+{
+
+  /* USER CODE BEGIN ADC2_Init 0 */
+
+  // This ADC is used to sample current that flows on shunts during cell charge and during cell discharge via electronic load
+
+  /* USER CODE END ADC2_Init 0 */
+
+  ADC_ChannelConfTypeDef sConfig = {0};
+
+  /* USER CODE BEGIN ADC2_Init 1 */
+
+  /* USER CODE END ADC2_Init 1 */
+
+  /** Common config
+  */
+  hadc2.Instance = ADC2;
+  hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
+  hadc2.Init.Resolution = ADC_RESOLUTION_16B;
+  hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE;
+  hadc2.Init.EOCSelection = ADC_EOC_SEQ_CONV;
+  hadc2.Init.LowPowerAutoWait = DISABLE;
+  hadc2.Init.ContinuousConvMode = ENABLE;
+  hadc2.Init.NbrOfConversion = 2;
+  hadc2.Init.DiscontinuousConvMode = DISABLE;
+  hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
+  hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
+  hadc2.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_CIRCULAR;
+  hadc2.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
+  hadc2.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
+  hadc2.Init.OversamplingMode = ENABLE;
+  hadc2.Init.Oversampling.Ratio = 1024;
+  hadc2.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_10;
+  hadc2.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
+  hadc2.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
+  if (HAL_ADC_Init(&hadc2) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  /** Configure Regular Channel
+  */
+  sConfig.Channel = ADC_CHANNEL_3;
+  sConfig.Rank = ADC_REGULAR_RANK_1;
+  sConfig.SamplingTime = ADC_SAMPLETIME_810CYCLES_5;
+  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
+  sConfig.OffsetNumber = ADC_OFFSET_NONE;
+  sConfig.Offset = 0;
+  sConfig.OffsetSignedSaturation = DISABLE;
+  if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  /** Configure Regular Channel
+  */
+  sConfig.Channel = ADC_CHANNEL_4;
+  sConfig.Rank = ADC_REGULAR_RANK_2;
+  if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN ADC2_Init 2 */
+
+  HAL_Delay(100U);
+  if (HAL_OK != HAL_ADCEx_Calibration_Start(&hadc2, ADC_CALIB_OFFSET, ADC_DIFFERENTIAL_ENDED)) Error_Handler();
+  if (HAL_OK != HAL_ADCEx_Calibration_Start(&hadc2, ADC_CALIB_OFFSET_LINEARITY, ADC_DIFFERENTIAL_ENDED)) Error_Handler();
+  HAL_Delay(100U);
+
+  //if (HAL_OK != HAL_ADC_Start(&hadc3)) Error_Handler();
+  if (HAL_OK != HAL_ADC_Start_DMA(&hadc2, (uint32_t*)&ADC2Data, ADC2_CHANNELS)) Error_Handler();
+  __HAL_DMA_DISABLE_IT(&hdma_adc2, DMA_IT_HT);
+
+  uint16_t offset = 0;
+  for (int i = 0; i < 100; i++)
+  {
+
+  }
+
+
+  /* USER CODE END ADC2_Init 2 */
+
+}
 /* ADC3 init function */
 void MX_ADC3_Init(void)
@@ -122,5 +210,5 @@
   //if (HAL_OK != HAL_ADC_Start(&hadc3)) Error_Handler();
   if (HAL_OK != HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC3Data, ADC3_CHANNELS)) Error_Handler();
-  //__HAL_DMA_DISABLE_IT(&hdma_adc3, DMA_IT_HT);
+  __HAL_DMA_DISABLE_IT(&hdma_adc3, DMA_IT_HT);
 
 
@@ -133,5 +221,54 @@
 
   GPIO_InitTypeDef GPIO_InitStruct = {0};
-  if(adcHandle->Instance==ADC3)
+  if(adcHandle->Instance==ADC2)
+  {
+  /* USER CODE BEGIN ADC2_MspInit 0 */
+
+  /* USER CODE END ADC2_MspInit 0 */
+    /* ADC2 clock enable */
+    __HAL_RCC_ADC12_CLK_ENABLE();
+
+    __HAL_RCC_GPIOA_CLK_ENABLE();
+    __HAL_RCC_GPIOC_CLK_ENABLE();
+    /**ADC2 GPIO Configuration
+    PA6     ------> ADC2_INP3
+    PA7     ------> ADC2_INN3
+    PC4     ------> ADC2_INP4
+    PC5     ------> ADC2_INN4
+    */
+    GPIO_InitStruct.Pin = BAT_I_SENSE_PLUS_Pin|BAT_I_SENSE_MINUS_Pin;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+    GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+    /* ADC2 DMA Init */
+    /* ADC2 Init */
+    hdma_adc2.Instance = DMA1_Stream5;
+    hdma_adc2.Init.Request = DMA_REQUEST_ADC2;
+    hdma_adc2.Init.Direction = DMA_PERIPH_TO_MEMORY;
+    hdma_adc2.Init.PeriphInc = DMA_PINC_DISABLE;
+    hdma_adc2.Init.MemInc = DMA_MINC_ENABLE;
+    hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
+    hdma_adc2.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
+    hdma_adc2.Init.Mode = DMA_CIRCULAR;
+    hdma_adc2.Init.Priority = DMA_PRIORITY_VERY_HIGH;
+    hdma_adc2.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+    if (HAL_DMA_Init(&hdma_adc2) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc2);
+
+  /* USER CODE BEGIN ADC2_MspInit 1 */
+
+  /* USER CODE END ADC2_MspInit 1 */
+  }
+  else if(adcHandle->Instance==ADC3)
   {
   /* USER CODE BEGIN ADC3_MspInit 0 */
@@ -177,5 +314,29 @@
 {
 
-  if(adcHandle->Instance==ADC3)
+  if(adcHandle->Instance==ADC2)
+  {
+  /* USER CODE BEGIN ADC2_MspDeInit 0 */
+
+  /* USER CODE END ADC2_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_ADC12_CLK_DISABLE();
+
+    /**ADC2 GPIO Configuration
+    PA6     ------> ADC2_INP3
+    PA7     ------> ADC2_INN3
+    PC4     ------> ADC2_INP4
+    PC5     ------> ADC2_INN4
+    */
+    HAL_GPIO_DeInit(GPIOA, BAT_I_SENSE_PLUS_Pin|BAT_I_SENSE_MINUS_Pin);
+
+    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4|GPIO_PIN_5);
+
+    /* ADC2 DMA DeInit */
+    HAL_DMA_DeInit(adcHandle->DMA_Handle);
+  /* USER CODE BEGIN ADC2_MspDeInit 1 */
+
+  /* USER CODE END ADC2_MspDeInit 1 */
+  }
+  else if(adcHandle->Instance==ADC3)
   {
   /* USER CODE BEGIN ADC3_MspDeInit 0 */
Index: ctrl/firmware/Main/CubeMX/Core/Src/dma.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/dma.c	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Src/dma.c	(revision 108)
@@ -59,4 +59,7 @@
   HAL_NVIC_SetPriority(DMA1_Stream4_IRQn, 5, 0);
   HAL_NVIC_EnableIRQ(DMA1_Stream4_IRQn);
+  /* DMA1_Stream5_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 5, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
 
 }
Index: ctrl/firmware/Main/CubeMX/Core/Src/gpio.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/gpio.c	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Src/gpio.c	(revision 108)
@@ -97,8 +97,6 @@
   HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : PC13 PC1 PC2 PC3
-                           PC4 PC5 */
-  GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
-                          |GPIO_PIN_4|GPIO_PIN_5;
+  /*Configure GPIO pins : PC13 PC1 PC2 PC3 */
+  GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
   GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
@@ -118,9 +116,7 @@
 
   /*Configure GPIO pins : PA0 PA1 PA2 PA3
-                           PA6 PA7 PA9 PA10
-                           PA11 PA12 */
+                           PA9 PA10 PA11 PA12 */
   GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
-                          |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_9|GPIO_PIN_10
-                          |GPIO_PIN_11|GPIO_PIN_12;
+                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
   GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
Index: ctrl/firmware/Main/CubeMX/Core/Src/main.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/main.c	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Src/main.c	(revision 108)
@@ -150,4 +150,5 @@
   MX_DAC1_Init();
   MX_TIM1_Init();
+  MX_ADC2_Init();
   /* USER CODE BEGIN 2 */
 
@@ -253,6 +254,15 @@
   /** Initializes the peripherals clock
   */
-  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USART10
+  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_SDMMC
+                              |RCC_PERIPHCLK_SPI2|RCC_PERIPHCLK_USART10
                               |RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_USART3;
+  PeriphClkInitStruct.PLL2.PLL2M = 2;
+  PeriphClkInitStruct.PLL2.PLL2N = 20;
+  PeriphClkInitStruct.PLL2.PLL2P = 2;
+  PeriphClkInitStruct.PLL2.PLL2Q = 11;
+  PeriphClkInitStruct.PLL2.PLL2R = 5;
+  PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3;
+  PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE;
+  PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
   PeriphClkInitStruct.PLL3.PLL3M = 25;
   PeriphClkInitStruct.PLL3.PLL3N = 180;
@@ -263,4 +273,6 @@
   PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM;
   PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
+  PeriphClkInitStruct.SdmmcClockSelection = RCC_SDMMCCLKSOURCE_PLL2;
+  PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL2;
   PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_PLL3;
   PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16910CLKSOURCE_PLL3;
Index: ctrl/firmware/Main/CubeMX/Core/Src/sdmmc.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/sdmmc.c	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Src/sdmmc.c	(revision 108)
@@ -57,5 +57,4 @@
 
   GPIO_InitTypeDef GPIO_InitStruct = {0};
-  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
   if(sdHandle->Instance==SDMMC1)
   {
@@ -63,14 +62,4 @@
 
   /* USER CODE END SDMMC1_MspInit 0 */
-
-  /** Initializes the peripherals clock
-  */
-    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SDMMC;
-    PeriphClkInitStruct.SdmmcClockSelection = RCC_SDMMCCLKSOURCE_PLL;
-    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
-    {
-      Error_Handler();
-    }
-
     /* SDMMC1 clock enable */
     __HAL_RCC_SDMMC1_CLK_ENABLE();
Index: ctrl/firmware/Main/CubeMX/Core/Src/spi.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/spi.c	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Src/spi.c	(revision 108)
@@ -129,21 +129,4 @@
   /* USER CODE END SPI2_MspInit 0 */
 
-  /** Initializes the peripherals clock
-  */
-    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI2;
-    PeriphClkInitStruct.PLL2.PLL2M = 2;
-    PeriphClkInitStruct.PLL2.PLL2N = 20;
-    PeriphClkInitStruct.PLL2.PLL2P = 2;
-    PeriphClkInitStruct.PLL2.PLL2Q = 11;
-    PeriphClkInitStruct.PLL2.PLL2R = 10;
-    PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3;
-    PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE;
-    PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
-    PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL2;
-    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
-    {
-      Error_Handler();
-    }
-
     /* SPI2 clock enable */
     __HAL_RCC_SPI2_CLK_ENABLE();
Index: ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c	(revision 107)
+++ ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c	(revision 108)
@@ -61,4 +61,5 @@
 
 /* External variables --------------------------------------------------------*/
+extern DMA_HandleTypeDef hdma_adc2;
 extern DMA_HandleTypeDef hdma_adc3;
 extern SD_HandleTypeDef hsd1;
@@ -250,4 +251,18 @@
 
 /**
+  * @brief This function handles DMA1 stream5 global interrupt.
+  */
+void DMA1_Stream5_IRQHandler(void)
+{
+  /* USER CODE BEGIN DMA1_Stream5_IRQn 0 */
+
+  /* USER CODE END DMA1_Stream5_IRQn 0 */
+  HAL_DMA_IRQHandler(&hdma_adc2);
+  /* USER CODE BEGIN DMA1_Stream5_IRQn 1 */
+
+  /* USER CODE END DMA1_Stream5_IRQn 1 */
+}
+
+/**
   * @brief This function handles EXTI line[9:5] interrupts.
   */
Index: ctrl/firmware/Main/CubeMX/charger.ioc
===================================================================
--- ctrl/firmware/Main/CubeMX/charger.ioc	(revision 107)
+++ ctrl/firmware/Main/CubeMX/charger.ioc	(revision 108)
@@ -1,7 +1,31 @@
 #MicroXplorer Configuration settings - do not modify
+ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_3
+ADC2.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_4
+ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV256
+ADC2.ContinuousConvMode=ENABLE
+ADC2.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR
+ADC2.EOCSelection=ADC_EOC_SEQ_CONV
+ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SingleDiff-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,NbrOfConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SingleDiff-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,OffsetSignedSaturation-2\#ChannelRegularConversion,ContinuousConvMode,EOCSelection,Overrun,ConversionDataManagement,OversamplingMode,RightBitShift,Ratio,ClockPrescaler
+ADC2.NbrOfConversion=2
+ADC2.NbrOfConversionFlag=1
+ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
+ADC2.OffsetNumber-2\#ChannelRegularConversion=ADC_OFFSET_NONE
+ADC2.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
+ADC2.OffsetSignedSaturation-2\#ChannelRegularConversion=DISABLE
+ADC2.Overrun=ADC_OVR_DATA_OVERWRITTEN
+ADC2.OversamplingMode=ENABLE
+ADC2.Rank-0\#ChannelRegularConversion=1
+ADC2.Rank-2\#ChannelRegularConversion=2
+ADC2.Ratio=1024
+ADC2.RightBitShift=ADC_RIGHTBITSHIFT_10
+ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_810CYCLES_5
+ADC2.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_810CYCLES_5
+ADC2.SingleDiff-0\#ChannelRegularConversion=ADC_DIFFERENTIAL_ENDED
+ADC2.SingleDiff-2\#ChannelRegularConversion=ADC_DIFFERENTIAL_ENDED
 ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
 ADC3.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_VBAT
 ADC3.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR
 ADC3.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_VREFINT
+ADC3.ClockPrescaler=ADC_CLOCK_ASYNC_DIV256
 ADC3.ClockPrescalerADC3=ADC_CLOCK_ASYNC_DIV256
 ADC3.ContinuousConvMode=ENABLE
@@ -9,5 +33,5 @@
 ADC3.DMAContinuousRequests=ENABLE
 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,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,OffsetSign-2\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,OffsetSign-4\#ChannelRegularConversion
+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,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,OffsetSign-2\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,OffsetSign-4\#ChannelRegularConversion,ClockPrescaler
 ADC3.NbrOfConversion=4
 ADC3.NbrOfConversionFlag=1
@@ -76,4 +100,22 @@
 DTS.RefClock=DTS_REFCLKSEL_LSE
 DTS.SamplingTime=DTS_SMP_TIME_15_CYCLE
+Dma.ADC2.5.Direction=DMA_PERIPH_TO_MEMORY
+Dma.ADC2.5.EventEnable=DISABLE
+Dma.ADC2.5.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.ADC2.5.Instance=DMA1_Stream5
+Dma.ADC2.5.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
+Dma.ADC2.5.MemInc=DMA_MINC_ENABLE
+Dma.ADC2.5.Mode=DMA_CIRCULAR
+Dma.ADC2.5.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
+Dma.ADC2.5.PeriphInc=DMA_PINC_DISABLE
+Dma.ADC2.5.Polarity=HAL_DMAMUX_REQ_GEN_RISING
+Dma.ADC2.5.Priority=DMA_PRIORITY_VERY_HIGH
+Dma.ADC2.5.RequestNumber=1
+Dma.ADC2.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
+Dma.ADC2.5.SignalID=NONE
+Dma.ADC2.5.SyncEnable=DISABLE
+Dma.ADC2.5.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
+Dma.ADC2.5.SyncRequestNumber=1
+Dma.ADC2.5.SyncSignalID=NONE
 Dma.Request0=SPI4_TX
 Dma.Request1=USART3_RX
@@ -81,5 +123,6 @@
 Dma.Request3=SPI2_RX
 Dma.Request4=SPI2_TX
-Dma.RequestsNb=5
+Dma.Request5=ADC2
+Dma.RequestsNb=6
 Dma.SPI2_RX.3.Direction=DMA_PERIPH_TO_MEMORY
 Dma.SPI2_RX.3.EventEnable=DISABLE
@@ -275,32 +318,33 @@
 Mcu.CPN=STM32H723ZET6
 Mcu.Family=STM32H7
-Mcu.IP0=ADC3
-Mcu.IP1=BDMA
-Mcu.IP10=I2C2
-Mcu.IP11=MEMORYMAP
-Mcu.IP12=NVIC
-Mcu.IP13=RCC
-Mcu.IP14=RTC
-Mcu.IP15=SDMMC1
-Mcu.IP16=SPI2
-Mcu.IP17=SPI4
-Mcu.IP18=SYS
-Mcu.IP19=TIM1
-Mcu.IP2=CORTEX_M7
-Mcu.IP20=TIM3
-Mcu.IP21=TIM6
-Mcu.IP22=TIM8
-Mcu.IP23=USART2
-Mcu.IP24=USART3
-Mcu.IP25=USART10
-Mcu.IP26=VREFBUF
-Mcu.IP3=DAC1
-Mcu.IP4=DEBUG
-Mcu.IP5=DMA
-Mcu.IP6=DTS
-Mcu.IP7=FATFS
-Mcu.IP8=FREERTOS
-Mcu.IP9=I2C1
-Mcu.IPNb=27
+Mcu.IP0=ADC2
+Mcu.IP1=ADC3
+Mcu.IP10=I2C1
+Mcu.IP11=I2C2
+Mcu.IP12=MEMORYMAP
+Mcu.IP13=NVIC
+Mcu.IP14=RCC
+Mcu.IP15=RTC
+Mcu.IP16=SDMMC1
+Mcu.IP17=SPI2
+Mcu.IP18=SPI4
+Mcu.IP19=SYS
+Mcu.IP2=BDMA
+Mcu.IP20=TIM1
+Mcu.IP21=TIM3
+Mcu.IP22=TIM6
+Mcu.IP23=TIM8
+Mcu.IP24=USART2
+Mcu.IP25=USART3
+Mcu.IP26=USART10
+Mcu.IP27=VREFBUF
+Mcu.IP3=CORTEX_M7
+Mcu.IP4=DAC1
+Mcu.IP5=DEBUG
+Mcu.IP6=DMA
+Mcu.IP7=DTS
+Mcu.IP8=FATFS
+Mcu.IP9=FREERTOS
+Mcu.IPNb=28
 Mcu.Name=STM32H723ZETx
 Mcu.Package=LQFP144
@@ -309,79 +353,83 @@
 Mcu.Pin10=PA4
 Mcu.Pin11=PA5
-Mcu.Pin12=PF15
-Mcu.Pin13=PG0
-Mcu.Pin14=PG1
-Mcu.Pin15=PE7
-Mcu.Pin16=PE8
-Mcu.Pin17=PE9
-Mcu.Pin18=PE11
-Mcu.Pin19=PE12
+Mcu.Pin12=PA6
+Mcu.Pin13=PA7
+Mcu.Pin14=PC4
+Mcu.Pin15=PC5
+Mcu.Pin16=PF15
+Mcu.Pin17=PG0
+Mcu.Pin18=PG1
+Mcu.Pin19=PE7
 Mcu.Pin2=PE6
-Mcu.Pin20=PE13
-Mcu.Pin21=PE14
-Mcu.Pin22=PE15
-Mcu.Pin23=PB10
-Mcu.Pin24=PB14
-Mcu.Pin25=PB15
-Mcu.Pin26=PD8
-Mcu.Pin27=PD9
-Mcu.Pin28=PD10
-Mcu.Pin29=PD11
+Mcu.Pin20=PE8
+Mcu.Pin21=PE9
+Mcu.Pin22=PE11
+Mcu.Pin23=PE12
+Mcu.Pin24=PE13
+Mcu.Pin25=PE14
+Mcu.Pin26=PE15
+Mcu.Pin27=PB10
+Mcu.Pin28=PB14
+Mcu.Pin29=PB15
 Mcu.Pin3=PC14-OSC32_IN
-Mcu.Pin30=PD12
-Mcu.Pin31=PD13
-Mcu.Pin32=PC6
-Mcu.Pin33=PC7
-Mcu.Pin34=PC8
-Mcu.Pin35=PC9
-Mcu.Pin36=PA8
-Mcu.Pin37=PA13(JTMS/SWDIO)
-Mcu.Pin38=PA14(JTCK/SWCLK)
-Mcu.Pin39=PA15(JTDI)
+Mcu.Pin30=PD8
+Mcu.Pin31=PD9
+Mcu.Pin32=PD10
+Mcu.Pin33=PD11
+Mcu.Pin34=PD12
+Mcu.Pin35=PD13
+Mcu.Pin36=PC6
+Mcu.Pin37=PC7
+Mcu.Pin38=PC8
+Mcu.Pin39=PC9
 Mcu.Pin4=PC15-OSC32_OUT
-Mcu.Pin40=PC10
-Mcu.Pin41=PC11
-Mcu.Pin42=PC12
-Mcu.Pin43=PD2
-Mcu.Pin44=PD3
-Mcu.Pin45=PD4
-Mcu.Pin46=PD5
-Mcu.Pin47=PD6
-Mcu.Pin48=PD7
-Mcu.Pin49=PG9
+Mcu.Pin40=PA8
+Mcu.Pin41=PA13(JTMS/SWDIO)
+Mcu.Pin42=PA14(JTCK/SWCLK)
+Mcu.Pin43=PA15(JTDI)
+Mcu.Pin44=PC10
+Mcu.Pin45=PC11
+Mcu.Pin46=PC12
+Mcu.Pin47=PD2
+Mcu.Pin48=PD3
+Mcu.Pin49=PD4
 Mcu.Pin5=PF0
-Mcu.Pin50=PG10
-Mcu.Pin51=PG11
-Mcu.Pin52=PG12
-Mcu.Pin53=PG13
-Mcu.Pin54=PG14
-Mcu.Pin55=PG15
-Mcu.Pin56=PB4(NJTRST)
-Mcu.Pin57=PB6
-Mcu.Pin58=PB7
-Mcu.Pin59=PB8
+Mcu.Pin50=PD5
+Mcu.Pin51=PD6
+Mcu.Pin52=PD7
+Mcu.Pin53=PG9
+Mcu.Pin54=PG10
+Mcu.Pin55=PG11
+Mcu.Pin56=PG12
+Mcu.Pin57=PG13
+Mcu.Pin58=PG14
+Mcu.Pin59=PG15
 Mcu.Pin6=PF1
-Mcu.Pin60=PB9
-Mcu.Pin61=VP_ADC3_TempSens_Input
-Mcu.Pin62=VP_ADC3_Vref_Input
-Mcu.Pin63=VP_ADC3_Vbat_Input
-Mcu.Pin64=VP_DTS_VS-DTS
-Mcu.Pin65=VP_FATFS_VS_SDIO
-Mcu.Pin66=VP_FREERTOS_VS_CMSIS_V2
-Mcu.Pin67=VP_RTC_VS_RTC_Activate
-Mcu.Pin68=VP_RTC_VS_RTC_Calendar
-Mcu.Pin69=VP_SYS_VS_tim7
+Mcu.Pin60=PB4(NJTRST)
+Mcu.Pin61=PB6
+Mcu.Pin62=PB7
+Mcu.Pin63=PB8
+Mcu.Pin64=PB9
+Mcu.Pin65=VP_ADC3_TempSens_Input
+Mcu.Pin66=VP_ADC3_Vref_Input
+Mcu.Pin67=VP_ADC3_Vbat_Input
+Mcu.Pin68=VP_DTS_VS-DTS
+Mcu.Pin69=VP_FATFS_VS_SDIO
 Mcu.Pin7=PH0-OSC_IN
-Mcu.Pin70=VP_TIM1_VS_ClockSourceINT
-Mcu.Pin71=VP_TIM3_VS_ClockSourceINT
-Mcu.Pin72=VP_TIM6_VS_ClockSourceINT
-Mcu.Pin73=VP_TIM8_VS_ControllerModeReset
-Mcu.Pin74=VP_TIM8_VS_ClockSourceINT
-Mcu.Pin75=VP_VREFBUF_V_VREFBUF
-Mcu.Pin76=VP_MEMORYMAP_VS_MEMORYMAP
-Mcu.Pin77=VP_STMicroelectronics.X-CUBE-EEPRMA1_VS_BoardOoPartJjEEPROM_5.1.0_5.1.0
+Mcu.Pin70=VP_FREERTOS_VS_CMSIS_V2
+Mcu.Pin71=VP_RTC_VS_RTC_Activate
+Mcu.Pin72=VP_RTC_VS_RTC_Calendar
+Mcu.Pin73=VP_SYS_VS_tim7
+Mcu.Pin74=VP_TIM1_VS_ClockSourceINT
+Mcu.Pin75=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin76=VP_TIM6_VS_ClockSourceINT
+Mcu.Pin77=VP_TIM8_VS_ControllerModeReset
+Mcu.Pin78=VP_TIM8_VS_ClockSourceINT
+Mcu.Pin79=VP_VREFBUF_V_VREFBUF
 Mcu.Pin8=PH1-OSC_OUT
+Mcu.Pin80=VP_MEMORYMAP_VS_MEMORYMAP
+Mcu.Pin81=VP_STMicroelectronics.X-CUBE-EEPRMA1_VS_BoardOoPartJjEEPROM_5.1.0_5.1.0
 Mcu.Pin9=PC0
-Mcu.PinsNb=78
+Mcu.PinsNb=82
 Mcu.ThirdParty0=STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0
 Mcu.ThirdParty1=STMicroelectronics.X-CUBE-EEPRMA1.5.1.0
@@ -398,4 +446,5 @@
 NVIC.DMA1_Stream3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
 NVIC.DMA1_Stream4_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
+NVIC.DMA1_Stream5_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
 NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
 NVIC.EXTI9_5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
@@ -439,4 +488,10 @@
 PA5.Locked=true
 PA5.Signal=COMP_DAC12_group
+PA6.GPIOParameters=GPIO_Label
+PA6.GPIO_Label=BAT_I_SENSE_PLUS
+PA6.Signal=ADCx_INP3
+PA7.GPIOParameters=GPIO_Label
+PA7.GPIO_Label=BAT_I_SENSE_MINUS
+PA7.Signal=ADCx_INN3
 PA8.GPIOParameters=GPIO_PuPd,GPIO_Label
 PA8.GPIO_Label=SD_DETECT
@@ -499,4 +554,6 @@
 PC15-OSC32_OUT.Mode=LSE-External-Oscillator
 PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
+PC4.Signal=ADCx_INP4
+PC5.Signal=ADCx_INN4
 PC6.GPIOParameters=GPIO_PuPd,GPIO_Label
 PC6.GPIO_Label=FAN_TACHO
@@ -691,94 +748,90 @@
 ProjectManager.UAScriptBeforePath=
 ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-MX_BDMA_Init-BDMA-false-HAL-true,4-MX_RTC_Init-RTC-false-HAL-true,5-MX_SPI4_Init-SPI4-false-HAL-true,6-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,7-SystemClock_Config-RCC-false-HAL-false,8-MX_FATFS_Init-FATFS-false-HAL-false,9-MX_TIM8_Init-TIM8-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_USART2_UART_Init-USART2-false-HAL-true,12-MX_USART10_UART_Init-USART10-false-HAL-true,13-MX_TIM6_Init-TIM6-false-HAL-true,14-MX_I2C2_Init-I2C2-false-HAL-true,15-MX_ADC3_Init-ADC3-false-HAL-true,16-MX_TIM3_Init-TIM3-false-HAL-true,17-MX_I2C1_Init-I2C1-false-HAL-true,18-MX_USART3_UART_Init-USART3-false-HAL-true,19-MX_DTS_Init-DTS-false-HAL-true,20-MX_DAC1_Init-DAC1-false-HAL-true,21-MX_TIM1_Init-TIM1-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true,0-MX_VREFBUF_Init-VREFBUF-false-HAL-true
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-MX_BDMA_Init-BDMA-false-HAL-true,4-MX_RTC_Init-RTC-false-HAL-true,5-MX_SPI4_Init-SPI4-false-HAL-true,6-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,7-SystemClock_Config-RCC-false-HAL-false,8-MX_FATFS_Init-FATFS-false-HAL-false,9-MX_TIM8_Init-TIM8-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_USART2_UART_Init-USART2-false-HAL-true,12-MX_USART10_UART_Init-USART10-false-HAL-true,13-MX_TIM6_Init-TIM6-false-HAL-true,14-MX_I2C2_Init-I2C2-false-HAL-true,15-MX_ADC3_Init-ADC3-false-HAL-true,16-MX_TIM3_Init-TIM3-false-HAL-true,17-MX_I2C1_Init-I2C1-false-HAL-true,18-MX_USART3_UART_Init-USART3-false-HAL-true,19-MX_DTS_Init-DTS-false-HAL-true,20-MX_DAC1_Init-DAC1-false-HAL-true,21-MX_TIM1_Init-TIM1-false-HAL-true,22-MX_ADC2_Init-ADC2-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true,0-MX_VREFBUF_Init-VREFBUF-false-HAL-true
 RCC.ADCCLockSelection=RCC_ADCCLKSOURCE_PLL3
 RCC.ADCFreq_Value=60000000
-RCC.AHB12Freq_Value=275000000
-RCC.AHB4Freq_Value=275000000
-RCC.APB1Freq_Value=137500000
-RCC.APB2Freq_Value=137500000
-RCC.APB3Freq_Value=137500000
-RCC.APB4Freq_Value=137500000
-RCC.AXIClockFreq_Value=275000000
+RCC.AHB12Freq_Value=100000000
+RCC.AHB4Freq_Value=100000000
+RCC.APB1Freq_Value=100000000
+RCC.APB2Freq_Value=100000000
+RCC.APB3Freq_Value=100000000
+RCC.APB4Freq_Value=100000000
+RCC.AXIClockFreq_Value=100000000
 RCC.CECFreq_Value=32000
 RCC.CKPERFreq_Value=64000000
-RCC.CortexFreq_Value=275000000
-RCC.CpuClockFreq_Value=275000000
-RCC.D1CPREFreq_Value=275000000
-RCC.D1PPRE=RCC_APB3_DIV2
-RCC.D2PPRE1=RCC_APB1_DIV2
-RCC.D2PPRE2=RCC_APB2_DIV2
-RCC.D3PPRE=RCC_APB4_DIV2
-RCC.DFSDMACLkFreq_Value=275000000
-RCC.DFSDMFreq_Value=137500000
-RCC.DIVM1=2
+RCC.CortexFreq_Value=100000000
+RCC.CpuClockFreq_Value=100000000
+RCC.D1CPREFreq_Value=100000000
+RCC.DFSDMACLkFreq_Value=100000000
+RCC.DFSDMFreq_Value=100000000
+RCC.DIVM1=5
 RCC.DIVM2=2
 RCC.DIVM3=25
-RCC.DIVN1=44
+RCC.DIVN1=40
 RCC.DIVN2=20
 RCC.DIVN3=180
-RCC.DIVP1Freq_Value=275000000
+RCC.DIVP1Freq_Value=100000000
 RCC.DIVP2Freq_Value=125000000
 RCC.DIVP3Freq_Value=90000000
-RCC.DIVQ1Freq_Value=275000000
+RCC.DIVQ1Freq_Value=100000000
 RCC.DIVQ2=11
 RCC.DIVQ2Freq_Value=22727272.727272727
 RCC.DIVQ3=8
 RCC.DIVQ3Freq_Value=22500000
-RCC.DIVR1Freq_Value=275000000
+RCC.DIVR1Freq_Value=100000000
 RCC.DIVR2=5
 RCC.DIVR2Freq_Value=50000000
 RCC.DIVR3=3
 RCC.DIVR3Freq_Value=60000000
-RCC.FDCANFreq_Value=275000000
-RCC.FMCFreq_Value=275000000
+RCC.FDCANFreq_Value=100000000
+RCC.FMCFreq_Value=100000000
 RCC.FamilyName=M
-RCC.HCLK3ClockFreq_Value=275000000
-RCC.HCLKFreq_Value=275000000
+RCC.HCLK3ClockFreq_Value=100000000
+RCC.HCLKFreq_Value=100000000
 RCC.I2C123CLockSelection=RCC_I2C1235CLKSOURCE_HSI
 RCC.I2C123Freq_Value=64000000
-RCC.I2C4Freq_Value=137500000
-RCC.IPParameters=ADCCLockSelection,ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,I2C123CLockSelection,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL2_VCI_Range-AdvancedSettings,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMC1CLockSelection,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123CLockSelection,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Spi45ClockSelection,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16CLockSelection,USART16Freq_Value,USART234578CLockSelection,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
-RCC.LPTIM1Freq_Value=137500000
-RCC.LPTIM2Freq_Value=137500000
-RCC.LPTIM345Freq_Value=137500000
-RCC.LPUART1Freq_Value=137500000
+RCC.I2C4Freq_Value=100000000
+RCC.IPParameters=ADCCLockSelection,ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,I2C123CLockSelection,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL2_VCI_Range-AdvancedSettings,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMC1CLockSelection,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123CLockSelection,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Spi45ClockSelection,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16CLockSelection,USART16Freq_Value,USART234578CLockSelection,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
+RCC.LPTIM1Freq_Value=100000000
+RCC.LPTIM2Freq_Value=100000000
+RCC.LPTIM345Freq_Value=100000000
+RCC.LPUART1Freq_Value=100000000
 RCC.LTDCFreq_Value=60000000
 RCC.MCO1PinFreq_Value=64000000
-RCC.MCO2PinFreq_Value=275000000
+RCC.MCO2PinFreq_Value=100000000
 RCC.PLL2FRACN=0
 RCC.PLL2_VCI_Range-AdvancedSettings=RCC_PLL2VCIRANGE_3
 RCC.PLLFRACN=0
 RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
-RCC.QSPIFreq_Value=275000000
+RCC.QSPIFreq_Value=100000000
 RCC.RNGFreq_Value=48000000
 RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
 RCC.RTCFreq_Value=32768
-RCC.SAI1Freq_Value=275000000
-RCC.SAI4AFreq_Value=275000000
-RCC.SAI4BFreq_Value=275000000
+RCC.SAI1Freq_Value=100000000
+RCC.SAI4AFreq_Value=100000000
+RCC.SAI4BFreq_Value=100000000
 RCC.SDMMC1CLockSelection=RCC_SDMMCCLKSOURCE_PLL2
 RCC.SDMMCFreq_Value=50000000
-RCC.SPDIFRXFreq_Value=275000000
+RCC.SPDIFRXFreq_Value=100000000
 RCC.SPI123CLockSelection=RCC_SPI123CLKSOURCE_PLL2
 RCC.SPI123Freq_Value=125000000
 RCC.SPI45Freq_Value=25000000
-RCC.SPI6Freq_Value=137500000
-RCC.SWPMI1Freq_Value=137500000
-RCC.SYSCLKFreq_VALUE=275000000
+RCC.SPI6Freq_Value=100000000
+RCC.SWPMI1Freq_Value=100000000
+RCC.SYSCLKFreq_VALUE=100000000
 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
 RCC.Spi45ClockSelection=RCC_SPI45CLKSOURCE_HSE
-RCC.Tim1OutputFreq_Value=275000000
-RCC.Tim2OutputFreq_Value=275000000
-RCC.TraceFreq_Value=275000000
+RCC.Tim1OutputFreq_Value=100000000
+RCC.Tim2OutputFreq_Value=100000000
+RCC.TraceFreq_Value=100000000
 RCC.USART16CLockSelection=RCC_USART16910CLKSOURCE_PLL3
 RCC.USART16Freq_Value=22500000
 RCC.USART234578CLockSelection=RCC_USART234578CLKSOURCE_PLL3
 RCC.USART234578Freq_Value=22500000
-RCC.USBFreq_Value=275000000
-RCC.VCO1OutputFreq_Value=550000000
+RCC.USBFreq_Value=100000000
+RCC.VCO1OutputFreq_Value=200000000
 RCC.VCO2OutputFreq_Value=250000000
 RCC.VCO3OutputFreq_Value=180000000
-RCC.VCOInput1Freq_Value=12500000
+RCC.VCOInput1Freq_Value=5000000
 RCC.VCOInput2Freq_Value=12500000
 RCC.VCOInput3Freq_Value=1000000
@@ -791,6 +844,14 @@
 SDMMC1.HardwareFlowControl=SDMMC_HARDWARE_FLOW_CONTROL_ENABLE
 SDMMC1.IPParameters=ClockPowerSave,HardwareFlowControl,ClockDiv
+SH.ADCx_INN3.0=ADC2_INN3,IN3-Differential
+SH.ADCx_INN3.ConfNb=1
+SH.ADCx_INN4.0=ADC2_INN4,IN4-Differential
+SH.ADCx_INN4.ConfNb=1
 SH.ADCx_INP10.0=ADC3_INP10,IN10-Single-Ended
 SH.ADCx_INP10.ConfNb=1
+SH.ADCx_INP3.0=ADC2_INP3,IN3-Differential
+SH.ADCx_INP3.ConfNb=1
+SH.ADCx_INP4.0=ADC2_INP4,IN4-Differential
+SH.ADCx_INP4.ConfNb=1
 SH.COMP_DAC11_group.0=DAC1_OUT1,DAC_OUT1
 SH.COMP_DAC11_group.ConfNb=1
