Ignore:
Timestamp:
Aug 4, 2026, 1:53:58 PM (25 hours ago)
Author:
f.jahn
Message:

Delta Sigma ADC auf 10Channel geändert.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/fw_g473rct/Core/Src/adc.c

    r71 r73  
    2323/* USER CODE BEGIN 0 */
    2424
     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*/
    2530/* USER CODE END 0 */
    2631
     
    5459  */
    5560  hadc1.Instance = ADC1;
    56   hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
     61  hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
    5762  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
    5863  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    6166  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    6267  hadc1.Init.LowPowerAutoWait = DISABLE;
    63   hadc1.Init.ContinuousConvMode = DISABLE;
     68  hadc1.Init.ContinuousConvMode = ENABLE;
    6469  hadc1.Init.NbrOfConversion = 1;
    6570  hadc1.Init.DiscontinuousConvMode = DISABLE;
     
    120125  */
    121126  hadc2.Instance = ADC2;
    122   hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
     127  hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
    123128  hadc2.Init.Resolution = ADC_RESOLUTION_12B;
    124129  hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    127132  hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    128133  hadc2.Init.LowPowerAutoWait = DISABLE;
    129   hadc2.Init.ContinuousConvMode = DISABLE;
     134  hadc2.Init.ContinuousConvMode = ENABLE;
    130135  hadc2.Init.NbrOfConversion = 1;
    131136  hadc2.Init.DiscontinuousConvMode = DISABLE;
     
    151156  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
    152157  sConfig.OffsetNumber = ADC_OFFSET_NONE;
    153   sConfig.Offset = 0;
     158  sConfig.Offset = 0; //Spannung etwa 100mV erhöhen
     159
    154160  if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
    155161  {
     
    179185  */
    180186  hadc3.Instance = ADC3;
    181   hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     187  hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
    182188  hadc3.Init.Resolution = ADC_RESOLUTION_12B;
    183189  hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    263269  */
    264270  hadc4.Instance = ADC4;
    265   hadc4.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
     271  hadc4.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
    266272  hadc4.Init.Resolution = ADC_RESOLUTION_12B;
    267273  hadc4.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    270276  hadc4.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    271277  hadc4.Init.LowPowerAutoWait = DISABLE;
    272   hadc4.Init.ContinuousConvMode = DISABLE;
     278  hadc4.Init.ContinuousConvMode = ENABLE;
    273279  hadc4.Init.NbrOfConversion = 1;
    274280  hadc4.Init.DiscontinuousConvMode = DISABLE;
     
    295301  sConfig.OffsetNumber = ADC_OFFSET_NONE;
    296302  sConfig.Offset = 0;
     303
     304
    297305  if (HAL_ADC_ConfigChannel(&hadc4, &sConfig) != HAL_OK)
    298306  {
     
    321329  */
    322330  hadc5.Instance = ADC5;
    323   hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     331  hadc5.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
    324332  hadc5.Init.Resolution = ADC_RESOLUTION_12B;
    325333  hadc5.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    407415  */
    408416    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
    409     PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL;
     417    PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
    410418    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    411419    {
     
    436444    hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
    437445    hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
    438     hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
     446    hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
    439447    hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
    440448    hdma_adc1.Init.Mode = DMA_NORMAL;
     
    460468  */
    461469    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
    462     PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL;
     470    PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
    463471    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    464472    {
     
    489497    hdma_adc2.Init.PeriphInc = DMA_PINC_DISABLE;
    490498    hdma_adc2.Init.MemInc = DMA_MINC_ENABLE;
    491     hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
     499    hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
    492500    hdma_adc2.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
    493501    hdma_adc2.Init.Mode = DMA_NORMAL;
     
    513521  */
    514522    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    515     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
     523    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
    516524    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    517525    {
     
    567575  */
    568576    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    569     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
     577    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
    570578    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    571579    {
     
    596604    hdma_adc4.Init.PeriphInc = DMA_PINC_DISABLE;
    597605    hdma_adc4.Init.MemInc = DMA_MINC_ENABLE;
    598     hdma_adc4.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
     606    hdma_adc4.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
    599607    hdma_adc4.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
    600608    hdma_adc4.Init.Mode = DMA_NORMAL;
     
    620628  */
    621629    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    622     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
     630    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
    623631    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    624632    {
     
    820828        return 0.0f;
    821829
    822     float sample_cycles = 6.5f;
     830    float sample_cycles = 640.5f;
    823831    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;
    826835}
    827836/* USER CODE END 1 */
Note: See TracChangeset for help on using the changeset viewer.