Skip to content

Commit 0bb2d33

Browse files
authored
Merge pull request #24 from nvlsianpu/nrf5x_lf_clk_config
NRF5x LF clk config over mbed config system
2 parents 3368fa8 + fa5937f commit 0bb2d33

File tree

4 files changed

+87
-7
lines changed

4 files changed

+87
-7
lines changed

hal/targets.json

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1107,7 +1107,13 @@
11071107
},
11081108
"program_cycle_s": 6,
11091109
"default_build": "small",
1110-
"features": ["BLE"]
1110+
"features": ["BLE"],
1111+
"config":{
1112+
"lf_clock_src": {
1113+
"value": "NRF_LF_SRC_XTAL",
1114+
"macro_name": "MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC"
1115+
}
1116+
}
11111117
},
11121118
"MCU_NRF51_16K_BASE": {
11131119
"inherits": ["MCU_NRF51"],
@@ -1721,7 +1727,13 @@
17211727
"toolchains": ["ARM_STD", "GCC_ARM", "IAR"]
17221728
},
17231729
"MERGE_BOOTLOADER": false,
1724-
"features": ["BLE"]
1730+
"features": ["BLE"],
1731+
"config":{
1732+
"lf_clock_src": {
1733+
"value": "NRF_LF_SRC_XTAL",
1734+
"macro_name": "MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC"
1735+
}
1736+
}
17251737
},
17261738
"NRF52_DK": {
17271739
"supported_form_factors": ["ARDUINO"],

hal/targets/cmsis/TARGET_NORDIC/TARGET_NRF5/TARGET_MCU_NRF51822/system_nrf51.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#include <stdbool.h>
4545
#include "nrf.h"
4646
#include "system_nrf51.h"
47+
#include "nrf5x_lf_clk_helper.h"
4748

4849
/*lint ++flb "Enter library region" */
4950

@@ -103,9 +104,9 @@ void SystemInit(void)
103104
}
104105
*(uint32_t volatile *)0x4006EC14 = 0xC0;
105106
}
106-
107-
// Start the external 32khz crystal oscillator.
108-
NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos);
107+
108+
// Start the LF oscilator according to the mbed configuration (over the nrf5x_lf_clk_helper.h file)
109+
NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_TO_USE << CLOCK_LFCLKSRC_SRC_Pos);
109110
NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
110111
NRF_CLOCK->TASKS_LFCLKSTART = 1;
111112

hal/targets/cmsis/TARGET_NORDIC/TARGET_NRF5/TARGET_MCU_NRF52832/system_nrf52.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include <stdbool.h>
4242
#include "nrf.h"
4343
#include "system_nrf52.h"
44+
#include "nrf5x_lf_clk_helper.h"
4445

4546
/*lint ++flb "Enter library region" */
4647

@@ -197,8 +198,8 @@ void SystemInit(void)
197198

198199
SystemCoreClockUpdate();
199200

200-
// Start the external 32khz crystal oscillator.
201-
NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos);
201+
// Start the LF oscilator according to the mbed configuration (over the nrf5x_lf_clk_helper.h file)
202+
NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_TO_USE << CLOCK_LFCLKSRC_SRC_Pos);
202203
NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
203204
NRF_CLOCK->TASKS_LFCLKSTART = 1;
204205

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
* Copyright (c) 2016 Nordic Semiconductor ASA
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without modification,
6+
* are permitted provided that the following conditions are met:
7+
*
8+
* 1. Redistributions of source code must retain the above copyright notice, this list
9+
* of conditions and the following disclaimer.
10+
*
11+
* 2. Redistributions in binary form, except as embedded into a Nordic Semiconductor ASA
12+
* integrated circuit in a product or a software update for such product, must reproduce
13+
* the above copyright notice, this list of conditions and the following disclaimer in
14+
* the documentation and/or other materials provided with the distribution.
15+
*
16+
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its contributors may be
17+
* used to endorse or promote products derived from this software without specific prior
18+
* written permission.
19+
*
20+
* 4. This software, with or without modification, must only be used with a
21+
* Nordic Semiconductor ASA integrated circuit.
22+
*
23+
* 5. Any software provided in binary or object form under this license must not be reverse
24+
* engineered, decompiled, modified and/or disassembled.
25+
*
26+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
27+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
30+
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
33+
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36+
*
37+
*/
38+
39+
#ifndef __NRF5X_LF_CLK_HELPER_H_
40+
41+
#ifndef MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC
42+
#define MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC (NRF_LF_SRC_XTAL)
43+
#warning No configuration for LF clock source. Xtal source will be used as a default configuration.
44+
#endif
45+
46+
47+
48+
#define NRF_LF_SRC_XTAL 2
49+
#define NRF_LF_SRC_SYNTH 3
50+
#define NRF_LF_SRC_RC 4
51+
52+
#if MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC == NRF_LF_SRC_SYNTH
53+
#define CLOCK_LFCLKSRC_SRC_TO_USE (CLOCK_LFCLKSRC_SRC_Synth)
54+
#elif MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC == NRF_LF_SRC_XTAL
55+
#define CLOCK_LFCLKSRC_SRC_TO_USE (CLOCK_LFCLKSRC_SRC_Xtal)
56+
#elif MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC == NRF_LF_SRC_RC
57+
#define CLOCK_LFCLKSRC_SRC_TO_USE (CLOCK_LFCLKSRC_SRC_RC)
58+
#else
59+
#error Bad LFCLK configuration. Declare proper source through mbed configuration.
60+
#endif
61+
62+
#undef NRF_LF_SRC_XTAL
63+
#undef NRF_LF_SRC_SYNTH
64+
#undef NRF_LF_SRC_RC
65+
66+
#endif

0 commit comments

Comments
 (0)