Contiki 3.x
config-clocks.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, Eistec AB.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the copyright holder nor the names of its contributors
14  * may be used to endorse or promote products derived from this software
15  * without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  *
29  * This file is part of the Mulle platform port of the Contiki operating system.
30  *
31  */
32 
33 /**
34  * \file
35  * K60 clock configuration defines.
36  * \author
37  * Joakim Gebart <joakim.gebart@eistec.se>
38  */
39 
40 #ifndef MULLE_CONFIG_CLOCKS_H_
41 #define MULLE_CONFIG_CLOCKS_H_
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 /* Base clocks */
48 #define CPU_XTAL_CLK_HZ 8000000u /**< Value of the external crystal or oscillator clock frequency in Hz */
49 #define CPU_XTAL32k_CLK_HZ 32768u /**< Value of the external 32k crystal or oscillator clock frequency in Hz */
50 #define CPU_INT_SLOW_CLK_HZ 32768u /**< Value of the slow internal oscillator clock frequency in Hz */
51 #define CPU_INT_FAST_CLK_HZ 4000000u /**< Value of the fast internal oscillator clock frequency in Hz */
52 #define DEFAULT_SYSTEM_CLOCK 96000000u /**< Default System clock value */
53 
54 /**
55  * System clock divider setting, the actual hardware register value, see reference manual for details.
56  */
57 #define CONFIG_CLOCK_K60_SYS_DIV 0x00
58 
59 /**
60  * Bus clock divider setting, the actual hardware register value, see reference manual for details
61  */
62 #define CONFIG_CLOCK_K60_BUS_DIV 0x01
63 
64 /**
65  * Flexbus clock divider setting, the actual hardware register value, see reference manual for details
66  */
67 #define CONFIG_CLOCK_K60_FB_DIV 0x01
68 
69 /**
70  * Flash clock divider setting, the actual hardware register value, see reference manual for details
71  */
72 #define CONFIG_CLOCK_K60_FLASH_DIV 0x03
73 
74 /**
75  * FLL parameter DRST DRS in MCG register C4, see reference manual for details
76  */
77 #define CONFIG_CLOCK_K60_FLL_MCG_C4_DRST_DRS 0b11
78 
79 /**
80  * FLL parameter DMX32 in MCG register C4, see reference manual for details
81  */
82 #define CONFIG_CLOCK_K60_FLL_MCG_C4_DMX32 1
83 
84 /**
85  * CPU core frequency resulting from the chosen divisors and multipliers.
86  */
87 #define F_CPU DEFAULT_SYSTEM_CLOCK
88 
89 /**
90  * System frequency resulting from the chosen divisors and multipliers.
91  */
92 #define F_SYS (F_CPU / (CONFIG_CLOCK_K60_SYS_DIV + 1))
93 
94 /**
95  * Bus frequency resulting from the chosen divisors and multipliers.
96  */
97 #define F_BUS (F_CPU / (CONFIG_CLOCK_K60_BUS_DIV + 1))
98 
99 /**
100  * FlexBus frequency resulting from the chosen divisors and multipliers.
101  */
102 #define F_FLEXBUS (F_CPU / (CONFIG_CLOCK_K60_FB_DIV + 1))
103 
104 /**
105  * Flash frequency resulting from the chosen divisors and multipliers.
106  */
107 #define F_FLASH (F_CPU / (CONFIG_CLOCK_K60_FLASH_DIV + 1))
108 
109 #ifdef __cplusplus
110 } /* extern "C" */
111 #endif
112 
113 #endif /* !defined(MULLE_CONFIG_CLOCKS_H_) */