Changeset 110 for ctrl/firmware/Main/CubeMX/Core
- Timestamp:
- Mar 13, 2025, 2:08:13 PM (2 months ago)
- Location:
- ctrl/firmware/Main/CubeMX/Core
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
ctrl/firmware/Main/CubeMX/Core/Inc/stm32h7xx_it.h
r108 r110 23 23 24 24 #ifdef __cplusplus 25 25 extern "C" { 26 26 #endif 27 27 -
ctrl/firmware/Main/CubeMX/Core/Src/adc.c
r109 r110 54 54 */ 55 55 hadc2.Instance = ADC2; 56 hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV 2;56 hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; 57 57 hadc2.Init.Resolution = ADC_RESOLUTION_16B; 58 58 hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE; … … 68 68 hadc2.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE; 69 69 hadc2.Init.OversamplingMode = ENABLE; 70 hadc2.Init.Oversampling.Ratio = 64;71 hadc2.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_ 6;70 hadc2.Init.Oversampling.Ratio = 256; 71 hadc2.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_8; 72 72 hadc2.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER; 73 73 hadc2.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE; … … 81 81 sConfig.Channel = ADC_CHANNEL_3; 82 82 sConfig.Rank = ADC_REGULAR_RANK_1; 83 sConfig.SamplingTime = ADC_SAMPLETIME_ 810CYCLES_5;83 sConfig.SamplingTime = ADC_SAMPLETIME_16CYCLES_5; 84 84 sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED; 85 85 sConfig.OffsetNumber = ADC_OFFSET_NONE; … … 108 108 109 109 uint32_t offset[2] = { 0U }; 110 const uint32_t max_samples = 16U;110 const uint32_t max_samples = 8192U / ((hadc2.Init.OversamplingMode == ENABLE)? hadc2.Init.Oversampling.Ratio: 1); 111 111 // Starting DMA converstion 112 112 if (HAL_OK != HAL_ADC_Start_DMA(&hadc2, (uint32_t*)&ADC2Data, ADC2_CHANNELS_NUM)) Error_Handler(); … … 126 126 if (HAL_OK == HAL_ADC_Stop_DMA(&hadc2)) 127 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);128 LL_ADC_SetOffset(hadc2.Instance, LL_ADC_OFFSET_1, LL_ADC_CHANNEL_3, (offset[0]/max_samples) * ((hadc2.Init.OversamplingMode == ENABLE)? hadc2.Init.Oversampling.Ratio: 1)); 129 LL_ADC_SetOffset(hadc2.Instance, LL_ADC_OFFSET_2, LL_ADC_CHANNEL_4, (offset[1]/max_samples) * ((hadc2.Init.OversamplingMode == ENABLE)? hadc2.Init.Oversampling.Ratio: 1)); 130 130 } 131 131 … … 184 184 sConfig.Channel = ADC_CHANNEL_10; 185 185 sConfig.Rank = ADC_REGULAR_RANK_1; 186 sConfig.SamplingTime = ADC 3_SAMPLETIME_640CYCLES_5;186 sConfig.SamplingTime = ADC_SAMPLETIME_810CYCLES_5; 187 187 sConfig.SingleDiff = ADC_SINGLE_ENDED; 188 188 sConfig.OffsetNumber = ADC_OFFSET_NONE; -
ctrl/firmware/Main/CubeMX/Core/Src/main.c
r109 r110 192 192 /** Configure the main internal regulator output voltage 193 193 */ 194 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE 2);194 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0); 195 195 196 196 while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} … … 266 266 PeriphClkInitStruct.PLL2.PLL2FRACN = 0; 267 267 PeriphClkInitStruct.PLL3.PLL3M = 25; 268 PeriphClkInitStruct.PLL3.PLL3N = 1 80;268 PeriphClkInitStruct.PLL3.PLL3N = 150; 269 269 PeriphClkInitStruct.PLL3.PLL3P = 2; 270 PeriphClkInitStruct.PLL3.PLL3Q = 8;270 PeriphClkInitStruct.PLL3.PLL3Q = 6; 271 271 PeriphClkInitStruct.PLL3.PLL3R = 3; 272 272 PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0; … … 350 350 351 351 /* USER CODE END Callback 0 */ 352 if (htim->Instance == TIM7) { 352 if (htim->Instance == TIM7) 353 { 353 354 HAL_IncTick(); 354 355 } -
ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_hal_timebase_tim.c
r54 r110 63 63 __HAL_RCC_TIM7_CLK_ENABLE(); 64 64 65 /* Get clock configuration */65 /* Get clock configuration */ 66 66 HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); 67 67 … … 85 85 86 86 /* Initialize TIMx peripheral as follow: 87 88 + Period = [(TIM7CLK/1000) - 1]. to have a (1/1000) s time base. 89 + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. 90 + ClockDivision = 0 91 + Counter direction = Up 92 */ 87 * Period = [(TIM7CLK/1000) - 1]. to have a (1/1000) s time base. 88 * Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. 89 * ClockDivision = 0 90 * Counter direction = Up 91 */ 93 92 htim7.Init.Period = (1000000U / 1000U) - 1U; 94 93 htim7.Init.Prescaler = uwPrescalerValue; -
ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c
r109 r110 483 483 { 484 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;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 489 //printf("\t\t\t%5.2fA, %5.2fA\n", charge_i, load_i); 490 printf("%d, %d\n", ADC2Data.Name.charge_strom, ADC2Data.Name.eload_strom); 490 491 HAL_GPIO_WritePin(RX1_LED_GPIO_Port, RX1_LED_Pin, GPIO_PIN_RESET); 491 492 }
Note: See TracChangeset
for help on using the changeset viewer.