Kinetis Bootloader
2.0.0
Common bootloader for Kinetis devices
Introduction
Related Pages
Modules
system_MKL43Z4.h
1
/*
2
** ###################################################################
3
** Processors: MKL43Z256VLH4
4
** MKL43Z128VLH4
5
** MKL43Z64VLH4
6
** MKL43Z256VMP4
7
** MKL43Z128VMP4
8
** MKL43Z64VMP4
9
**
10
** Compilers: Keil ARM C/C++ Compiler
11
** Freescale C/C++ for Embedded ARM
12
** GNU C Compiler
13
** GNU C Compiler - CodeSourcery Sourcery G++
14
** IAR ANSI C/C++ Compiler for ARM
15
**
16
** Reference manual: KL43P64M48SF6RM, Rev.3, Aug 2014
17
** Version: rev. 1.5, 2014-09-05
18
** Build: b141218
19
**
20
** Abstract:
21
** Provides a system configuration function and a global variable that
22
** contains the system frequency. It configures the device and initializes
23
** the oscillator (PLL) that is part of the microcontroller device.
24
**
25
** Copyright (c) 2014 Freescale Semiconductor, Inc.
26
** All rights reserved.
27
**
28
** Redistribution and use in source and binary forms, with or without modification,
29
** are permitted provided that the following conditions are met:
30
**
31
** o Redistributions of source code must retain the above copyright notice, this list
32
** of conditions and the following disclaimer.
33
**
34
** o Redistributions in binary form must reproduce the above copyright notice, this
35
** list of conditions and the following disclaimer in the documentation and/or
36
** other materials provided with the distribution.
37
**
38
** o Neither the name of Freescale Semiconductor, Inc. nor the names of its
39
** contributors may be used to endorse or promote products derived from this
40
** software without specific prior written permission.
41
**
42
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
43
** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
44
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
45
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
46
** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
47
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
48
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
49
** ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
50
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
51
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
52
**
53
** http: www.freescale.com
54
** mail: support@freescale.com
55
**
56
** Revisions:
57
** - rev. 1.0 (2014-03-27)
58
** Initial version.
59
** - rev. 1.1 (2014-05-26)
60
** I2S registers TCR2/RCR2 and others were changed.
61
** FLEXIO register FLEXIO_VERID has now bitfields: FEATURE, MINOR, MAJOR.
62
** Names of the bitfields of the FLEXIO_SHIFTBUF have been changed to the appropriate register name e.g.:
63
*FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS.
64
** Peripheral_BASES macros has been changed to Peripheral_BASE_PTRS, e.g.: ADC_BASES to ADC_BASE_PTRS.
65
** Clock configuration for high range external oscillator has been added.
66
** RFSYS module access has been added.
67
** - rev. 1.2 (2014-07-10)
68
** GPIO - Renamed modules PTA,PTB,PTC,PTD,PTE to GPIOA,GPIOB,GPIOC,GPIOD,GPIOE.
69
** UART0 - UART0 module renamed to UART2.
70
** I2S - removed MDR register.
71
** - rev. 1.3 (2014-08-21)
72
** UART2 - Removed ED register.
73
** UART2 - Removed MODEM register.
74
** UART2 - Removed IR register.
75
** UART2 - Removed PFIFO register.
76
** UART2 - Removed CFIFO register.
77
** UART2 - Removed SFIFO register.
78
** UART2 - Removed TWFIFO register.
79
** UART2 - Removed TCFIFO register.
80
** UART2 - Removed RWFIFO register.
81
** UART2 - Removed RCFIFO register.
82
** USB - Removed bitfield REG_EN in CLK_RECOVER_IRC_EN register.
83
** SIM - Changed bitfield value MCGIRCLK to LIRC_CLK of bitfield CLKOUTSEL in SOPT2 register.
84
** SIM - Removed bitfield DIEID in SDID register.
85
** - rev. 1.4 (2014-09-01)
86
** USB - USB0_CTL0 was renamed to USB0_OTGCTL register.
87
** USB - USB0_CTL1 was renamed to USB0_CTL register.
88
** - rev. 1.5 (2014-09-05)
89
** USB - Renamed USBEN bitfield of USB0_CTL was renamed to USBENSOFEN.
90
**
91
** ###################################################################
92
*/
93
105
#ifndef _SYSTEM_MKL43Z4_H_
106
#define _SYSTEM_MKL43Z4_H_
108
#ifdef __cplusplus
109
extern
"C"
{
110
#endif
111
112
#include <stdint.h>
113
114
#ifndef DISABLE_WDOG
115
#define DISABLE_WDOG 1
116
#endif
117
118
#define ACK_ISOLATION 1
119
120
/* MCG_Lite mode constants */
121
122
#define MCG_MODE_LIRC_8M 0U
123
#define MCG_MODE_HIRC 1U
124
#define MCG_MODE_LIRC_2M 2U
125
#define MCG_MODE_EXT 3U
126
127
/* Predefined clock setups
128
0 ... Multipurpose Clock Generator Lite (MCG_Lite) in Low-frequency Internal Reference Clock 8 MHz (LIRC 8 MHz) mode
129
Default part configuration.
130
Core clock/Bus clock derived from the internal clock source 8 MHz
131
Core clock = 4MHz, BusClock = 2MHz, USB FS clock derived from external clock USB_CLKIN (applicable only for
132
derivatived with USB)
133
1 ... Multipurpose Clock Generator Lite (MCG_Lite) in High-frequency Internal Reference Clock (HIRC) mode
134
Maximum achievable clock frequency configuration using internal clock.
135
Core clock/Bus clock derived from the internal clock source 48MHz
136
Core clock = 48MHz, BusClock = 24MHz, USB FS clock derived from external clock USB_CLKIN (applicable only for
137
derivatived with USB)
138
2 ... Multipurpose Clock Generator Lite (MCG_Lite) in External Oscillator (EXT) mode
139
Core clock/Bus clock derived directly from the external crystal 32.768kHz
140
The clock settings is ready for Very Low Power Run mode.
141
Core clock = 32.768kHz, BusClock = 32.768kHz, USB FS clock derived from external clock USB_CLKIN (applicable
142
only for derivatived with USB)
143
3 ... Multipurpose Clock Generator Lite (MCG_Lite) in Low-frequency Internal Reference Clock 2 MHz (LIRC 2 MHz) mode
144
Core clock/Bus clock derived from the internal clock source 2 MHz
145
The clock settings is ready for Very Low Power Run mode.
146
Core clock = 2MHz, BusClock = 1MHz, USB FS clock derived from external clock USB_CLKIN (applicable only for
147
derivatived with USB)
148
4 ... Multipurpose Clock Generator Lite (MCG_Lite) in High-frequency Internal Reference Clock (HIRC) mode
149
USB clock setup - for USB to receive internal 48MHz clock derived from HIRC.
150
Core clock/Bus clock derived from the internal clock source 48MHz
151
Core clock = 48MHz, BusClock = 24MHz, USB FS clock derived from HIRC (MCGPCLK)
152
5 ... Multipurpose Clock Generator Lite (MCG_Lite) in External Oscillator (EXT) mode
153
Core clock/Bus clock derived directly from the external crystal 8 MHz
154
Core clock = 8MHz, BusClock = 4MHz, USB FS clock derived from external clock USB_CLKIN (applicable only for
155
derivatived with USB)
156
*/
157
158
/* Define clock source values */
159
160
#define CPU_XTAL_CLK_HZ 32768u
/* Value of the external crystal or oscillator clock frequency in Hz */
161
#define CPU_INT_FAST_CLK_HZ 48000000u
/* Value of the fast internal oscillator clock frequency in Hz */
162
#define CPU_INT_IRC_CLK_HZ 48000000u
/* Value of the 48M internal oscillator clock frequency in Hz */
163
164
/* Low power mode enable */
165
/* SMC_PMPROT: AVLP=1,AVLLS=1 */
166
#define SYSTEM_SMC_PMPROT_VALUE 0x2Au
/* SMC_PMPROT */
167
168
#ifdef CLOCK_SETUP
169
#if (CLOCK_SETUP == 0)
170
#define DEFAULT_SYSTEM_CLOCK 4000000u
/* Default System clock value */
171
#define CPU_INT_SLOW_CLK_HZ 8000000u
/* Value of the slow internal oscillator clock frequency in Hz */
172
#define MCG_MODE MCG_MODE_LIRC_8M
/* Clock generator mode */
173
/* MCG_C1: CLKS=1,IRCLKEN=1,IREFSTEN=0 */
174
#define MCG_C1_VALUE 0x42u
/* MCG_C1 */
175
/* MCG_C2: RANGE0=0,HGO0=0,EREFS0=0,IRCS=1 */
176
#define MCG_C2_VALUE 0x01u
/* MCG_C2 */
177
/* MCG_SC: FCRDIV=0 */
178
#define MCG_SC_VALUE 0x00u
/* MCG_SC */
179
/* MCG_MC: HIRCEN=0 LIRC_DIV2=0 */
180
#define MCG_MC_VALUE 0x00u
/* MCG_MC */
181
/* OSC0_CR: ERCLKEN=0,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
182
#define OSC0_CR_VALUE 0x00u
/* OSC0_CR */
183
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
184
#define SMC_PMCTRL_VALUE 0x00u
/* SMC_PMCTRL */
185
/* SIM_CLKDIV1: OUTDIV1=1,OUTDIV4=1 */
186
#define SYSTEM_SIM_CLKDIV1_VALUE 0x10010000u
/* SIM_CLKDIV1 */
187
/* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
188
#define SYSTEM_SIM_SOPT1_VALUE 0x00000000u
/* SIM_SOPT1 */
189
/* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
190
#define SYSTEM_SIM_SOPT2_VALUE 0x03000000u
/* SIM_SOPT2 */
191
#elif(CLOCK_SETUP == 1)
192
#define DEFAULT_SYSTEM_CLOCK 48000000u
/* Default System clock value */
193
#define CPU_INT_SLOW_CLK_HZ 8000000u
/* Value of the slow internal oscillator clock frequency in Hz */
194
#define MCG_MODE MCG_MODE_HIRC
/* Clock generator mode */
195
/* MCG_C1: CLKS=0,IRCLKEN=0,IREFSTEN=0 */
196
#define MCG_C1_VALUE 0x00u
/* MCG_C1 */
197
/* MCG_C2: RANGE0=0,HGO0=0,EREFS0=0,IRCS=1 */
198
#define MCG_C2_VALUE 0x01u
/* MCG_C2 */
199
/* MCG_SC: FCRDIV=0 */
200
#define MCG_SC_VALUE 0x00u
/* MCG_SC */
201
/* MCG_MC: HIRCEN=1 LIRC_DIV2=0 */
202
#define MCG_MC_VALUE 0x80u
/* MCG_MC */
203
/* OSC0_CR: ERCLKEN=0,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
204
#define OSC0_CR_VALUE 0x00u
/* OSC0_CR */
205
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
206
#define SMC_PMCTRL_VALUE 0x00u
/* SMC_PMCTRL */
207
/* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=1 */
208
#define SYSTEM_SIM_CLKDIV1_VALUE 0x10000u
/* SIM_CLKDIV1 */
209
/* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
210
#define SYSTEM_SIM_SOPT1_VALUE 0x00000000u
/* SIM_SOPT1 */
211
/* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
212
#define SYSTEM_SIM_SOPT2_VALUE 0x03000000U
/* SIM_SOPT2 */
213
#elif(CLOCK_SETUP == 2)
214
#define DEFAULT_SYSTEM_CLOCK 32768u
/* Default System clock value */
215
#define CPU_INT_SLOW_CLK_HZ 8000000u
/* Value of the slow internal oscillator clock frequency in Hz */
216
#define MCG_MODE MCG_MODE_EXT
/* Clock generator mode */
217
/* MCG_C1: CLKS=2,IRCLKEN=1,IREFSTEN=0 */
218
#define MCG_C1_VALUE 0x82u
/* MCG_C1 */
219
/* MCG_C2: RANGE0=0,HGO0=0,EREFS0=1,IRCS=1 */
220
#define MCG_C2_VALUE 0x05u
/* MCG_C2 */
221
/* MCG_SC: FCRDIV=0 */
222
#define MCG_SC_VALUE 0x00u
/* MCG_SC */
223
/* MCG_MC: HIRCEN=0 LIRC_DIV2=0 */
224
#define MCG_MC_VALUE 0x00u
/* MCG_MC */
225
/* OSC0_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
226
#define OSC0_CR_VALUE 0x80u
/* OSC0_CR */
227
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
228
#define SMC_PMCTRL_VALUE 0x00u
/* SMC_PMCTRL */
229
/* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=0 */
230
#define SYSTEM_SIM_CLKDIV1_VALUE 0x00u
/* SIM_CLKDIV1 */
231
/* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
232
#define SYSTEM_SIM_SOPT1_VALUE 0x00000000u
/* SIM_SOPT1 */
233
/* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=2,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
234
#define SYSTEM_SIM_SOPT2_VALUE 0x02000000u
/* SIM_SOPT2 */
235
#elif(CLOCK_SETUP == 3)
236
#define DEFAULT_SYSTEM_CLOCK 2000000u
/* Default System clock value */
237
#define CPU_INT_SLOW_CLK_HZ 2000000u
/* Value of the slow internal oscillator clock frequency in Hz */
238
#define MCG_MODE MCG_MODE_LIRC_2M
/* Clock generator mode */
239
/* MCG_C1: CLKS=1,IRCLKEN=1,IREFSTEN=0 */
240
#define MCG_C1_VALUE 0x42u
/* MCG_C1 */
241
/* MCG_C2: RANGE0=0,HGO0=0,EREFS0=0,IRCS=0 */
242
#define MCG_C2_VALUE 0x00u
/* MCG_C2 */
243
/* MCG_SC: FCRDIV=0 */
244
#define MCG_SC_VALUE 0x00u
/* MCG_SC */
245
/* MCG_MC: HIRCEN=0 LIRC_DIV2=0 */
246
#define MCG_MC_VALUE 0x00u
/* MCG_MC */
247
/* OSC0_CR: ERCLKEN=0,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
248
#define OSC0_CR_VALUE 0x00u
/* OSC0_CR */
249
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
250
#define SMC_PMCTRL_VALUE 0x00u
/* SMC_PMCTRL */
251
/* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=1 */
252
#define SYSTEM_SIM_CLKDIV1_VALUE 0x10000u
/* SIM_CLKDIV1 */
253
/* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
254
#define SYSTEM_SIM_SOPT1_VALUE 0x00000000u
/* SIM_SOPT1 */
255
/* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
256
#define SYSTEM_SIM_SOPT2_VALUE 0x03000000u
/* SIM_SOPT2 */
257
#elif(CLOCK_SETUP == 4)
258
#define DEFAULT_SYSTEM_CLOCK 2000000u
/* Default System clock value */
259
#define CPU_INT_SLOW_CLK_HZ 8000000u
/* Value of the slow internal oscillator clock frequency in Hz */
260
#define MCG_MODE MCG_MODE_LIRC_2M
/* Clock generator mode */
261
/* MCG_C1: CLKS=0,IRCLKEN=1,IREFSTEN=0 */
262
#define MCG_C1_VALUE 0x02u
/* MCG_C1 */
263
/* MCG_C2: RANGE0=0,HGO0=0,EREFS0=0,IRCS=1 */
264
#define MCG_C2_VALUE 0x01u
/* MCG_C2 */
265
/* MCG_SC: FCRDIV=0 */
266
#define MCG_SC_VALUE 0x00u
/* MCG_SC */
267
/* MCG_MC: HIRCEN=1 LIRC_DIV2=0 */
268
#define MCG_MC_VALUE 0x80u
/* MCG_MC */
269
/* OSC0_CR: ERCLKEN=0,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
270
#define OSC0_CR_VALUE 0x00u
/* OSC0_CR */
271
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
272
#define SMC_PMCTRL_VALUE 0x00u
/* SMC_PMCTRL */
273
/* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=1 */
274
#define SYSTEM_SIM_CLKDIV1_VALUE 0x10000u
/* SIM_CLKDIV1 */
275
/* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
276
#define SYSTEM_SIM_SOPT1_VALUE 0x00000000u
/* SIM_SOPT1 */
277
/* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=1,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
278
#define SYSTEM_SIM_SOPT2_VALUE 0x03040000u
/* SIM_SOPT2 */
279
#elif(CLOCK_SETUP == 5)
280
#define DEFAULT_SYSTEM_CLOCK 2000000u
/* Default System clock value */
281
#define CPU_INT_SLOW_CLK_HZ 2000000u
/* Value of the slow internal oscillator clock frequency in Hz */
282
#define MCG_MODE MCG_MODE_LIRC_2M
/* Clock generator mode */
283
/* MCG_C1: CLKS=2,IRCLKEN=0,IREFSTEN=0 */
284
#define MCG_C1_VALUE 0x80u
/* MCG_C1 */
285
/* MCG_C2: RANGE0=1,HGO0=0,EREFS0=1,IRCS=1 */
286
#define MCG_C2_VALUE 0x15u
/* MCG_C2 */
287
/* MCG_SC: FCRDIV=0 */
288
#define MCG_SC_VALUE 0x00u
/* MCG_SC */
289
/* MCG_MC: HIRCEN=0 LIRC_DIV2=0 */
290
#define MCG_MC_VALUE 0x00u
/* MCG_MC */
291
/* OSC0_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
292
#define OSC0_CR_VALUE 0x80u
/* OSC0_CR */
293
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
294
#define SMC_PMCTRL_VALUE 0x00u
/* SMC_PMCTRL */
295
/* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=1 */
296
#define SYSTEM_SIM_CLKDIV1_VALUE 0x10000u
/* SIM_CLKDIV1 */
297
/* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
298
#define SYSTEM_SIM_SOPT1_VALUE 0x00000000u
/* SIM_SOPT1 */
299
/* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
300
#define SYSTEM_SIM_SOPT2_VALUE 0x03000000u
/* SIM_SOPT2 */
301
#else
302
#error The selected clock setup is not supported.
303
#endif
/* (CLOCK_SETUP == 5) */
304
#else
305
#define DEFAULT_SYSTEM_CLOCK 8000000u
/* Default System clock value */
306
#define CPU_INT_SLOW_CLK_HZ 8000000u
/* Value of the slow internal oscillator clock frequency in Hz */
307
#endif
308
318
extern
uint32_t SystemCoreClock;
319
327
void
SystemInit(
void
);
328
336
void
SystemCoreClockUpdate(
void
);
337
338
#ifdef __cplusplus
339
}
340
#endif
341
342
#endif
/* #if !defined(_SYSTEM_MKL43Z4_H_) */
apps
flash_driver_api
MKL43Z4
src
startup
system_MKL43Z4.h
Generated on Mon Mar 7 2016 16:48:23 for Kinetis Bootloader by
1.8.11