Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
Loading...
Searching...
No Matches
clk_conf.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2019-2020 Inria
3
*
4
* This file is subject to the terms and conditions of the GNU Lesser General
5
* Public License v2.1. See the file LICENSE in the top level directory for more
6
* details.
7
*/
8
19
#ifndef CLK_CONF_H
20
#define CLK_CONF_H
21
22
#include "
macros/units.h
"
23
#include "
kernel_defines.h
"
24
25
#ifdef __cplusplus
26
extern
"C"
{
27
#endif
28
33
#ifndef CONFIG_USE_CLOCK_HFXOSC_PLL
34
#if IS_ACTIVE(CONFIG_USE_CLOCK_HFXOSC) || \
35
IS_ACTIVE(CONFIG_USE_CLOCK_HFROSC_PLL) || \
36
IS_ACTIVE(CONFIG_USE_CLOCK_HFROSC)
37
#define CONFIG_USE_CLOCK_HFXOSC_PLL 0
38
#else
39
#define CONFIG_USE_CLOCK_HFXOSC_PLL 1
/* Use PLL clocked by HFXOSC by default */
40
#endif
41
#endif
/* CONFIG_USE_CLOCK_HFXOSC_PLL */
42
43
#ifndef CONFIG_USE_CLOCK_HFXOSC
44
#define CONFIG_USE_CLOCK_HFXOSC 0
45
#endif
/* CONFIG_USE_CLOCK_HFXOSC */
46
47
#ifndef CONFIG_USE_CLOCK_HFROSC_PLL
48
#define CONFIG_USE_CLOCK_HFROSC_PLL 0
49
#endif
/* CONFIG_USE_CLOCK_HFROSC_PLL */
50
51
#ifndef CONFIG_USE_CLOCK_HFROSC
52
#define CONFIG_USE_CLOCK_HFROSC 0
53
#endif
/* CONFIG_USE_CLOCK_HFROSC */
54
55
#if CONFIG_USE_CLOCK_HFXOSC_PLL && \
56
(CONFIG_USE_CLOCK_HFROSC_PLL || CONFIG_USE_CLOCK_HFROSC || \
57
CONFIG_USE_CLOCK_HFXOSC)
58
#error "Cannot use HFXOSC_PLL with other clock configurations"
59
#endif
60
61
#if CONFIG_USE_CLOCK_HFXOSC && \
62
(CONFIG_USE_CLOCK_HFROSC_PLL || CONFIG_USE_CLOCK_HFROSC || \
63
CONFIG_USE_CLOCK_HFXOSC_PLL)
64
#error "Cannot use HFXOSC with other clock configurations"
65
#endif
66
67
#if CONFIG_USE_CLOCK_HFROSC_PLL && \
68
(CONFIG_USE_CLOCK_HFXOSC_PLL || CONFIG_USE_CLOCK_HFXOSC || \
69
CONFIG_USE_CLOCK_HFROSC)
70
#error "Cannot use HFROSC_PLL with other clock configurations"
71
#endif
72
73
#if CONFIG_USE_CLOCK_HFROSC && \
74
(CONFIG_USE_CLOCK_HFXOSC_PLL || CONFIG_USE_CLOCK_HFXOSC || \
75
CONFIG_USE_CLOCK_HFROSC_PLL)
76
#error "Cannot use HFROSC with other clock configurations"
77
#endif
78
79
#define CONFIG_CLOCK_PLL_R (1)
/* Divide input clock by 2, mandatory with HFXOSC */
80
#ifndef CONFIG_CLOCK_PLL_F
81
#define CONFIG_CLOCK_PLL_F (39)
/* Multiply REFR by 80, e.g 2 * (39 + 1) */
82
#endif
83
#ifndef CONFIG_CLOCK_PLL_Q
84
#define CONFIG_CLOCK_PLL_Q (1)
/* Divide VCO by 2, e.g 2^1 */
85
#endif
86
87
#if CONFIG_USE_CLOCK_HFXOSC_PLL
88
#define CLOCK_PLL_INPUT_CLOCK MHZ(16)
89
#define CLOCK_PLL_REFR (CLOCK_PLL_INPUT_CLOCK / \
90
(CONFIG_CLOCK_PLL_R + 1))
91
#define CLOCK_PLL_VCO (CLOCK_PLL_REFR * \
92
(2 * (CONFIG_CLOCK_PLL_F + 1)))
93
#define CLOCK_PLL_OUT (CLOCK_PLL_VCO / \
94
(1 << CONFIG_CLOCK_PLL_Q))
95
#define CLOCK_CORECLOCK (CLOCK_PLL_OUT)
/* 320000000Hz with the values used above */
96
97
/* Check PLL settings */
98
#if CLOCK_PLL_REFR != MHZ(8)
99
#error "Only R=2 can be used when using HFXOSC"
100
#endif
101
#if (CLOCK_PLL_VCO < MHZ(384)) || (CLOCK_PLL_VCO > MHZ(768))
102
#error \
103
"VCO frequency must be in the range [384MHz - 768MHz], check the CLOCK_PLL_F value"
104
#endif
105
#if (CLOCK_PLL_OUT < MHZ(48)) || (CLOCK_PLL_OUT > MHZ(384))
106
#error \
107
"PLL output frequency must be in the range [48MHz - 384MHz], check the CLOCK_PLL_Q value"
108
#endif
109
110
#elif CONFIG_USE_CLOCK_HFXOSC
111
#define CLOCK_CORECLOCK MHZ(16)
112
#endif
113
114
/*
115
When using HFROSC input clock, the core clock cannot be computed from settings,
116
in this case, coreclk() returns the configured CPU frequency.
117
*/
118
#ifndef CONFIG_CLOCK_DESIRED_FREQUENCY
119
#define CONFIG_CLOCK_DESIRED_FREQUENCY MHZ(320)
120
#endif
121
122
#ifndef CONFIG_CLOCK_HFROSC_TRIM
123
#define CONFIG_CLOCK_HFROSC_TRIM (6)
/* ~72000000Hz input freq */
124
#endif
125
#ifndef CONFIG_CLOCK_HFROSC_DIV
126
#define CONFIG_CLOCK_HFROSC_DIV (1)
/* Divide by 2 */
127
#endif
130
#ifdef __cplusplus
131
}
132
#endif
133
134
#endif
/* CLK_CONF_H */
kernel_defines.h
Common macros and compiler attributes/pragmas configuration.
units.h
Unit helper macros.
Generated on Wed Nov 27 2024 02:41:42 by
1.9.8