2 * @brief System Driver Source File
\r
3 * @date 05.November.2010
\r
6 * This file contains:
\r
9 * which are relevant for the System driver.
\r
12 /* (c) Texas Instruments 2010, All rights reserved. */
\r
17 #include "sys_system.h"
\r
20 /** @fn void systemInit(void)
\r
21 * @brief Initializes System Driver
\r
23 * This function initializes the System driver.
\r
28 void systemInit(void)
\r
30 /** @b Initialize @b Flash @b Wrapper: */
\r
32 /** - Setup flash read mode, address wait states and data wait states */
\r
33 flashWREG->FRDCNTL = 0x01000000U
\r
39 /** - Setup flash bank power modes */
\r
40 flashWREG->FBFALLBACK = 0x05050000
\r
41 | (SYS_ACTIVE << 14U)
\r
42 | (SYS_SLEEP << 12U)
\r
43 | (SYS_SLEEP << 10U)
\r
47 | (SYS_ACTIVE << 2U)
\r
50 /** @b Initialize @b Lpo: */
\r
52 unsigned trim = *(volatile unsigned short *)0xF00801B4;
\r
56 systemREG1->LPOMONCTL = (1U << 24U)
\r
62 systemREG1->LPOMONCTL = (1U << 24U)
\r
64 | (systemREG1->LPOMONCTL & 0xFFFF);
\r
69 /** @b Initialize @b Pll: */
\r
71 /** - Setup pll control register 1:
\r
72 * - Setup reset on oscillator slip
\r
73 * - Setup bypass on pll slip
\r
74 * - Setup Pll output clock divider
\r
75 * - Setup reset on oscillator fail
\r
76 * - Setup reference clock divider
\r
77 * - Setup Pll multiplier
\r
81 systemREG1->PLLCTL1 = 0x00000000U
\r
88 /** - Setup pll control register 1
\r
89 * - Enable/Disable frequency modulation
\r
90 * - Setup spreading rate
\r
91 * - Setup bandwidth adjustment
\r
92 * - Setup internal Pll output divider
\r
93 * - Setup spreading amount
\r
95 systemREG1->PLLCTL2 = 0x00000000U
\r
101 /** @b Initialize @b Clock @b Tree: */
\r
103 /** - Start clock source lock */
\r
104 systemREG1->CSDISCLR = 0x00000000U
\r
110 /** - Wait for until clocks are locked */
\r
111 while ((systemREG1->CSVSTAT & 0x00000002U) == 0x00); /* wait for PLL */
\r
113 /** - Setup GCLK, HCLK and VCLK clock source for normal operation, power down mode and after wakeup */
\r
114 systemREG1->GHVSRC = (SYS_PLL << 24U)
\r
115 | (SYS_PLL << 16U)
\r
118 /** - Power-up all peripharals */
\r
119 pcrREG->PSPWRDWNCLR0 = 0xFFFFFFFFU;
\r
120 pcrREG->PSPWRDWNCLR1 = 0xFFFFFFFFU;
\r
121 pcrREG->PSPWRDWNCLR2 = 0xFFFFFFFFU;
\r
122 pcrREG->PSPWRDWNCLR3 = 0xFFFFFFFFU;
\r
124 /** - Setup synchronous peripheral clock dividers for VCLK1 and VCLK2 */
\r
125 systemREG1->PENA = 0U;
\r
126 systemREG1->VCLKR = 15U;
\r
127 systemREG1->VCLK2R = 1U;
\r
128 systemREG1->VCLKR = 1U;
\r
130 systemREG2->CLK2CNTRL = (1U << 8U)
\r
133 /** - Setup RTICLK1 and RTICLK2 clocks */
\r
134 systemREG1->RCLKSRC = (1U << 24U)
\r
135 | (SYS_VCLK << 16U)
\r
140 /** - Setup asynchronous peripheral clock sources for AVCLK1 and AVCLK2 */
\r
141 systemREG1->VCLKASRC = (SYS_FR_PLL << 8U)
\r
144 /** - Setup asynchronous peripheral clock sources for AVCLK3 and AVCLK4 */
\r
145 systemREG2->VCLKACON1 = (0U << 24U)
\r
147 | (SYS_EXTERNAL2 << 16U)
\r
153 /** - Enable Peripherals */
\r
154 systemREG1->PENA = 1U;
\r
156 /** @note: HCLK >= VCLK2 >= VCLK_sys */
\r