Changeset 24 for trunk/fw_g473rct/Core/Src
- Timestamp:
- Aug 31, 2025, 6:56:29 PM (3 days ago)
- Location:
- trunk/fw_g473rct/Core/Src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/fw_g473rct/Core/Src/adc.c
r22 r24 54 54 */ 55 55 hadc1.Instance = ADC1; 56 hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV 256;56 hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; 57 57 hadc1.Init.Resolution = ADC_RESOLUTION_12B; 58 58 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 92 92 sConfig.Channel = ADC_CHANNEL_1; 93 93 sConfig.Rank = ADC_REGULAR_RANK_1; 94 sConfig.SamplingTime = ADC_SAMPLETIME_6 40CYCLES_5;94 sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5; 95 95 sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED; 96 96 sConfig.OffsetNumber = ADC_OFFSET_NONE; … … 122 122 */ 123 123 hadc2.Instance = ADC2; 124 hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV 256;124 hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; 125 125 hadc2.Init.Resolution = ADC_RESOLUTION_12B; 126 126 hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 148 148 sConfig.Channel = ADC_CHANNEL_3; 149 149 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 */ 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_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; 150 217 sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5; 151 218 sConfig.SingleDiff = ADC_SINGLE_ENDED; 152 219 sConfig.OffsetNumber = ADC_OFFSET_NONE; 153 220 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; 217 239 if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK) 218 240 { … … 241 263 */ 242 264 hadc4.Instance = ADC4; 243 hadc4.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV 256;265 hadc4.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; 244 266 hadc4.Init.Resolution = ADC_RESOLUTION_12B; 245 267 hadc4.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 255 277 hadc4.Init.DMAContinuousRequests = ENABLE; 256 278 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; 258 284 if (HAL_ADC_Init(&hadc4) != HAL_OK) 259 285 { … … 265 291 sConfig.Channel = ADC_CHANNEL_4; 266 292 sConfig.Rank = ADC_REGULAR_RANK_1; 267 sConfig.SamplingTime = ADC_SAMPLETIME_ 2CYCLES_5;293 sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5; 268 294 sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED; 269 295 sConfig.OffsetNumber = ADC_OFFSET_NONE; … … 295 321 */ 296 322 hadc5.Instance = ADC5; 297 hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV 256;323 hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; 298 324 hadc5.Init.Resolution = ADC_RESOLUTION_12B; 299 325 hadc5.Init.DataAlign = ADC_DATAALIGN_RIGHT; … … 309 335 hadc5.Init.DMAContinuousRequests = ENABLE; 310 336 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; 312 342 if (HAL_ADC_Init(&hadc5) != HAL_OK) 313 343 { … … 319 349 sConfig.Channel = ADC_CHANNEL_TEMPSENSOR_ADC5; 320 350 sConfig.Rank = ADC_REGULAR_RANK_1; 321 sConfig.SamplingTime = ADC_SAMPLETIME_ 2CYCLES_5;351 sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5; 322 352 sConfig.SingleDiff = ADC_SINGLE_ENDED; 323 353 sConfig.OffsetNumber = ADC_OFFSET_NONE; … … 330 360 /** Configure Regular Channel 331 361 */ 332 sConfig.Channel = ADC_CHANNEL_ 1;362 sConfig.Channel = ADC_CHANNEL_VBAT; 333 363 sConfig.Rank = ADC_REGULAR_RANK_2; 334 364 if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK) … … 339 369 /** Configure Regular Channel 340 370 */ 371 sConfig.Channel = ADC_CHANNEL_2; 341 372 sConfig.Rank = ADC_REGULAR_RANK_3; 342 373 if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK) … … 347 378 /** Configure Regular Channel 348 379 */ 380 sConfig.Channel = ADC_CHANNEL_1; 349 381 sConfig.Rank = ADC_REGULAR_RANK_4; 350 382 if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK) … … 375 407 */ 376 408 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12; 377 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_ SYSCLK;409 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL; 378 410 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 379 411 { … … 428 460 */ 429 461 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12; 430 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_ SYSCLK;462 PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL; 431 463 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 432 464 { … … 443 475 /**ADC2 GPIO Configuration 444 476 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; 447 480 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; 448 481 GPIO_InitStruct.Pull = GPIO_NOPULL; 449 HAL_GPIO_Init( ADC2_IN3_UBAT__GPIO_Port, &GPIO_InitStruct);482 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 450 483 451 484 /* ADC2 DMA Init */ … … 480 513 */ 481 514 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345; 482 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_ SYSCLK;515 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL; 483 516 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 484 517 { … … 534 567 */ 535 568 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345; 536 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_ SYSCLK;569 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL; 537 570 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 538 571 { … … 587 620 */ 588 621 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345; 589 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_ SYSCLK;622 PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL; 590 623 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 591 624 { … … 672 705 /**ADC2 GPIO Configuration 673 706 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); 676 710 677 711 /* ADC2 DMA DeInit */ -
trunk/fw_g473rct/Core/Src/main.c
r20 r24 148 148 RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV2; 149 149 RCC_OscInitStruct.PLL.PLLN = 16; 150 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV 2;150 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; 151 151 RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; 152 152 RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
Note: See TracChangeset
for help on using the changeset viewer.