Index: ctrl/firmware/Main/CubeMX/charger.ioc
===================================================================
--- ctrl/firmware/Main/CubeMX/charger.ioc	(revision 93)
+++ ctrl/firmware/Main/CubeMX/charger.ioc	(revision 94)
@@ -1,34 +1,20 @@
 #MicroXplorer Configuration settings - do not modify
-ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_VBAT
-ADC3.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_VREFINT
-ADC3.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR
-ADC3.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_10
+ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
 ADC3.ClockPrescalerADC3=ADC_CLOCK_ASYNC_DIV256
 ADC3.ContinuousConvMode=ENABLE
+ADC3.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR
 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,RightBitShift,ClockPrescalerADC3,Ratio,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-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,OffsetSign-3\#ChannelRegularConversion,NbrOfConversion
-ADC3.NbrOfConversion=4
+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.NbrOfConversionFlag=1
 ADC3.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
-ADC3.OffsetNumber-1\#ChannelRegularConversion=ADC_OFFSET_NONE
-ADC3.OffsetNumber-2\#ChannelRegularConversion=ADC_OFFSET_NONE
-ADC3.OffsetNumber-3\#ChannelRegularConversion=ADC_OFFSET_NONE
 ADC3.OffsetSign-0\#ChannelRegularConversion=ADC3_OFFSET_SIGN_NEGATIVE
-ADC3.OffsetSign-1\#ChannelRegularConversion=ADC3_OFFSET_SIGN_NEGATIVE
-ADC3.OffsetSign-2\#ChannelRegularConversion=ADC3_OFFSET_SIGN_NEGATIVE
-ADC3.OffsetSign-3\#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.Rank-2\#ChannelRegularConversion=3
-ADC3.Rank-3\#ChannelRegularConversion=4
 ADC3.Ratio=ADC3_OVERSAMPLING_RATIO_256
-ADC3.RightBitShift=ADC_RIGHTBITSHIFT_11
+ADC3.RightBitShift=ADC_RIGHTBITSHIFT_8
 ADC3.SamplingTime-0\#ChannelRegularConversion=ADC3_SAMPLETIME_640CYCLES_5
-ADC3.SamplingTime-1\#ChannelRegularConversion=ADC3_SAMPLETIME_640CYCLES_5
-ADC3.SamplingTime-2\#ChannelRegularConversion=ADC3_SAMPLETIME_640CYCLES_5
-ADC3.SamplingTime-3\#ChannelRegularConversion=ADC3_SAMPLETIME_2CYCLES_5
 Bdma.ADC3.0.Direction=DMA_PERIPH_TO_MEMORY
 Bdma.ADC3.0.EventEnable=DISABLE
@@ -270,19 +256,19 @@
 Mcu.IP0=ADC3
 Mcu.IP1=BDMA
-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.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.IP2=CORTEX_M7
-Mcu.IP20=TIM8
-Mcu.IP21=USART2
-Mcu.IP22=USART3
-Mcu.IP23=USART10
+Mcu.IP20=USART2
+Mcu.IP21=USART3
+Mcu.IP22=USART10
+Mcu.IP23=VREFBUF
 Mcu.IP3=DEBUG
 Mcu.IP4=DMA
@@ -291,5 +277,5 @@
 Mcu.IP7=I2C1
 Mcu.IP8=I2C2
-Mcu.IP9=MDMA
+Mcu.IP9=MEMORYMAP
 Mcu.IPNb=24
 Mcu.Name=STM32H723ZETx
@@ -348,23 +334,21 @@
 Mcu.Pin55=PB8
 Mcu.Pin56=PB9
-Mcu.Pin57=VP_ADC3_TempSens_Input
-Mcu.Pin58=VP_ADC3_Vref_Input
-Mcu.Pin59=VP_ADC3_Vbat_Input
+Mcu.Pin57=VP_FATFS_VS_SDIO
+Mcu.Pin58=VP_FREERTOS_VS_CMSIS_V2
+Mcu.Pin59=VP_RTC_VS_RTC_Activate
 Mcu.Pin6=PF1
-Mcu.Pin60=VP_FATFS_VS_SDIO
-Mcu.Pin61=VP_FREERTOS_VS_CMSIS_V2
-Mcu.Pin62=VP_RTC_VS_RTC_Activate
-Mcu.Pin63=VP_RTC_VS_RTC_Calendar
-Mcu.Pin64=VP_SYS_VS_tim7
-Mcu.Pin65=VP_TIM3_VS_ClockSourceINT
-Mcu.Pin66=VP_TIM6_VS_ClockSourceINT
-Mcu.Pin67=VP_TIM8_VS_ControllerModeReset
-Mcu.Pin68=VP_TIM8_VS_ClockSourceINT
-Mcu.Pin69=VP_MEMORYMAP_VS_MEMORYMAP
+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.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=71
+Mcu.PinsNb=69
 Mcu.ThirdParty0=STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0
 Mcu.ThirdParty1=STMicroelectronics.X-CUBE-EEPRMA1.5.1.0
@@ -372,31 +356,4 @@
 Mcu.UserConstants=
 Mcu.UserName=STM32H723ZETx
-Mdma.MDMA_Channel0.Request0=SDMMC1_END_DATA
-Mdma.MDMA_Channel0.RequestsNb=1
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.BlockCount=4
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.BlockDataLength=512
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.BufferTransferLength=2048
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.CircularMode=MDMA_LINEAR_LIST
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.DataAlignment=MDMA_DATAALIGN_PACKENABLE
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.DestBlockAddressOffset=0
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.DestBurst=MDMA_DEST_BURST_4BEATS
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.DestDataSize=MDMA_DEST_DATASIZE_WORD
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.DestinationInc=MDMA_DEST_INC_WORD
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.DstAddress=0
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.Endianness=MDMA_LITTLE_ENDIANNESS_PRESERVE
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.Instance=MDMA_Channel0
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.MaskAddress=0
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.MaskData=0
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.Priority=MDMA_PRIORITY_HIGH
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.Rank=First
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.RequestParameters=Instance,CircularMode,TransferTriggerMode,Priority,Endianness,SourceInc,DestinationInc,SourceDataSize,DestDataSize,DataAlignment,BufferTransferLength,SourceBurst,DestBurst,SourceBlockAddressOffset,DestBlockAddressOffset,MaskAddress,MaskData,SrcAddress,DstAddress,BlockDataLength,BlockCount,Rank
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.SourceBlockAddressOffset=0
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.SourceBurst=MDMA_SOURCE_BURST_4BEATS
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.SourceDataSize=MDMA_SRC_DATASIZE_WORD
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.SourceInc=MDMA_SRC_INC_WORD
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.SrcAddress=0
-Mdma.MDMA_Channel0.SDMMC1_END_DATA.0.TransferTriggerMode=MDMA_BUFFER_TRANSFER
-Mdma.RequestSet0=MDMA_Channel0
-Mdma.RequestSetsNb=1
 MxCube.Version=6.13.0
 MxDb.Version=DB.6.0.130
@@ -412,5 +369,4 @@
 NVIC.ForceEnableDMAVector=true
 NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
-NVIC.MDMA_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
 NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
 NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
@@ -686,5 +642,5 @@
 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_MDMA_Init-MDMA-false-HAL-true,4-MX_BDMA_Init-BDMA-false-HAL-true,5-MX_RTC_Init-RTC-false-HAL-true,6-MX_SPI4_Init-SPI4-false-HAL-true,7-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,8-MX_USART3_UART_Init-USART3-false-HAL-true,9-SystemClock_Config-RCC-false-HAL-false,10-MX_FATFS_Init-FATFS-false-HAL-false,11-MX_TIM8_Init-TIM8-false-HAL-true,12-MX_SPI2_Init-SPI2-false-HAL-true,13-MX_USART2_UART_Init-USART2-false-HAL-true,14-MX_USART10_UART_Init-USART10-false-HAL-true,15-MX_TIM6_Init-TIM6-false-HAL-true,16-MX_I2C2_Init-I2C2-false-HAL-true,17-MX_ADC3_Init-ADC3-false-HAL-true,18-MX_I2C1_Init-I2C1-false-HAL-true,19-MX_TIM3_Init-TIM3-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-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,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
@@ -861,10 +817,4 @@
 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_ADC3_Vbat_Input.Mode=IN-Vbat
-VP_ADC3_Vbat_Input.Signal=ADC3_Vbat_Input
-VP_ADC3_Vref_Input.Mode=IN-Vrefint
-VP_ADC3_Vref_Input.Signal=ADC3_Vref_Input
 VP_FATFS_VS_SDIO.Mode=SDIO
 VP_FATFS_VS_SDIO.Signal=FATFS_VS_SDIO
@@ -889,4 +839,6 @@
 VP_TIM8_VS_ControllerModeReset.Mode=Reset Mode
 VP_TIM8_VS_ControllerModeReset.Signal=TIM8_VS_ControllerModeReset
+VP_VREFBUF_V_VREFBUF.Mode=ExternalMode
+VP_VREFBUF_V_VREFBUF.Signal=VREFBUF_V_VREFBUF
 board=custom
 rtos.0.ip=FREERTOS
