git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5152 35acf78f-673a-0410-8e92-d51de3d6d3f4

This commit is contained in:
gdisirio 2013-02-11 15:20:38 +00:00
parent 11f6896656
commit 095677dfa3
2 changed files with 54 additions and 7 deletions

View File

@ -127,9 +127,11 @@ void spc_early_init(void) {
CGM.OSC_CTL.B.OSCBYP = TRUE; CGM.OSC_CTL.B.OSCBYP = TRUE;
#endif /* SPC5_OSC_BYPASS */ #endif /* SPC5_OSC_BYPASS */
/* Enable clocks to all peripherals: */ /* Setting the various dividers and source selectors.*/
/* CGM.SC_DC0.R = 0x80; CGM.SC_SS.R = SPC5_CGM_SC_SS;
CGM.AC0_DC0_3.R = 0x80808080; CGM.SC_DC0.R = SPC5_CGM_SC_DC0;
/*CGM.AC0_DC0_3.R = 0x80808080;
CGM.AC1_DC0_3.R = 0x80808080; CGM.AC1_DC0_3.R = 0x80808080;
CGM.AC2_DC0_3.R = 0x85808080; CGM.AC2_DC0_3.R = 0x85808080;
CGM.AC0_SC.R = 0x04000000; CGM.AC0_SC.R = 0x04000000;

View File

@ -122,6 +122,18 @@
#define SPC5_FMPLL_ODF_DIV16 (3U << 24) #define SPC5_FMPLL_ODF_DIV16 (3U << 24)
/** @} */ /** @} */
/**
* @name Clock selectors used in the various GCM SC registers
* @{
*/
#define SPC5_CGM_SS_MASK (15U << 24)
#define SPC5_CGM_SS_IRC (0U << 24)
#define SPC5_CGM_SS_XOSC (2U << 24)
#define SPC5_CGM_SS_FMPLL0 (4U << 24)
#define SPC5_CGM_SS_FMPLL1 (5U << 24)
#define SPC5_CGM_SS_FMPLL1_DIV6 (8U << 24)
/** @} */
/** /**
* @name ME_GS register bits definitions * @name ME_GS register bits definitions
* @{ * @{
@ -291,6 +303,21 @@
#define SPC5_FMPLL1_ODF SPC5_FMPLL_ODF_DIV4 #define SPC5_FMPLL1_ODF SPC5_FMPLL_ODF_DIV4
#endif #endif
/**
* @brief System clock source.
*/
#if !defined(SPC5_SYSCLK_SRC) || defined(__DOXYGEN__)
#define SPC5_SYSCLK_SRC SPC5_CGM_SS_FMPLL0
#endif
/**
* @brief System clock divider value.
* @note Zero means disabled clock.
*/
#if !defined(SPC5_SYSCLK_DIVIDER_VALUE) || defined(__DOXYGEN__)
#define SPC5_SYSCLK_DIVIDER_VALUE 1
#endif
/** /**
* @brief Active run modes in ME_ME register. * @brief Active run modes in ME_ME register.
* @note Modes RESET, SAFE, DRUN, and RUN0 modes are always enabled, there * @note Modes RESET, SAFE, DRUN, and RUN0 modes are always enabled, there
@ -702,6 +729,24 @@
#error "SPC5_FMPLL1_CLK outside acceptable range (0...SPC5_FMPLL1_CLK_MAX)" #error "SPC5_FMPLL1_CLK outside acceptable range (0...SPC5_FMPLL1_CLK_MAX)"
#endif #endif
/* Check on the system clock selector settings.*/
#if (SPC5_SYSCLK_SRC == SPC5_CGM_SS_IRC) || \
(SPC5_SYSCLK_SRC == SPC5_CGM_SS_XOSC) || \
(SPC5_SYSCLK_SRC == SPC5_CGM_SS_FMPLL0)
#define SPC5_CGM_SC_SS SPC5_SYSCLK_SRC
#else
#error "invalid SPC5_SYSCLK_SRC value specified"
#endif
/* Check on the system divider settings.*/
#if SPC5_SYSCLK_DIVIDER_VALUE == 0
#define SPC5_CGM_SC_DC0 0
#elif (SPC5_SYSCLK_DIVIDER_VALUE >= 1) && (SPC5_SYSCLK_DIVIDER_VALUE <= 16)
#define SPC5_CGM_SC_DC0 (0x80 | (SPC5_SYSCLK_DIVIDER_VALUE - 1))
#else
#error "invalid SPC5_SYSCLK_DIVIDER_VALUE value specified"
#endif
/*===========================================================================*/ /*===========================================================================*/
/* Driver data structures and types. */ /* Driver data structures and types. */
/*===========================================================================*/ /*===========================================================================*/