Ignore:
Timestamp:
Aug 31, 2025, 6:56:29 PM (3 days ago)
Author:
f.jahn
Message:

Shunt Temperatursensor aktiviert

Location:
trunk/fw_g473rct/Core/Src
Files:
2 edited

Legend:

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

    r22 r24  
    5454  */
    5555  hadc1.Instance = ADC1;
    56   hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     56  hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    5757  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
    5858  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    9292  sConfig.Channel = ADC_CHANNEL_1;
    9393  sConfig.Rank = ADC_REGULAR_RANK_1;
    94   sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
     94  sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5;
    9595  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
    9696  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     
    122122  */
    123123  hadc2.Instance = ADC2;
    124   hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     124  hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    125125  hadc2.Init.Resolution = ADC_RESOLUTION_12B;
    126126  hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    148148  sConfig.Channel = ADC_CHANNEL_3;
    149149  sConfig.Rank = ADC_REGULAR_RANK_1;
     150  sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5;
     151  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
     152  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     153  sConfig.Offset = 0;
     154  if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
     155  {
     156    Error_Handler();
     157  }
     158  /* USER CODE BEGIN ADC2_Init 2 */
     159
     160  /* USER CODE END ADC2_Init 2 */
     161
     162}
     163/* ADC3 init function */
     164void MX_ADC3_Init(void)
     165{
     166
     167  /* USER CODE BEGIN ADC3_Init 0 */
     168
     169  /* USER CODE END ADC3_Init 0 */
     170
     171  ADC_MultiModeTypeDef multimode = {0};
     172  ADC_ChannelConfTypeDef sConfig = {0};
     173
     174  /* USER CODE BEGIN ADC3_Init 1 */
     175
     176  /* USER CODE END ADC3_Init 1 */
     177
     178  /** Common config
     179  */
     180  hadc3.Instance = ADC3;
     181  hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
     182  hadc3.Init.Resolution = ADC_RESOLUTION_12B;
     183  hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     184  hadc3.Init.GainCompensation = 0;
     185  hadc3.Init.ScanConvMode = ADC_SCAN_ENABLE;
     186  hadc3.Init.EOCSelection = ADC_EOC_SEQ_CONV;
     187  hadc3.Init.LowPowerAutoWait = DISABLE;
     188  hadc3.Init.ContinuousConvMode = ENABLE;
     189  hadc3.Init.NbrOfConversion = 3;
     190  hadc3.Init.DiscontinuousConvMode = DISABLE;
     191  hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
     192  hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
     193  hadc3.Init.DMAContinuousRequests = ENABLE;
     194  hadc3.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
     195  hadc3.Init.OversamplingMode = ENABLE;
     196  hadc3.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256;
     197  hadc3.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
     198  hadc3.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
     199  hadc3.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
     200  if (HAL_ADC_Init(&hadc3) != HAL_OK)
     201  {
     202    Error_Handler();
     203  }
     204
     205  /** Configure the ADC multi-mode
     206  */
     207  multimode.Mode = ADC_MODE_INDEPENDENT;
     208  if (HAL_ADCEx_MultiModeConfigChannel(&hadc3, &multimode) != HAL_OK)
     209  {
     210    Error_Handler();
     211  }
     212
     213  /** Configure Regular Channel
     214  */
     215  sConfig.Channel = ADC_CHANNEL_1;
     216  sConfig.Rank = ADC_REGULAR_RANK_1;
    150217  sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
    151218  sConfig.SingleDiff = ADC_SINGLE_ENDED;
    152219  sConfig.OffsetNumber = ADC_OFFSET_NONE;
    153220  sConfig.Offset = 0;
    154   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
    155   {
    156     Error_Handler();
    157   }
    158   /* USER CODE BEGIN ADC2_Init 2 */
    159 
    160   /* USER CODE END ADC2_Init 2 */
    161 
    162 }
    163 /* ADC3 init function */
    164 void MX_ADC3_Init(void)
    165 {
    166 
    167   /* USER CODE BEGIN ADC3_Init 0 */
    168 
    169   /* USER CODE END ADC3_Init 0 */
    170 
    171   ADC_MultiModeTypeDef multimode = {0};
    172   ADC_ChannelConfTypeDef sConfig = {0};
    173 
    174   /* USER CODE BEGIN ADC3_Init 1 */
    175 
    176   /* USER CODE END ADC3_Init 1 */
    177 
    178   /** Common config
    179   */
    180   hadc3.Instance = ADC3;
    181   hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
    182   hadc3.Init.Resolution = ADC_RESOLUTION_12B;
    183   hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    184   hadc3.Init.GainCompensation = 0;
    185   hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
    186   hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    187   hadc3.Init.LowPowerAutoWait = DISABLE;
    188   hadc3.Init.ContinuousConvMode = ENABLE;
    189   hadc3.Init.NbrOfConversion = 1;
    190   hadc3.Init.DiscontinuousConvMode = DISABLE;
    191   hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    192   hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
    193   hadc3.Init.DMAContinuousRequests = ENABLE;
    194   hadc3.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    195   hadc3.Init.OversamplingMode = DISABLE;
    196   if (HAL_ADC_Init(&hadc3) != HAL_OK)
    197   {
    198     Error_Handler();
    199   }
    200 
    201   /** Configure the ADC multi-mode
    202   */
    203   multimode.Mode = ADC_MODE_INDEPENDENT;
    204   if (HAL_ADCEx_MultiModeConfigChannel(&hadc3, &multimode) != HAL_OK)
    205   {
    206     Error_Handler();
    207   }
    208 
    209   /** Configure Regular Channel
    210   */
    211   sConfig.Channel = ADC_CHANNEL_1;
    212   sConfig.Rank = ADC_REGULAR_RANK_1;
    213   sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
    214   sConfig.SingleDiff = ADC_SINGLE_ENDED;
    215   sConfig.OffsetNumber = ADC_OFFSET_NONE;
    216   sConfig.Offset = 0;
     221  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
     222  {
     223    Error_Handler();
     224  }
     225
     226  /** Configure Regular Channel
     227  */
     228  sConfig.Channel = ADC_CHANNEL_12;
     229  sConfig.Rank = ADC_REGULAR_RANK_2;
     230  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
     231  {
     232    Error_Handler();
     233  }
     234
     235  /** Configure Regular Channel
     236  */
     237  sConfig.Channel = ADC_CHANNEL_5;
     238  sConfig.Rank = ADC_REGULAR_RANK_3;
    217239  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
    218240  {
     
    241263  */
    242264  hadc4.Instance = ADC4;
    243   hadc4.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     265  hadc4.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    244266  hadc4.Init.Resolution = ADC_RESOLUTION_12B;
    245267  hadc4.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    255277  hadc4.Init.DMAContinuousRequests = ENABLE;
    256278  hadc4.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    257   hadc4.Init.OversamplingMode = DISABLE;
     279  hadc4.Init.OversamplingMode = ENABLE;
     280  hadc4.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256;
     281  hadc4.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
     282  hadc4.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
     283  hadc4.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
    258284  if (HAL_ADC_Init(&hadc4) != HAL_OK)
    259285  {
     
    265291  sConfig.Channel = ADC_CHANNEL_4;
    266292  sConfig.Rank = ADC_REGULAR_RANK_1;
    267   sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
     293  sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
    268294  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
    269295  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     
    295321  */
    296322  hadc5.Instance = ADC5;
    297   hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     323  hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    298324  hadc5.Init.Resolution = ADC_RESOLUTION_12B;
    299325  hadc5.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    309335  hadc5.Init.DMAContinuousRequests = ENABLE;
    310336  hadc5.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    311   hadc5.Init.OversamplingMode = DISABLE;
     337  hadc5.Init.OversamplingMode = ENABLE;
     338  hadc5.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256;
     339  hadc5.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
     340  hadc5.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
     341  hadc5.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
    312342  if (HAL_ADC_Init(&hadc5) != HAL_OK)
    313343  {
     
    319349  sConfig.Channel = ADC_CHANNEL_TEMPSENSOR_ADC5;
    320350  sConfig.Rank = ADC_REGULAR_RANK_1;
    321   sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
     351  sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
    322352  sConfig.SingleDiff = ADC_SINGLE_ENDED;
    323353  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     
    330360  /** Configure Regular Channel
    331361  */
    332   sConfig.Channel = ADC_CHANNEL_1;
     362  sConfig.Channel = ADC_CHANNEL_VBAT;
    333363  sConfig.Rank = ADC_REGULAR_RANK_2;
    334364  if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK)
     
    339369  /** Configure Regular Channel
    340370  */
     371  sConfig.Channel = ADC_CHANNEL_2;
    341372  sConfig.Rank = ADC_REGULAR_RANK_3;
    342373  if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK)
     
    347378  /** Configure Regular Channel
    348379  */
     380  sConfig.Channel = ADC_CHANNEL_1;
    349381  sConfig.Rank = ADC_REGULAR_RANK_4;
    350382  if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK)
     
    375407  */
    376408    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
    377     PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
     409    PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL;
    378410    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    379411    {
     
    428460  */
    429461    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
    430     PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
     462    PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL;
    431463    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    432464    {
     
    443475    /**ADC2 GPIO Configuration
    444476    PA6     ------> ADC2_IN3
    445     */
    446     GPIO_InitStruct.Pin = ADC2_IN3_UBAT__Pin;
     477    PA7     ------> ADC2_IN4
     478    */
     479    GPIO_InitStruct.Pin = ADC2_IN3_UBAT__Pin|GPIO_PIN_7;
    447480    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    448481    GPIO_InitStruct.Pull = GPIO_NOPULL;
    449     HAL_GPIO_Init(ADC2_IN3_UBAT__GPIO_Port, &GPIO_InitStruct);
     482    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    450483
    451484    /* ADC2 DMA Init */
     
    480513  */
    481514    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    482     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
     515    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
    483516    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    484517    {
     
    534567  */
    535568    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    536     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
     569    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
    537570    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    538571    {
     
    587620  */
    588621    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    589     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
     622    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
    590623    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    591624    {
     
    672705    /**ADC2 GPIO Configuration
    673706    PA6     ------> ADC2_IN3
    674     */
    675     HAL_GPIO_DeInit(ADC2_IN3_UBAT__GPIO_Port, ADC2_IN3_UBAT__Pin);
     707    PA7     ------> ADC2_IN4
     708    */
     709    HAL_GPIO_DeInit(GPIOA, ADC2_IN3_UBAT__Pin|GPIO_PIN_7);
    676710
    677711    /* ADC2 DMA DeInit */
  • trunk/fw_g473rct/Core/Src/main.c

    r20 r24  
    148148  RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV2;
    149149  RCC_OscInitStruct.PLL.PLLN = 16;
    150   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
     150  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
    151151  RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
    152152  RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
Note: See TracChangeset for help on using the changeset viewer.