mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
boards/hifive1*: rework clock configuration
This commit is contained in:
parent
fc911bf6c5
commit
97ef5d53de
@ -30,8 +30,53 @@ extern "C" {
|
||||
* @name Core Clock configuration
|
||||
* @{
|
||||
*/
|
||||
/* As defined in boards/hifive1/board.c CPU_DESIRED_FREQ **/
|
||||
#define CLOCK_CORECLOCK (200000000ul)
|
||||
#define USE_CLOCK_HFXOSC_PLL (1)
|
||||
#define USE_CLOCK_HFXOSC (0)
|
||||
#define USE_CLOCK_HFROSC_PLL (0)
|
||||
|
||||
#if USE_CLOCK_HFROSC_PLL && (USE_CLOCK_HFXOSC_PLL || USE_CLOCK_HFXOSC)
|
||||
#error "Cannot use HFROSC_PLL with HFXOSC based configurations"
|
||||
#endif
|
||||
|
||||
#if USE_CLOCK_HFXOSC_PLL && USE_CLOCK_HFXOSC
|
||||
#error "Cannot use HFXOSC with HFXOSC_PLL"
|
||||
#endif
|
||||
|
||||
#if USE_CLOCK_HFXOSC_PLL
|
||||
#define CLOCK_PLL_R (1) /* Divide input clock by 2, mandatory with HFXOSC */
|
||||
#define CLOCK_PLL_F (39) /* Multiply REFR by 80, e.g 2 * (39 + 1) */
|
||||
#define CLOCK_PLL_Q (1) /* Divide VCO by 2, e.g 2^1 */
|
||||
#define CLOCK_PLL_INPUT_CLOCK (16000000UL)
|
||||
#define CLOCK_PLL_REFR (CLOCK_PLL_INPUT_CLOCK / (CLOCK_PLL_R + 1))
|
||||
#define CLOCK_PLL_VCO (CLOCK_PLL_REFR * (2 * (CLOCK_PLL_F + 1)))
|
||||
#define CLOCK_PLL_OUT (CLOCK_PLL_VCO / (1 << CLOCK_PLL_Q))
|
||||
#define CLOCK_CORECLOCK (CLOCK_PLL_OUT) /* 320000000Hz with the values used above */
|
||||
|
||||
/* Check PLL settings */
|
||||
#if CLOCK_PLL_REFR != 8000000
|
||||
#error "Only R=2 can be used when using HFXOSC"
|
||||
#endif
|
||||
#if (CLOCK_PLL_VCO < 384000000) || (CLOCK_PLL_VCO > 768000000)
|
||||
#error "VCO frequency must be in the range [384MHz - 768MHz], check the CLOCK_PLL_F value"
|
||||
#endif
|
||||
#if (CLOCK_PLL_OUT < 48000000) || (CLOCK_PLL_OUT > 384000000)
|
||||
#error "PLL output frequency must be in the range [48MHz - 384MHz], check the CLOCK_PLL_Q value"
|
||||
#endif
|
||||
|
||||
#elif USE_CLOCK_HFXOSC
|
||||
#define CLOCK_CORECLOCK (16000000UL)
|
||||
|
||||
/*
|
||||
When using HFROSC input clock, the core clock cannot be computed from settings,
|
||||
call cpu_freq() to get the configured CPU frequency.
|
||||
*/
|
||||
#elif USE_CLOCK_HFROSC_PLL
|
||||
#define CLOCK_DESIRED_FREQUENCY (320000000UL)
|
||||
|
||||
#else
|
||||
#define CLOCK_HFROSC_TRIM (6) /* ~72000000Hz input freq */
|
||||
#define CLOCK_HFROSC_DIV (1) /* Divide by 2 */
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
|
@ -31,8 +31,53 @@ extern "C" {
|
||||
* @name Core Clock configuration
|
||||
* @{
|
||||
*/
|
||||
/* As defined in boards/hifive1/board.c CPU_DESIRED_FREQ **/
|
||||
#define CLOCK_CORECLOCK (200000000ul)
|
||||
#define USE_CLOCK_HFXOSC_PLL (1)
|
||||
#define USE_CLOCK_HFXOSC (0)
|
||||
#define USE_CLOCK_HFROSC_PLL (0)
|
||||
|
||||
#if USE_CLOCK_HFROSC_PLL && (USE_CLOCK_HFXOSC_PLL || USE_CLOCK_HFXOSC)
|
||||
#error "Cannot use HFROSC_PLL with HFXOSC based configurations"
|
||||
#endif
|
||||
|
||||
#if USE_CLOCK_HFXOSC_PLL && USE_CLOCK_HFXOSC
|
||||
#error "Cannot use HFXOSC with HFXOSC_PLL"
|
||||
#endif
|
||||
|
||||
#if USE_CLOCK_HFXOSC_PLL
|
||||
#define CLOCK_PLL_R (1) /* Divide input clock by 2, mandatory with HFXOSC */
|
||||
#define CLOCK_PLL_F (39) /* Multiply REFR by 80, e.g 2 * (39 + 1) */
|
||||
#define CLOCK_PLL_Q (1) /* Divide VCO by 2, e.g 2^1 */
|
||||
#define CLOCK_PLL_INPUT_CLOCK (16000000UL)
|
||||
#define CLOCK_PLL_REFR (CLOCK_PLL_INPUT_CLOCK / (CLOCK_PLL_R + 1))
|
||||
#define CLOCK_PLL_VCO (CLOCK_PLL_REFR * (2 * (CLOCK_PLL_F + 1)))
|
||||
#define CLOCK_PLL_OUT (CLOCK_PLL_VCO / (1 << CLOCK_PLL_Q))
|
||||
#define CLOCK_CORECLOCK (CLOCK_PLL_OUT) /* 320000000Hz with the values used above */
|
||||
|
||||
/* Check PLL settings */
|
||||
#if CLOCK_PLL_REFR != 8000000
|
||||
#error "Only R=2 can be used when using HFXOSC"
|
||||
#endif
|
||||
#if (CLOCK_PLL_VCO < 384000000) || (CLOCK_PLL_VCO > 768000000)
|
||||
#error "VCO frequency must be in the range [384MHz - 768MHz], check the CLOCK_PLL_F value"
|
||||
#endif
|
||||
#if (CLOCK_PLL_OUT < 48000000) || (CLOCK_PLL_OUT > 384000000)
|
||||
#error "PLL output frequency must be in the range [48MHz - 384MHz], check the CLOCK_PLL_Q value"
|
||||
#endif
|
||||
|
||||
#elif USE_CLOCK_HFXOSC
|
||||
#define CLOCK_CORECLOCK (16000000UL)
|
||||
|
||||
/*
|
||||
When using HFROSC input clock, the core clock cannot be computed from settings,
|
||||
call cpu_freq() to get the configured CPU frequency.
|
||||
*/
|
||||
#elif USE_CLOCK_HFROSC_PLL
|
||||
#define CLOCK_DESIRED_FREQUENCY (320000000UL)
|
||||
|
||||
#else
|
||||
#define CLOCK_HFROSC_TRIM (6) /* ~72000000Hz input freq */
|
||||
#define CLOCK_HFROSC_DIV (1) /* Divide by 2 */
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user