Changeset 109 for ctrl/firmware/Main/CubeMX
- Timestamp:
- Mar 12, 2025, 4:18:34 PM (2 months ago)
- Location:
- ctrl/firmware/Main/CubeMX
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
ctrl/firmware/Main/CubeMX/Core/Inc/adc.h
r108 r109 41 41 /* USER CODE BEGIN Private defines */ 42 42 43 #define ADC2_CHANNELS (2U)44 #define ADC3_CHANNELS (4U)45 #define VREF (3000U)43 #define ADC2_CHANNELS_NUM (2U) 44 #define ADC3_CHANNELS_NUM (4U) 45 #define VREF (3000U) 46 46 47 47 typedef union ADC2_data_t 48 48 { 49 uint16_t Raw[ADC2_CHANNELS ];49 uint16_t Raw[ADC2_CHANNELS_NUM]; 50 50 struct 51 51 { … … 57 57 typedef union ADC3_data_t 58 58 { 59 uint16_t Raw[ADC3_CHANNELS ];59 uint16_t Raw[ADC3_CHANNELS_NUM]; 60 60 struct 61 61 { -
ctrl/firmware/Main/CubeMX/Core/Src/adc.c
r108 r109 23 23 /* USER CODE BEGIN 0 */ 24 24 25 #include <string.h> 26 25 27 volatile ADC2_data_t ADC2Data __attribute__((section(".AXI_RAM_4_DMA"))); 26 28 volatile ADC3_data_t ADC3Data __attribute__((section(".BKP_RAM_4_DMA"))); … … 52 54 */ 53 55 hadc2.Instance = ADC2; 54 hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV2 56;56 hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV2; 55 57 hadc2.Init.Resolution = ADC_RESOLUTION_16B; 56 58 hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE; … … 66 68 hadc2.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE; 67 69 hadc2.Init.OversamplingMode = ENABLE; 68 hadc2.Init.Oversampling.Ratio = 1024;69 hadc2.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_ 10;70 hadc2.Init.Oversampling.Ratio = 64; 71 hadc2.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_6; 70 72 hadc2.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER; 71 73 hadc2.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE; … … 93 95 sConfig.Channel = ADC_CHANNEL_4; 94 96 sConfig.Rank = ADC_REGULAR_RANK_2; 97 sConfig.Offset = 0; 95 98 if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) 96 99 { … … 104 107 HAL_Delay(100U); 105 108 106 //if (HAL_OK != HAL_ADC_Start(&hadc3)) Error_Handler(); 107 if (HAL_OK != HAL_ADC_Start_DMA(&hadc2, (uint32_t*)&ADC2Data, ADC2_CHANNELS)) Error_Handler(); 108 __HAL_DMA_DISABLE_IT(&hdma_adc2, DMA_IT_HT); 109 110 uint16_t offset = 0; 111 for (int i = 0; i < 100; i++) 112 { 113 114 } 109 uint32_t offset[2] = { 0U }; 110 const uint32_t max_samples = 16U; 111 // Starting DMA converstion 112 if (HAL_OK != HAL_ADC_Start_DMA(&hadc2, (uint32_t*)&ADC2Data, ADC2_CHANNELS_NUM)) Error_Handler(); 113 // Disabling interrupts, because we don't need it during offset calculation 114 __HAL_DMA_DISABLE_IT(&hdma_adc2, DMA_IT_HT | DMA_IT_TC); 115 for (uint32_t i = 0U; i < max_samples; i++) 116 { // Waiting for conversion to finish 117 while(!__HAL_DMA_GET_FLAG(&hdma_adc2, DMA_FLAG_TCIF1_5)); 118 // Reading ADC2 value 119 offset[0] += ADC2Data.Raw[0]; 120 offset[1] += ADC2Data.Raw[1]; 121 __HAL_DMA_CLEAR_FLAG(&hdma_adc2, DMA_FLAG_TCIF1_5); 122 } 123 124 printf("ADC2 offset[0] = %u, offset[1] = %u\n", offset[0] / max_samples, offset[1] / max_samples); 125 126 if (HAL_OK == HAL_ADC_Stop_DMA(&hadc2)) 127 { 128 LL_ADC_SetOffset(hadc2.Instance, LL_ADC_OFFSET_1, LL_ADC_CHANNEL_3, (offset[0]/max_samples) << 6U); 129 LL_ADC_SetOffset(hadc2.Instance, LL_ADC_OFFSET_2, LL_ADC_CHANNEL_4, (offset[1]/max_samples) << 6U); 130 } 131 132 if (HAL_OK != HAL_ADC_Start_DMA(&hadc2, (uint32_t*)&ADC2Data, ADC2_CHANNELS_NUM)) Error_Handler(); 133 __HAL_DMA_DISABLE_IT(&hdma_adc2, DMA_IT_HT /*| DMA_IT_TC*/); // Disabling interrupts, because we don't need it 115 134 116 135 … … 209 228 210 229 //if (HAL_OK != HAL_ADC_Start(&hadc3)) Error_Handler(); 211 if (HAL_OK != HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC3Data, ADC3_CHANNELS )) Error_Handler();230 if (HAL_OK != HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC3Data, ADC3_CHANNELS_NUM)) Error_Handler(); 212 231 __HAL_DMA_DISABLE_IT(&hdma_adc3, DMA_IT_HT); 213 232 -
ctrl/firmware/Main/CubeMX/Core/Src/freertos.c
r106 r109 58 58 #define BME_TASK_STACK_DEPTH_WORDS (256U) 59 59 #define GUI_TASK_STACK_DEPTH_WORDS (2048U) 60 #define FAN_TASK_STACK_DEPTH_WORDS ( 128U)60 #define FAN_TASK_STACK_DEPTH_WORDS (256U) 61 61 62 62 /* USER CODE END PD */ -
ctrl/firmware/Main/CubeMX/Core/Src/main.c
r108 r109 374 374 { 375 375 /* USER CODE BEGIN Error_Handler_Debug */ 376 printf("ERROR!!!\n"); 376 377 /* User can add his own implementation to report the HAL error return state */ 377 378 __disable_irq(); -
ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c
r108 r109 24 24 /* USER CODE BEGIN Includes */ 25 25 26 #include <stdio.h> 27 26 28 #include "FreeRTOS.h" 27 29 #include "modbus.h" 28 //#include "semphr.h"30 #include "adc.h" 29 31 30 32 /* USER CODE END Includes */ … … 468 470 469 471 //------------------------------------------------------------------------------ 472 473 static volatile int64_t charge_tmp; 474 static volatile int64_t load_tmp; 475 static volatile float charge_i; 476 static volatile float load_i; 477 478 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) 479 { 480 //extern ADC2_data_t ADC2Data; 481 482 if (hadc->Instance == ADC2) 483 { 484 HAL_GPIO_WritePin(RX1_LED_GPIO_Port, RX1_LED_Pin, GPIO_PIN_SET); 485 charge_tmp = (((int64_t)ADC2Data.Name.charge_strom * ((int64_t)VREF) * 1000LL) / ((int64_t)0xFFFF)) / 50LL; 486 load_tmp = (((int64_t)ADC2Data.Name.eload_strom * ((int64_t)VREF) * 1000LL) / ((int64_t)0xFFFF)) / 50LL; 487 charge_i = (float)charge_tmp / 500LL; 488 load_i = (float)load_tmp / 500LL; 489 //printf("\t\t\t%5.2fA, %5.2fA\n", charge_i, load_i); 490 HAL_GPIO_WritePin(RX1_LED_GPIO_Port, RX1_LED_Pin, GPIO_PIN_RESET); 491 } 492 } 493 470 494 //------------------------------------------------------------------------------ 471 495 //------------------------------------------------------------------------------ -
ctrl/firmware/Main/CubeMX/charger.ioc
r108 r109 6 6 ADC2.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR 7 7 ADC2.EOCSelection=ADC_EOC_SEQ_CONV 8 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 8 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,Offset-0\#ChannelRegularConversion 9 9 ADC2.NbrOfConversion=2 10 10 ADC2.NbrOfConversionFlag=1 11 ADC2.Offset-0\#ChannelRegularConversion=32767 11 12 ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE 12 13 ADC2.OffsetNumber-2\#ChannelRegularConversion=ADC_OFFSET_NONE … … 437 438 Mcu.UserConstants= 438 439 Mcu.UserName=STM32H723ZETx 439 MxCube.Version=6.1 3.0440 MxDb.Version=DB.6.0.1 30440 MxCube.Version=6.14.0 441 MxDb.Version=DB.6.0.140 441 442 NVIC.BDMA_Channel0_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true 442 443 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false … … 720 721 ProjectManager.AskForMigrate=true 721 722 ProjectManager.BackupPrevious=false 723 ProjectManager.CompilerLinker=GCC 722 724 ProjectManager.CompilerOptimize=6 723 725 ProjectManager.ComputerToolchain=false … … 792 794 RCC.I2C123Freq_Value=64000000 793 795 RCC.I2C4Freq_Value=100000000 794 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_Value796 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,PWR_Regulator_Voltage_Scale,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 795 797 RCC.LPTIM1Freq_Value=100000000 796 798 RCC.LPTIM2Freq_Value=100000000 … … 804 806 RCC.PLLFRACN=0 805 807 RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE 808 RCC.PWR_Regulator_Voltage_Scale=PWR_REGULATOR_VOLTAGE_SCALE0 806 809 RCC.QSPIFreq_Value=100000000 807 810 RCC.RNGFreq_Value=48000000
Note: See TracChangeset
for help on using the changeset viewer.