@@ -420,7 +420,49 @@ static uint32_t i2c_getClkFreq(I2C_TypeDef *i2c)
420
420
#else
421
421
clkSrcFreq = HAL_RCCEx_GetPeriphCLKFreq (RCC_PERIPHCLK_I2C35 );
422
422
#endif
423
+ if (clkSrcFreq == 0 )
424
+ #endif
425
+ {
426
+ #ifdef __HAL_RCC_GET_I2C5_SOURCE
427
+ switch (__HAL_RCC_GET_I2C5_SOURCE ()) {
428
+ #ifdef RCC_I2C5CLKSOURCE_HSI
429
+ case RCC_I2C5CLKSOURCE_HSI :
430
+ clkSrcFreq = HSI_VALUE ;
431
+ break ;
432
+ #endif
433
+ #ifdef RCC_I2C5CLKSOURCE_SYSCLK
434
+ case RCC_I2C5CLKSOURCE_SYSCLK :
435
+ clkSrcFreq = SystemCoreClock ;
436
+ break ;
437
+ #endif
438
+ #if defined(RCC_I2C5CLKSOURCE_PCLK1 ) || defined(RCC_I2C5CLKSOURCE_D2PCLK1 )
439
+ #ifdef RCC_I2C5CLKSOURCE_PCLK1
440
+ case RCC_I2C5CLKSOURCE_PCLK1 :
441
+ #endif
442
+ #ifdef RCC_I2C5CLKSOURCE_D2PCLK1
443
+ case RCC_I2C5CLKSOURCE_D2PCLK1 :
444
+ #endif
445
+ clkSrcFreq = HAL_RCC_GetPCLK1Freq ();
446
+ break ;
447
+ #endif
448
+ #ifdef RCC_I2C5CLKSOURCE_CSI
449
+ case RCC_I2C5CLKSOURCE_CSI :
450
+ clkSrcFreq = CSI_VALUE ;
451
+ break ;
452
+ #endif
453
+ #ifdef RCC_I2C5CLKSOURCE_PLL3
454
+ case RCC_I2C5CLKSOURCE_PLL3 :
455
+ HAL_RCCEx_GetPLL3ClockFreq (& PLL3_Clocks );
456
+ clkSrcFreq = PLL3_Clocks .PLL3_R_Frequency ;
457
+ break ;
423
458
#endif
459
+ default :
460
+ Error_Handler ();
461
+ }
462
+ #else
463
+ Error_Handler ();
464
+ #endif
465
+ }
424
466
}
425
467
#endif // I2C5_BASE
426
468
#if defined(I2C6_BASE )
@@ -431,7 +473,38 @@ static uint32_t i2c_getClkFreq(I2C_TypeDef *i2c)
431
473
#else
432
474
clkSrcFreq = HAL_RCCEx_GetPeriphCLKFreq (RCC_PERIPHCLK_I2C46 );
433
475
#endif
476
+ if (clkSrcFreq == 0 )
477
+ #endif
478
+ {
479
+ #ifdef __HAL_RCC_GET_I2C6_SOURCE
480
+ switch (__HAL_RCC_GET_I2C6_SOURCE ()) {
481
+ #ifdef RCC_I2C6CLKSOURCE_HSI
482
+ case RCC_I2C6CLKSOURCE_HSI :
483
+ clkSrcFreq = HSI_VALUE ;
484
+ break ;
485
+ #endif
486
+ #ifdef RCC_I2C6CLKSOURCE_SYSCLK
487
+ case RCC_I2C6CLKSOURCE_SYSCLK :
488
+ clkSrcFreq = SystemCoreClock ;
489
+ break ;
434
490
#endif
491
+ #ifdef RCC_I2C6CLKSOURCE_PCLK1
492
+ case RCC_I2C6CLKSOURCE_PCLK1 :
493
+ clkSrcFreq = HAL_RCC_GetPCLK1Freq ();
494
+ break ;
495
+ #endif
496
+ #ifdef RCC_I2C6CLKSOURCE_MSIK
497
+ case RCC_I2C6CLKSOURCE_MSIK :
498
+ clkSrcFreq = MSI_VALUE ;
499
+ break ;
500
+ #endif
501
+ default :
502
+ Error_Handler ();
503
+ }
504
+ #else
505
+ Error_Handler ();
506
+ #endif
507
+ }
435
508
}
436
509
#endif // I2C6_BASE
437
510
return clkSrcFreq ;
0 commit comments