Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit511ed73

Browse files
committed
fix(i2c): wrong clock frequencies for I2C5 and I2C6
Fixes#2534Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent42e0262 commit511ed73

File tree

1 file changed

+73
-0
lines changed
  • libraries/Wire/src/utility

1 file changed

+73
-0
lines changed

‎libraries/Wire/src/utility/twi.c

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,49 @@ static uint32_t i2c_getClkFreq(I2C_TypeDef *i2c)
420420
#else
421421
clkSrcFreq=HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_I2C35);
422422
#endif
423+
if (clkSrcFreq==0)
424+
#endif
425+
{
426+
#ifdef__HAL_RCC_GET_I2C5_SOURCE
427+
switch (__HAL_RCC_GET_I2C5_SOURCE()) {
428+
#ifdefRCC_I2C5CLKSOURCE_HSI
429+
caseRCC_I2C5CLKSOURCE_HSI:
430+
clkSrcFreq=HSI_VALUE;
431+
break;
432+
#endif
433+
#ifdefRCC_I2C5CLKSOURCE_SYSCLK
434+
caseRCC_I2C5CLKSOURCE_SYSCLK:
435+
clkSrcFreq=SystemCoreClock;
436+
break;
437+
#endif
438+
#if defined(RCC_I2C5CLKSOURCE_PCLK1)|| defined(RCC_I2C5CLKSOURCE_D2PCLK1)
439+
#ifdefRCC_I2C5CLKSOURCE_PCLK1
440+
caseRCC_I2C5CLKSOURCE_PCLK1:
441+
#endif
442+
#ifdefRCC_I2C5CLKSOURCE_D2PCLK1
443+
caseRCC_I2C5CLKSOURCE_D2PCLK1:
444+
#endif
445+
clkSrcFreq=HAL_RCC_GetPCLK1Freq();
446+
break;
447+
#endif
448+
#ifdefRCC_I2C5CLKSOURCE_CSI
449+
caseRCC_I2C5CLKSOURCE_CSI:
450+
clkSrcFreq=CSI_VALUE;
451+
break;
452+
#endif
453+
#ifdefRCC_I2C5CLKSOURCE_PLL3
454+
caseRCC_I2C5CLKSOURCE_PLL3:
455+
HAL_RCCEx_GetPLL3ClockFreq(&PLL3_Clocks);
456+
clkSrcFreq=PLL3_Clocks.PLL3_R_Frequency;
457+
break;
423458
#endif
459+
default:
460+
Error_Handler();
461+
}
462+
#else
463+
Error_Handler();
464+
#endif
465+
}
424466
}
425467
#endif// I2C5_BASE
426468
#if defined(I2C6_BASE)
@@ -431,7 +473,38 @@ static uint32_t i2c_getClkFreq(I2C_TypeDef *i2c)
431473
#else
432474
clkSrcFreq=HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_I2C46);
433475
#endif
476+
if (clkSrcFreq==0)
477+
#endif
478+
{
479+
#ifdef__HAL_RCC_GET_I2C6_SOURCE
480+
switch (__HAL_RCC_GET_I2C6_SOURCE()) {
481+
#ifdefRCC_I2C6CLKSOURCE_HSI
482+
caseRCC_I2C6CLKSOURCE_HSI:
483+
clkSrcFreq=HSI_VALUE;
484+
break;
485+
#endif
486+
#ifdefRCC_I2C6CLKSOURCE_SYSCLK
487+
caseRCC_I2C6CLKSOURCE_SYSCLK:
488+
clkSrcFreq=SystemCoreClock;
489+
break;
434490
#endif
491+
#ifdefRCC_I2C6CLKSOURCE_PCLK1
492+
caseRCC_I2C6CLKSOURCE_PCLK1:
493+
clkSrcFreq=HAL_RCC_GetPCLK1Freq();
494+
break;
495+
#endif
496+
#ifdefRCC_I2C6CLKSOURCE_MSIK
497+
caseRCC_I2C6CLKSOURCE_MSIK:
498+
clkSrcFreq=MSI_VALUE;
499+
break;
500+
#endif
501+
default:
502+
Error_Handler();
503+
}
504+
#else
505+
Error_Handler();
506+
#endif
507+
}
435508
}
436509
#endif// I2C6_BASE
437510
returnclkSrcFreq;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp