Skip to content

Commit be46875

Browse files
committed
startup configuraton of LF oscilator over mbed configuration system.
1 parent d998437 commit be46875

File tree

3 files changed

+71
-27
lines changed

3 files changed

+71
-27
lines changed

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

Lines changed: 2 additions & 25 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,32 +104,8 @@ void SystemInit(void)
103104
}
104105
*(uint32_t volatile *)0x4006EC14 = 0xC0;
105106
}
106-
107-
108-
#define NRF_LF_SRC_XTAL 2
109-
#define NRF_LF_SRC_SYNTH 3
110-
#define NRF_LF_SRC_RC 4
111-
112-
//MBED_CONF_APP_NORDIC_NRF_LF_CLOCK_SRC
113-
#if MBED_CONF_APP_NORDIC_NRF_LF_CLOCK_SRC == NRF_LF_SRC_SYNTH
114-
#define CLOCK_LFCLKSRC_SRC_TO_USE (CLOCK_LFCLKSRC_SRC_Synth)
115-
#warning synhetic clock
116-
#elif MBED_CONF_APP_NORDIC_NRF_LF_CLOCK_SRC == NRF_LF_SRC_XTAL
117-
#define CLOCK_LFCLKSRC_SRC_TO_USE (CLOCK_LFCLKSRC_SRC_Xtal)
118-
#warning crystal clock
119-
#elif MBED_CONF_APP_NORDIC_NRF_LF_CLOCK_SRC == NRF_LF_SRC_RC // and undefined
120-
#define CLOCK_LFCLKSRC_SRC_TO_USE (CLOCK_LFCLKSRC_SRC_RC)
121-
#warning RC clock
122-
#else
123-
#error Bad LFCLK configuration. Declare proper source through mbed configuration.
124-
#endif
125-
126-
#undef NRF_LF_SRC_XTAL
127-
#undef NRF_LF_SRC_SYNTH
128-
#undef NRF_LF_SRC_RC
129107

130-
// Start the external 32khz crystal oscillator.
131-
//NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos);
108+
// Start the LF oscilator according to the mbed configuration (over the nrf5x_lf_clk_helper.h file)
132109
NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_TO_USE << CLOCK_LFCLKSRC_SRC_Pos);
133110
NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
134111
NRF_CLOCK->TASKS_LFCLKSTART = 1;

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_APP_NORDIC_NRF_LF_CLOCK_SRC
42+
#define MBED_CONF_APP_NORDIC_NRF_LF_CLOCK_SRC (NRF_LF_SRC_XTAL)
43+
#warning Non of LF clk src configurartion! Sett to LF Xtal.
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_APP_NORDIC_NRF_LF_CLOCK_SRC == NRF_LF_SRC_SYNTH
53+
#define CLOCK_LFCLKSRC_SRC_TO_USE (CLOCK_LFCLKSRC_SRC_Synth)
54+
#elif MBED_CONF_APP_NORDIC_NRF_LF_CLOCK_SRC == NRF_LF_SRC_XTAL
55+
#define CLOCK_LFCLKSRC_SRC_TO_USE (CLOCK_LFCLKSRC_SRC_Xtal)
56+
#elif MBED_CONF_APP_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)