Changeset 73 for trunk/fw_g473rct/Core/Src/adc.c
- Timestamp:
- Aug 4, 2026, 1:53:58 PM (25 hours ago)
- File:
-
- 1 edited
-
trunk/fw_g473rct/Core/Src/adc.c (modified) (20 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/fw_g473rct/Core/Src/adc.c
r71 r73 23 23 /* USER CODE BEGIN 0 */ 24 24 25 /* --------------- ACHTUNG --------- 26 - ADC1&2 und ADC3,4, 5 teilen sich den gleichen Prescaaler, deshalb muss 3 und 5 auch schnell takten 27 - SYNC nicht ASYNC als quelle nehmen, dadurch weniger Jitter 28 29 */ 25 30 /* USER CODE END 0 */ 26 31 … … 54 59 */ 55 60 hadc1.Instance = ADC1; 56 hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV 1;61 hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; 57 62 hadc1.Init.Resolution = ADC_RESOLUTION_12B; 58 63 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 61 66 hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; 62 67 hadc1.Init.LowPowerAutoWait = DISABLE; 63 hadc1.Init.ContinuousConvMode = DISABLE;68 hadc1.Init.ContinuousConvMode = ENABLE; 64 69 hadc1.Init.NbrOfConversion = 1; 65 70 hadc1.Init.DiscontinuousConvMode = DISABLE; … … 120 125 */ 121 126 hadc2.Instance = ADC2; 122 hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV 1;127 hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; 123 128 hadc2.Init.Resolution = ADC_RESOLUTION_12B; 124 129 hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 127 132 hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV; 128 133 hadc2.Init.LowPowerAutoWait = DISABLE; 129 hadc2.Init.ContinuousConvMode = DISABLE;134 hadc2.Init.ContinuousConvMode = ENABLE; 130 135 hadc2.Init.NbrOfConversion = 1; 131 136 hadc2.Init.DiscontinuousConvMode = DISABLE; … … 151 156 sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED; 152 157 sConfig.OffsetNumber = ADC_OFFSET_NONE; 153 sConfig.Offset = 0; 158 sConfig.Offset = 0; //Spannung etwa 100mV erhöhen 159 154 160 if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) 155 161 { … … 179 185 */ 180 186 hadc3.Instance = ADC3; 181 hadc3.Init.ClockPrescaler = ADC_CLOCK_ ASYNC_DIV256;187 hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; 182 188 hadc3.Init.Resolution = ADC_RESOLUTION_12B; 183 189 hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 263 269 */ 264 270 hadc4.Instance = ADC4; 265 hadc4.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV 1;271 hadc4.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; 266 272 hadc4.Init.Resolution = ADC_RESOLUTION_12B; 267 273 hadc4.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 270 276 hadc4.Init.EOCSelection = ADC_EOC_SINGLE_CONV; 271 277 hadc4.Init.LowPowerAutoWait = DISABLE; 272 hadc4.Init.ContinuousConvMode = DISABLE;278 hadc4.Init.ContinuousConvMode = ENABLE; 273 279 hadc4.Init.NbrOfConversion = 1; 274 280 hadc4.Init.DiscontinuousConvMode = DISABLE; … … 295 301 sConfig.OffsetNumber = ADC_OFFSET_NONE; 296 302 sConfig.Offset = 0; 303 304 297 305 if (HAL_ADC_ConfigChannel(&hadc4, &sConfig) != HAL_OK) 298 306 { … … 321 329 */ 322 330 hadc5.Instance = ADC5; 323 hadc5.Init.ClockPrescaler = ADC_CLOCK_ ASYNC_DIV256;331 hadc5.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; 324 332 hadc5.Init.Resolution = ADC_RESOLUTION_12B; 325 333 hadc5.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 407 415 */ 408 416 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12; 409 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_ PLL;417 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK; 410 418 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 411 419 { … … 436 444 hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE; 437 445 hdma_adc1.Init.MemInc = DMA_MINC_ENABLE; 438 hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_ WORD;446 hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; 439 447 hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; 440 448 hdma_adc1.Init.Mode = DMA_NORMAL; … … 460 468 */ 461 469 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12; 462 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_ PLL;470 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK; 463 471 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 464 472 { … … 489 497 hdma_adc2.Init.PeriphInc = DMA_PINC_DISABLE; 490 498 hdma_adc2.Init.MemInc = DMA_MINC_ENABLE; 491 hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_ WORD;499 hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; 492 500 hdma_adc2.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; 493 501 hdma_adc2.Init.Mode = DMA_NORMAL; … … 513 521 */ 514 522 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345; 515 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_ PLL;523 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK; 516 524 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 517 525 { … … 567 575 */ 568 576 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345; 569 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_ PLL;577 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK; 570 578 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 571 579 { … … 596 604 hdma_adc4.Init.PeriphInc = DMA_PINC_DISABLE; 597 605 hdma_adc4.Init.MemInc = DMA_MINC_ENABLE; 598 hdma_adc4.Init.PeriphDataAlignment = DMA_PDATAALIGN_ WORD;606 hdma_adc4.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; 599 607 hdma_adc4.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; 600 608 hdma_adc4.Init.Mode = DMA_NORMAL; … … 620 628 */ 621 629 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345; 622 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_ PLL;630 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK; 623 631 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 624 632 { … … 820 828 return 0.0f; 821 829 822 float sample_cycles = 6 .5f;830 float sample_cycles = 640.5f; 823 831 float conversion_cycles = 12.5f; 824 825 return adc_clk / (sample_cycles + conversion_cycles); 832 float oversampling = 256; 833 834 return adc_clk / (sample_cycles + conversion_cycles) / oversampling; 826 835 } 827 836 /* USER CODE END 1 */
Note:
See TracChangeset
for help on using the changeset viewer.
