Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
arduino-nRF5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
xpstem
arduino-nRF5
Commits
28d37854
Commit
28d37854
authored
Apr 02, 2016
by
Sandeep Mistry
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial nRF51 and Bluz DK support
parent
e83b60a8
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
910 additions
and
25 deletions
+910
-25
boards.txt
boards.txt
+28
-2
cores/nRF5/nRF5_SDK_11/components/drivers_nrf/hal/nrf_saadc.c
...s/nRF5/nRF5_SDK_11/components/drivers_nrf/hal/nrf_saadc.c
+5
-1
cores/nRF5/nRF5_SDK_11/components/toolchain/gcc/gcc_startup_nrf51.S
.../nRF5_SDK_11/components/toolchain/gcc/gcc_startup_nrf51.S
+290
-0
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf51.c
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf51.c
+155
-0
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf51.h
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf51.h
+69
-0
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf52.c
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf52.c
+22
-18
cores/nRF5/wiring_analog_nRF51.c
cores/nRF5/wiring_analog_nRF51.c
+82
-0
cores/nRF5/wiring_analog_nRF52.c
cores/nRF5/wiring_analog_nRF52.c
+4
-0
platform.txt
platform.txt
+4
-4
variants/BluzDK/linker_scripts/gcc/BluzDK.ld
variants/BluzDK/linker_scripts/gcc/BluzDK.ld
+12
-0
variants/BluzDK/pins_arduino.h
variants/BluzDK/pins_arduino.h
+17
-0
variants/BluzDK/variant.cpp
variants/BluzDK/variant.cpp
+72
-0
variants/BluzDK/variant.h
variants/BluzDK/variant.h
+150
-0
No files found.
boards.txt
View file @
28d37854
...
@@ -25,7 +25,7 @@ nRF52DK.upload.interface=jlink
...
@@ -25,7 +25,7 @@ nRF52DK.upload.interface=jlink
nRF52DK.upload.target=nrf51
nRF52DK.upload.target=nrf51
nRF52DK.upload.address=0x0
nRF52DK.upload.address=0x0
nRF52DK.upload.maximum_size=524288
nRF52DK.upload.maximum_size=524288
nRF52DK.upload.setup_command=transport select swd
nRF52DK.upload.setup_command=transport select swd
;
nRF52DK.upload.use_1200bps_touch=false
nRF52DK.upload.use_1200bps_touch=false
nRF52DK.upload.wait_for_upload_port=false
nRF52DK.upload.wait_for_upload_port=false
nRF52DK.upload.native_usb=false
nRF52DK.upload.native_usb=false
...
@@ -36,5 +36,31 @@ nRF52DK.build.board=NRF52_DK
...
@@ -36,5 +36,31 @@ nRF52DK.build.board=NRF52_DK
nRF52DK.build.core=nRF5
nRF52DK.build.core=nRF5
nRF52DK.build.variant=nRF52DK
nRF52DK.build.variant=nRF52DK
nRF52DK.build.variant_system_lib=
nRF52DK.build.variant_system_lib=
nRF52DK.build.extra_flags=
nRF52DK.build.extra_flags=-DNRF52
nRF52DK.build.float_flags=-mfloat-abi=hard -mfpu=fpv4-sp-d16
nRF52DK.build.ldscript=linker_scripts/gcc/nRF52DK.ld
nRF52DK.build.ldscript=linker_scripts/gcc/nRF52DK.ld
BluzDK.name=Bluz DK
BluzDK.upload.tool=nRF5:openocd
BluzDK.upload.protocol=
BluzDK.upload.interface=jlink
BluzDK.upload.target=nrf51
BluzDK.upload.address=0x0
BluzDK.upload.maximum_size=262144
BluzDK.upload.setup_command=transport select swd; set WORKAREASIZE 0;
BluzDK.upload.use_1200bps_touch=false
BluzDK.upload.wait_for_upload_port=false
BluzDK.upload.native_usb=false
BluzDK.build.mcu=cortex-m0
BluzDK.build.f_cpu=16000000
BluzDK.build.board=BLUZ_DK
BluzDK.build.core=nRF5
BluzDK.build.variant=BluzDK
BluzDK.build.variant_system_lib=
BluzDK.build.extra_flags=-DNRF51
BluzDK.build.float_flags=
BluzDK.build.ldscript=linker_scripts/gcc/BluzDK.ld
cores/nRF5/nRF5_SDK_11/components/drivers_nrf/hal/nrf_saadc.c
View file @
28d37854
...
@@ -15,11 +15,13 @@
...
@@ -15,11 +15,13 @@
* @brief SAADC HAL implementation
* @brief SAADC HAL implementation
*/
*/
#ifdef NRF52
#include "nrf_saadc.h"
#include "nrf_saadc.h"
void
nrf_saadc_channel_init
(
uint8_t
channel
,
nrf_saadc_channel_config_t
const
*
const
config
)
void
nrf_saadc_channel_init
(
uint8_t
channel
,
nrf_saadc_channel_config_t
const
*
const
config
)
{
{
NRF_SAADC
->
CH
[
channel
].
CONFIG
=
NRF_SAADC
->
CH
[
channel
].
CONFIG
=
((
config
->
resistor_p
<<
SAADC_CH_CONFIG_RESP_Pos
)
&
SAADC_CH_CONFIG_RESP_Msk
)
((
config
->
resistor_p
<<
SAADC_CH_CONFIG_RESP_Pos
)
&
SAADC_CH_CONFIG_RESP_Msk
)
|
((
config
->
resistor_n
<<
SAADC_CH_CONFIG_RESN_Pos
)
&
SAADC_CH_CONFIG_RESN_Msk
)
|
((
config
->
resistor_n
<<
SAADC_CH_CONFIG_RESN_Pos
)
&
SAADC_CH_CONFIG_RESN_Msk
)
|
((
config
->
gain
<<
SAADC_CH_CONFIG_GAIN_Pos
)
&
SAADC_CH_CONFIG_GAIN_Msk
)
|
((
config
->
gain
<<
SAADC_CH_CONFIG_GAIN_Pos
)
&
SAADC_CH_CONFIG_GAIN_Msk
)
...
@@ -29,3 +31,5 @@ void nrf_saadc_channel_init(uint8_t channel, nrf_saadc_channel_config_t const *
...
@@ -29,3 +31,5 @@ void nrf_saadc_channel_init(uint8_t channel, nrf_saadc_channel_config_t const *
nrf_saadc_channel_input_set
(
channel
,
config
->
pin_p
,
config
->
pin_n
);
nrf_saadc_channel_input_set
(
channel
,
config
->
pin_p
,
config
->
pin_n
);
return
;
return
;
}
}
#endif
cores/nRF5/nRF5_SDK_11/components/toolchain/gcc/gcc_startup_nrf51.S
0 → 100755
View file @
28d37854
/*
Copyright
(
c
)
2013
ARM
LIMITED
All
rights
reserved
.
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
-
Redistributions
of
source
code
must
retain
the
above
copyright
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
-
Redistributions
in
binary
form
must
reproduce
the
above
copyright
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
documentation
and
/
or
other
materials
provided
with
the
distribution
.
-
Neither
the
name
of
ARM
nor
the
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
derived
from
this
software
without
specific
prior
written
permission
.
THIS
SOFTWARE
IS
PROVIDED
BY
THE
COPYRIGHT
HOLDERS
AND
CONTRIBUTORS
"AS IS"
AND
ANY
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
DISCLAIMED
.
IN
NO
EVENT
SHALL
COPYRIGHT
HOLDERS
AND
CONTRIBUTORS
BE
LIABLE
FOR
ANY
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
---------------------------------------------------------------------------*/
.
syntax
unified
.
arch
armv6
-
m
.
section
.
stack
.
align
3
#ifdef __STACK_SIZE
.
equ
Stack_Size
,
__STACK_SIZE
#
else
.
equ
Stack_Size
,
2048
#
endif
.
globl
__StackTop
.
globl
__StackLimit
__StackLimit
:
.
space
Stack_Size
.
size
__StackLimit
,
.
-
__StackLimit
__StackTop
:
.
size
__StackTop
,
.
-
__StackTop
.
section
.
heap
.
align
3
#ifdef __HEAP_SIZE
.
equ
Heap_Size
,
__HEAP_SIZE
#
else
.
equ
Heap_Size
,
2048
#
endif
.
globl
__HeapBase
.
globl
__HeapLimit
__HeapBase
:
.
if
Heap_Size
.
space
Heap_Size
.
endif
.
size
__HeapBase
,
.
-
__HeapBase
__HeapLimit
:
.
size
__HeapLimit
,
.
-
__HeapLimit
.
section
.
isr_vector
.
align
2
.
globl
__isr_vector
__isr_vector
:
.
long
__StackTop
/*
Top
of
Stack
*/
.
long
Reset_Handler
.
long
NMI_Handler
.
long
HardFault_Handler
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
SVC_Handler
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
PendSV_Handler
.
long
SysTick_Handler
/
*
External
Interrupts
*/
.
long
POWER_CLOCK_IRQHandler
.
long
RADIO_IRQHandler
.
long
UART0_IRQHandler
.
long
SPI0_TWI0_IRQHandler
.
long
SPI1_TWI1_IRQHandler
.
long
0
/*
Reserved
*/
.
long
GPIOTE_IRQHandler
.
long
ADC_IRQHandler
.
long
TIMER0_IRQHandler
.
long
TIMER1_IRQHandler
.
long
TIMER2_IRQHandler
.
long
RTC0_IRQHandler
.
long
TEMP_IRQHandler
.
long
RNG_IRQHandler
.
long
ECB_IRQHandler
.
long
CCM_AAR_IRQHandler
.
long
WDT_IRQHandler
.
long
RTC1_IRQHandler
.
long
QDEC_IRQHandler
.
long
LPCOMP_IRQHandler
.
long
SWI0_IRQHandler
.
long
SWI1_IRQHandler
.
long
SWI2_IRQHandler
.
long
SWI3_IRQHandler
.
long
SWI4_IRQHandler
.
long
SWI5_IRQHandler
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
long
0
/*
Reserved
*/
.
size
__isr_vector
,
.
-
__isr_vector
/*
Reset
Handler
*/
.
equ
NRF_POWER_RAMON_ADDRESS
,
0x40000524
.
equ
NRF_POWER_RAMONB_ADDRESS
,
0x40000554
.
equ
NRF_POWER_RAMONx_RAMxON_ONMODE_Msk
,
0x3
.
text
.
thumb
.
thumb_func
.
align
1
.
globl
Reset_Handler
.
type
Reset_Handler
,
%
function
Reset_Handler
:
MOVS
R1
,
#
NRF_POWER_RAMONx_RAMxON_ONMODE_Msk
LDR
R0
,
=
NRF_POWER_RAMON_ADDRESS
LDR
R2
,
[
R0
]
ORRS
R2
,
R1
STR
R2
,
[
R0
]
LDR
R0
,
=
NRF_POWER_RAMONB_ADDRESS
LDR
R2
,
[
R0
]
ORRS
R2
,
R1
STR
R2
,
[
R0
]
/*
Loop
to
copy
data
from
read
only
memory
to
RAM
.
*
The
ranges
of
copy
from
/
to
are
specified
by
following
symbols
:
*
__etext
:
LMA
of
start
of
the
section
to
copy
from
.
Usually
end
of
text
*
__data_start__
:
VMA
of
start
of
the
section
to
copy
to
.
*
__bss_start__
:
VMA
of
end
of
the
section
to
copy
to
.
Normally
__data_end__
is
used
,
but
by
using
__bss_start__
*
the
user
can
add
their
own
initialized
data
section
before
BSS
section
with
the
INTERT
AFTER
command
.
*
*
All
addresses
must
be
aligned
to
4
bytes
boundary
.
*/
ldr
r1
,
=
__etext
ldr
r2
,
=
__data_start__
ldr
r3
,
=
__bss_start__
subs
r3
,
r2
ble
.
L_loop1_done
.
L_loop1
:
subs
r3
,
#
4
ldr
r0
,
[
r1
,
r3
]
str
r0
,
[
r2
,
r3
]
bgt
.
L_loop1
.
L_loop1_done
:
/*
This
part
of
work
usually
is
done
in
C
library
startup
code
.
Otherwise
,
*
define
__STARTUP_CLEAR_BSS
to
enable
it
in
this
startup
.
This
section
*
clears
the
RAM
where
BSS
data
is
located
.
*
*
The
BSS
section
is
specified
by
following
symbols
*
__bss_start__
:
start
of
the
BSS
section
.
*
__bss_end__
:
end
of
the
BSS
section
.
*
*
All
addresses
must
be
aligned
to
4
bytes
boundary
.
*/
#ifdef __STARTUP_CLEAR_BSS
ldr
r1
,
=
__bss_start__
ldr
r2
,
=
__bss_end__
movs
r0
,
0
subs
r2
,
r1
ble
.
L_loop3_done
.
L_loop3
:
subs
r2
,
#
4
str
r0
,
[
r1
,
r2
]
bgt
.
L_loop3
.
L_loop3_done
:
#endif /* __STARTUP_CLEAR_BSS */
/*
Execute
SystemInit
function
.
*/
bl
SystemInit
/*
Call
_start
function
provided
by
libraries
.
*
If
those
libraries
are
not
accessible
,
define
__START
as
your
entry
point
.
*/
#ifndef __START
#define __START _start
#
endif
bl
__START
.
pool
.
size
Reset_Handler
,
.
-
Reset_Handler
.
section
".text"
/*
Dummy
Exception
Handlers
(
infinite
loops
which
can
be
modified
)
*/
.
weak
NMI_Handler
.
type
NMI_Handler
,
%
function
NMI_Handler
:
b
.
.
size
NMI_Handler
,
.
-
NMI_Handler
.
weak
HardFault_Handler
.
type
HardFault_Handler
,
%
function
HardFault_Handler
:
b
.
.
size
HardFault_Handler
,
.
-
HardFault_Handler
.
weak
SVC_Handler
.
type
SVC_Handler
,
%
function
SVC_Handler
:
b
.
.
size
SVC_Handler
,
.
-
SVC_Handler
.
weak
PendSV_Handler
.
type
PendSV_Handler
,
%
function
PendSV_Handler
:
b
.
.
size
PendSV_Handler
,
.
-
PendSV_Handler
.
weak
SysTick_Handler
.
type
SysTick_Handler
,
%
function
SysTick_Handler
:
b
.
.
size
SysTick_Handler
,
.
-
SysTick_Handler
/*
IRQ
Handlers
*/
.
globl
Default_Handler
.
type
Default_Handler
,
%
function
Default_Handler
:
b
.
.
size
Default_Handler
,
.
-
Default_Handler
.
macro
IRQ
handler
.
weak
\
handler
.
set
\
handler
,
Default_Handler
.
endm
IRQ
POWER_CLOCK_IRQHandler
IRQ
RADIO_IRQHandler
IRQ
UART0_IRQHandler
IRQ
SPI0_TWI0_IRQHandler
IRQ
SPI1_TWI1_IRQHandler
IRQ
GPIOTE_IRQHandler
IRQ
ADC_IRQHandler
IRQ
TIMER0_IRQHandler
IRQ
TIMER1_IRQHandler
IRQ
TIMER2_IRQHandler
IRQ
RTC0_IRQHandler
IRQ
TEMP_IRQHandler
IRQ
RNG_IRQHandler
IRQ
ECB_IRQHandler
IRQ
CCM_AAR_IRQHandler
IRQ
WDT_IRQHandler
IRQ
RTC1_IRQHandler
IRQ
QDEC_IRQHandler
IRQ
LPCOMP_IRQHandler
IRQ
SWI0_IRQHandler
IRQ
SWI1_IRQHandler
IRQ
SWI2_IRQHandler
IRQ
SWI3_IRQHandler
IRQ
SWI4_IRQHandler
IRQ
SWI5_IRQHandler
.
end
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf51.c
0 → 100755
View file @
28d37854
/* Copyright (c) 2015, Nordic Semiconductor ASA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* * Neither the name of Nordic Semiconductor ASA nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifdef NRF51
/* NOTE: Template files (including this one) are application specific and therefore expected to
be copied into the application project folder prior to its use! */
#include <stdint.h>
#include <stdbool.h>
#include "nrf.h"
#include "system_nrf51.h"
/*lint ++flb "Enter library region" */
#define __SYSTEM_CLOCK (16000000UL)
/*!< nRF51 devices use a fixed System Clock Frequency of 16MHz */
static
bool
is_manual_peripheral_setup_needed
(
void
);
static
bool
is_disabled_in_debug_needed
(
void
);
static
bool
is_peripheral_domain_setup_needed
(
void
);
#if defined ( __CC_ARM )
uint32_t
SystemCoreClock
__attribute__
((
used
))
=
__SYSTEM_CLOCK
;
#elif defined ( __ICCARM__ )
__root
uint32_t
SystemCoreClock
=
__SYSTEM_CLOCK
;
#elif defined ( __GNUC__ )
uint32_t
SystemCoreClock
__attribute__
((
used
))
=
__SYSTEM_CLOCK
;
#endif
void
SystemCoreClockUpdate
(
void
)
{
SystemCoreClock
=
__SYSTEM_CLOCK
;
}
void
SystemInit
(
void
)
{
/* If desired, switch off the unused RAM to lower consumption by the use of RAMON register.
It can also be done in the application main() function. */
/* Prepare the peripherals for use as indicated by the PAN 26 "System: Manual setup is required
to enable the use of peripherals" found at Product Anomaly document for your device found at
https://www.nordicsemi.com/. The side effect of executing these instructions in the devices
that do not need it is that the new peripherals in the second generation devices (LPCOMP for
example) will not be available. */
if
(
is_manual_peripheral_setup_needed
())
{
*
(
uint32_t
volatile
*
)
0x40000504
=
0xC007FFDF
;
*
(
uint32_t
volatile
*
)
0x40006C18
=
0x00008000
;
}
/* Disable PROTENSET registers under debug, as indicated by PAN 59 "MPU: Reset value of DISABLEINDEBUG
register is incorrect" found at Product Anomaly document for your device found at
https://www.nordicsemi.com/. There is no side effect of using these instruction if not needed. */
if
(
is_disabled_in_debug_needed
())
{
NRF_MPU
->
DISABLEINDEBUG
=
MPU_DISABLEINDEBUG_DISABLEINDEBUG_Disabled
<<
MPU_DISABLEINDEBUG_DISABLEINDEBUG_Pos
;
}
/* Execute the following code to eliminate excessive current in sleep mode with RAM retention in nRF51802 devices,
as indicated by PAN 76 "System: Excessive current in sleep mode with retention" found at Product Anomaly document
for your device found at https://www.nordicsemi.com/. */
if
(
is_peripheral_domain_setup_needed
()){
if
(
*
(
uint32_t
volatile
*
)
0x4006EC00
!=
1
){
*
(
uint32_t
volatile
*
)
0x4006EC00
=
0x9375
;
while
(
*
(
uint32_t
volatile
*
)
0x4006EC00
!=
1
){
}
}
*
(
uint32_t
volatile
*
)
0x4006EC14
=
0xC0
;
}
}
static
bool
is_manual_peripheral_setup_needed
(
void
)
{
if
((((
*
(
uint32_t
*
)
0xF0000FE0
)
&
0x000000FF
)
==
0x1
)
&&
(((
*
(
uint32_t
*
)
0xF0000FE4
)
&
0x0000000F
)
==
0x0
))
{
if
((((
*
(
uint32_t
*
)
0xF0000FE8
)
&
0x000000F0
)
==
0x00
)
&&
(((
*
(
uint32_t
*
)
0xF0000FEC
)
&
0x000000F0
)
==
0x0
))
{
return
true
;
}
if
((((
*
(
uint32_t
*
)
0xF0000FE8
)
&
0x000000F0
)
==
0x10
)
&&
(((
*
(
uint32_t
*
)
0xF0000FEC
)
&
0x000000F0
)
==
0x0
))
{
return
true
;
}
if
((((
*
(
uint32_t
*
)
0xF0000FE8
)
&
0x000000F0
)
==
0x30
)
&&
(((
*
(
uint32_t
*
)
0xF0000FEC
)
&
0x000000F0
)
==
0x0
))
{
return
true
;
}
}
return
false
;
}
static
bool
is_disabled_in_debug_needed
(
void
)
{
if
((((
*
(
uint32_t
*
)
0xF0000FE0
)
&
0x000000FF
)
==
0x1
)
&&
(((
*
(
uint32_t
*
)
0xF0000FE4
)
&
0x0000000F
)
==
0x0
))
{
if
((((
*
(
uint32_t
*
)
0xF0000FE8
)
&
0x000000F0
)
==
0x40
)
&&
(((
*
(
uint32_t
*
)
0xF0000FEC
)
&
0x000000F0
)
==
0x0
))
{
return
true
;
}
}
return
false
;
}
static
bool
is_peripheral_domain_setup_needed
(
void
)
{
if
((((
*
(
uint32_t
*
)
0xF0000FE0
)
&
0x000000FF
)
==
0x1
)
&&
(((
*
(
uint32_t
*
)
0xF0000FE4
)
&
0x0000000F
)
==
0x0
))
{
if
((((
*
(
uint32_t
*
)
0xF0000FE8
)
&
0x000000F0
)
==
0xA0
)
&&
(((
*
(
uint32_t
*
)
0xF0000FEC
)
&
0x000000F0
)
==
0x0
))
{
return
true
;
}
if
((((
*
(
uint32_t
*
)
0xF0000FE8
)
&
0x000000F0
)
==
0xD0
)
&&
(((
*
(
uint32_t
*
)
0xF0000FEC
)
&
0x000000F0
)
==
0x0
))
{
return
true
;
}
}
return
false
;
}
/*lint --flb "Leave library region" */
#endif
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf51.h
0 → 100755
View file @
28d37854
/* Copyright (c) 2015, Nordic Semiconductor ASA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* * Neither the name of Nordic Semiconductor ASA nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef SYSTEM_NRF51_H
#define SYSTEM_NRF51_H
#ifdef __cplusplus
extern
"C"
{
#endif
#include <stdint.h>
extern
uint32_t
SystemCoreClock
;
/*!< System Clock Frequency (Core Clock) */
/**
* Initialize the system
*
* @param none
* @return none
*
* @brief Setup the microcontroller system.
* Initialize the System and update the SystemCoreClock variable.
*/
extern
void
SystemInit
(
void
);
/**
* Update SystemCoreClock variable
*
* @param none
* @return none
*
* @brief Updates the SystemCoreClock with current core Clock
* retrieved from cpu registers.
*/
extern
void
SystemCoreClockUpdate
(
void
);
#ifdef __cplusplus
}
#endif
#endif
/* SYSTEM_NRF51_H */
cores/nRF5/nRF5_SDK_11/components/toolchain/system_nrf52.c
View file @
28d37854
...
@@ -28,6 +28,8 @@
...
@@ -28,6 +28,8 @@
*
*
*/
*/
#ifdef NRF52
#include <stdint.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdbool.h>
#include "nrf.h"
#include "nrf.h"
...
@@ -64,21 +66,21 @@ void SystemInit(void)
...
@@ -64,21 +66,21 @@ void SystemInit(void)
/* Workaround for Errata 16 "System: RAM may be corrupt on wakeup from CPU IDLE" found at the Errata document
/* Workaround for Errata 16 "System: RAM may be corrupt on wakeup from CPU IDLE" found at the Errata document
for your device located at https://infocenter.nordicsemi.com/ */
for your device located at https://infocenter.nordicsemi.com/ */
if
(
errata_16
()){
if
(
errata_16
()){
*
(
volatile
uint32_t
*
)
0x4007C074
=
3131961357ul
;
*
(
volatile
uint32_t
*
)
0x4007C074
=
3131961357ul
;
}
}
/* Workaround for Errata 31 "CLOCK: Calibration values are not correctly loaded from FICR at reset" found at the Errata document
/* Workaround for Errata 31 "CLOCK: Calibration values are not correctly loaded from FICR at reset" found at the Errata document
for your device located at https://infocenter.nordicsemi.com/ */
for your device located at https://infocenter.nordicsemi.com/ */
if
(
errata_31
()){
if
(
errata_31
()){
*
(
volatile
uint32_t
*
)
0x4000053C
=
((
*
(
volatile
uint32_t
*
)
0x10000244
)
&
0x0000E000
)
>>
13
;
*
(
volatile
uint32_t
*
)
0x4000053C
=
((
*
(
volatile
uint32_t
*
)
0x10000244
)
&
0x0000E000
)
>>
13
;
}
}
/* Workaround for Errata 32 "DIF: Debug session automatically enables TracePort pins" found at the Errata document
/* Workaround for Errata 32 "DIF: Debug session automatically enables TracePort pins" found at the Errata document
for your device located at https://infocenter.nordicsemi.com/ */
for your device located at https://infocenter.nordicsemi.com/ */
if
(
errata_32
()){
if
(
errata_32
()){
CoreDebug
->
DEMCR
&=
~
CoreDebug_DEMCR_TRCENA_Msk
;
CoreDebug
->
DEMCR
&=
~
CoreDebug_DEMCR_TRCENA_Msk
;
}
}
/* Workaround for Errata 36 "CLOCK: Some registers are not reset when expected" found at the Errata document
/* Workaround for Errata 36 "CLOCK: Some registers are not reset when expected" found at the Errata document
for your device located at https://infocenter.nordicsemi.com/ */
for your device located at https://infocenter.nordicsemi.com/ */
if
(
errata_36
()){
if
(
errata_36
()){
...
@@ -86,22 +88,22 @@ void SystemInit(void)
...
@@ -86,22 +88,22 @@ void SystemInit(void)
NRF_CLOCK
->
EVENTS_CTTO
=
0
;
NRF_CLOCK
->
EVENTS_CTTO
=
0
;
NRF_CLOCK
->
CTIV
=
0
;
NRF_CLOCK
->
CTIV
=
0
;
}
}
/* Workaround for Errata 37 "RADIO: Encryption engine is slow by default" found at the Errata document
/* Workaround for Errata 37 "RADIO: Encryption engine is slow by default" found at the Errata document
for your device located at https://infocenter.nordicsemi.com/ */
for your device located at https://infocenter.nordicsemi.com/ */
if
(
errata_37
()){
if
(
errata_37
()){
*
(
volatile
uint32_t
*
)
0x400005A0
=
0x3
;
*
(
volatile
uint32_t
*
)
0x400005A0
=
0x3
;
}
}
/* Workaround for Errata 57 "NFCT: NFC Modulation amplitude" found at the Errata document
/* Workaround for Errata 57 "NFCT: NFC Modulation amplitude" found at the Errata document
for your device located at https://infocenter.nordicsemi.com/ */
for your device located at https://infocenter.nordicsemi.com/ */
if
(
errata_57
()){
if
(
errata_57
()){
*
(
volatile
uint32_t
*
)
0x40005610
=
0x00000005
;
*
(
volatile
uint32_t
*
)
0x40005610
=
0x00000005
;
*
(
volatile
uint32_t
*
)
0x40005688
=
0x00000001
;
*
(
volatile
uint32_t
*
)
0x40005688
=
0x00000001
;
*
(
volatile
uint32_t
*
)
0x40005618
=
0x00000000
;
*
(
volatile
uint32_t
*
)
0x40005618
=
0x00000000
;
*
(
volatile
uint32_t
*
)
0x40005614
=
0x0000003F
;
*
(
volatile
uint32_t
*
)
0x40005614
=
0x0000003F
;
}
}
/* Workaround for Errata 66 "TEMP: Linearity specification not met with default settings" found at the Errata document
/* Workaround for Errata 66 "TEMP: Linearity specification not met with default settings" found at the Errata document
for your device located at https://infocenter.nordicsemi.com/ */
for your device located at https://infocenter.nordicsemi.com/ */
if
(
errata_66
()){
if
(
errata_66
()){
...
@@ -123,16 +125,16 @@ void SystemInit(void)
...
@@ -123,16 +125,16 @@ void SystemInit(void)
NRF_TEMP
->
T3
=
NRF_FICR
->
TEMP
.
T3
;
NRF_TEMP
->
T3
=
NRF_FICR
->
TEMP
.
T3
;
NRF_TEMP
->
T4
=
NRF_FICR
->
TEMP
.
T4
;
NRF_TEMP
->
T4
=
NRF_FICR
->
TEMP
.
T4
;
}
}
/* Enable the FPU if the compiler used floating point unit instructions. __FPU_USED is a MACRO defined by the
/* Enable the FPU if the compiler used floating point unit instructions. __FPU_USED is a MACRO defined by the
* compiler. Since the FPU consumes energy, remember to disable FPU use in the compiler if floating point unit
* compiler. Since the FPU consumes energy, remember to disable FPU use in the compiler if floating point unit
* operations are not used in your code. */
* operations are not used in your code. */
#if (__FPU_USED == 1)
#if (__FPU_USED == 1)
SCB
->
CPACR
|=
(
3UL
<<
20
)
|
(
3UL
<<
22
);
SCB
->
CPACR
|=
(
3UL
<<
20
)
|
(
3UL
<<
22
);
__DSB
();
__DSB
();
__ISB
();
__ISB
();
#endif
#endif
/* Configure NFCT pins as GPIOs if NFCT is not to be used in your code. If CONFIG_NFCT_PINS_AS_GPIOS is not defined,
/* Configure NFCT pins as GPIOs if NFCT is not to be used in your code. If CONFIG_NFCT_PINS_AS_GPIOS is not defined,
two GPIOs (see Product Specification to see which ones) will be reserved for NFC and will not be available as
two GPIOs (see Product Specification to see which ones) will be reserved for NFC and will not be available as
normal GPIOs. */
normal GPIOs. */
...
@@ -147,9 +149,9 @@ void SystemInit(void)
...
@@ -147,9 +149,9 @@ void SystemInit(void)
NVIC_SystemReset
();
NVIC_SystemReset
();
}
}
#endif
#endif
/* Configure GPIO pads as pPin Reset pin if Pin Reset capabilities desired. If CONFIG_GPIO_AS_PINRESET is not
/* Configure GPIO pads as pPin Reset pin if Pin Reset capabilities desired. If CONFIG_GPIO_AS_PINRESET is not
defined, pin reset will not be available. One GPIO (see Product Specification to see which one) will then be
defined, pin reset will not be available. One GPIO (see Product Specification to see which one) will then be
reserved for PinReset and not available as normal GPIO. */
reserved for PinReset and not available as normal GPIO. */
#if defined (CONFIG_GPIO_AS_PINRESET)
#if defined (CONFIG_GPIO_AS_PINRESET)
if
(((
NRF_UICR
->
PSELRESET
[
0
]
&
UICR_PSELRESET_CONNECT_Msk
)
!=
(
UICR_PSELRESET_CONNECT_Connected
<<
UICR_PSELRESET_CONNECT_Pos
))
||
if
(((
NRF_UICR
->
PSELRESET
[
0
]
&
UICR_PSELRESET_CONNECT_Msk
)
!=
(
UICR_PSELRESET_CONNECT_Connected
<<
UICR_PSELRESET_CONNECT_Pos
))
||
...
@@ -165,7 +167,7 @@ void SystemInit(void)
...
@@ -165,7 +167,7 @@ void SystemInit(void)
NVIC_SystemReset
();
NVIC_SystemReset
();
}
}
#endif
#endif
/* Enable SWO trace functionality. If ENABLE_SWO is not defined, SWO pin will be used as GPIO (see Product
/* Enable SWO trace functionality. If ENABLE_SWO is not defined, SWO pin will be used as GPIO (see Product
Specification to see which one). */
Specification to see which one). */
#if defined (ENABLE_SWO)
#if defined (ENABLE_SWO)
...
@@ -173,8 +175,8 @@ void SystemInit(void)
...
@@ -173,8 +175,8 @@ void SystemInit(void)
NRF_CLOCK
->
TRACECONFIG
|=
CLOCK_TRACECONFIG_TRACEMUX_Serial
<<
CLOCK_TRACECONFIG_TRACEMUX_Pos
;
NRF_CLOCK
->
TRACECONFIG
|=
CLOCK_TRACECONFIG_TRACEMUX_Serial
<<
CLOCK_TRACECONFIG_TRACEMUX_Pos
;
NRF_P0
->
PIN_CNF
[
18
]
=
(
GPIO_PIN_CNF_DRIVE_H0H1
<<
GPIO_PIN_CNF_DRIVE_Pos
)
|
(
GPIO_PIN_CNF_INPUT_Connect
<<
GPIO_PIN_CNF_INPUT_Pos
)
|
(
GPIO_PIN_CNF_DIR_Output
<<
GPIO_PIN_CNF_DIR_Pos
);
NRF_P0
->
PIN_CNF
[
18
]
=
(
GPIO_PIN_CNF_DRIVE_H0H1
<<
GPIO_PIN_CNF_DRIVE_Pos
)
|
(
GPIO_PIN_CNF_INPUT_Connect
<<
GPIO_PIN_CNF_INPUT_Pos
)
|
(
GPIO_PIN_CNF_DIR_Output
<<
GPIO_PIN_CNF_DIR_Pos
);
#endif
#endif
/* Enable Trace functionality. If ENABLE_TRACE is not defined, TRACE pins will be used as GPIOs (see Product
/* Enable Trace functionality. If ENABLE_TRACE is not defined, TRACE pins will be used as GPIOs (see Product
Specification to see which ones). */
Specification to see which ones). */
#if defined (ENABLE_TRACE)
#if defined (ENABLE_TRACE)
CoreDebug
->
DEMCR
|=
CoreDebug_DEMCR_TRCENA_Msk
;
CoreDebug
->
DEMCR
|=
CoreDebug_DEMCR_TRCENA_Msk
;
...
@@ -299,3 +301,5 @@ static bool errata_66(void)
...
@@ -299,3 +301,5 @@ static bool errata_66(void)
/*lint --flb "Leave library region" */
/*lint --flb "Leave library region" */
#endif
cores/nRF5/wiring_analog_nRF51.c
0 → 100644
View file @
28d37854
/*
Copyright (c) 2014 Arduino LLC. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifdef NRF51
#include "Arduino.h"
#include "wiring_private.h"
#ifdef __cplusplus
extern
"C"
{
#endif
static
int
readResolution
=
10
;
static
int
writeResolution
=
8
;
void
analogReadResolution
(
int
res
)
{
readResolution
=
res
;
}
void
analogWriteResolution
(
int
res
)
{
writeResolution
=
res
;
}
static
inline
uint32_t
mapResolution
(
uint32_t
value
,
uint32_t
from
,
uint32_t
to
)
{
if
(
from
==
to
)
{
return
value
;
}
if
(
from
>
to
)
{
return
value
>>
(
from
-
to
)
;
}
else
{
return
value
<<
(
to
-
from
)
;
}
}
/*
* Internal Reference is at 1.0v
* External Reference should be between 1v and VDDANA-0.6v=2.7v
*
* Warning : On Arduino Zero board the input/output voltage for SAMD21G18 is 3.3 volts maximum
*/
void
analogReference
(
eAnalogReference
ulMode
)
{
return
0
;
}
// Right now, PWM output only works on the pins with
// hardware support. These are defined in the appropriate
// pins_*.c file. For the rest of the pins, we default
// to digital output.
void
analogWrite
(
uint32_t
ulPin
,
uint32_t
ulValue
)
{
}
#ifdef __cplusplus
}
#endif
#endif
cores/nRF5/wiring_analog.c
→
cores/nRF5/wiring_analog
_nRF52
.c
View file @
28d37854
...
@@ -16,6 +16,8 @@
...
@@ -16,6 +16,8 @@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
*/
#ifdef NRF52
#include "nrf_saadc.h"
#include "nrf_saadc.h"
#include "nrf_pwm.h"
#include "nrf_pwm.h"
...
@@ -233,3 +235,5 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue )
...
@@ -233,3 +235,5 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue )
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
#endif
platform.txt
View file @
28d37854
...
@@ -28,20 +28,20 @@ compiler.warning_flags.all=-Wall -Wextra
...
@@ -28,20 +28,20 @@ compiler.warning_flags.all=-Wall -Wextra
compiler.path={runtime.tools.gcc-arm-none-eabi-5_2-2015q4.path}/bin/
compiler.path={runtime.tools.gcc-arm-none-eabi-5_2-2015q4.path}/bin/
compiler.c.cmd=arm-none-eabi-gcc
compiler.c.cmd=arm-none-eabi-gcc
compiler.c.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags}
-mfloat-abi=hard -mfpu=fpv4-sp-d16
-std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -MMD
compiler.c.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags}
{build.float_flags}
-std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -MMD
compiler.c.elf.cmd=arm-none-eabi-gcc
compiler.c.elf.cmd=arm-none-eabi-gcc
compiler.c.elf.flags=-Os -Wl,--gc-sections -save-temps
compiler.c.elf.flags=-Os -Wl,--gc-sections -save-temps
compiler.S.cmd=arm-none-eabi-gcc
compiler.S.cmd=arm-none-eabi-gcc
compiler.S.flags=-c -g -x assembler-with-cpp
compiler.S.flags=-c -g -x assembler-with-cpp
compiler.cpp.cmd=arm-none-eabi-g++
compiler.cpp.cmd=arm-none-eabi-g++
compiler.cpp.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags}
-mfloat-abi=hard -mfpu=fpv4-sp-d16
-std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD
compiler.cpp.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags}
{build.float_flags}
-std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD
compiler.ar.cmd=arm-none-eabi-ar
compiler.ar.cmd=arm-none-eabi-ar
compiler.ar.flags=rcs
compiler.ar.flags=rcs
compiler.objcopy.cmd=arm-none-eabi-objcopy
compiler.objcopy.cmd=arm-none-eabi-objcopy
compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0
compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0
compiler.elf2hex.flags=-O binary
compiler.elf2hex.flags=-O binary
compiler.elf2hex.cmd=arm-none-eabi-objcopy
compiler.elf2hex.cmd=arm-none-eabi-objcopy
compiler.ldflags=-mcpu={build.mcu} -mthumb
-mfloat-abi=hard -mfpu=fpv4-sp-d16
-Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align
compiler.ldflags=-mcpu={build.mcu} -mthumb
{build.float_flags}
-Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align
compiler.size.cmd=arm-none-eabi-size
compiler.size.cmd=arm-none-eabi-size
compiler.define=-DARDUINO=
compiler.define=-DARDUINO=
...
@@ -50,7 +50,7 @@ build.extra_flags=
...
@@ -50,7 +50,7 @@ build.extra_flags=
nrf.sdk.path={runtime.platform.path}/cores/nRF5/nRF5_SDK_11
nrf.sdk.path={runtime.platform.path}/cores/nRF5/nRF5_SDK_11
compiler.nrf.flags=
-DNRF52
"-I{nrf.sdk.path}/components/toolchain/" "-I{nrf.sdk.path}/components/toolchain/CMSIS/Include" "-I{nrf.sdk.path}/components/toolchain/gcc/" "-I{nrf.sdk.path}/components/drivers_nrf/hal/" "-I{nrf.sdk.path}/components/device/"
compiler.nrf.flags="-I{nrf.sdk.path}/components/toolchain/" "-I{nrf.sdk.path}/components/toolchain/CMSIS/Include" "-I{nrf.sdk.path}/components/toolchain/gcc/" "-I{nrf.sdk.path}/components/drivers_nrf/hal/" "-I{nrf.sdk.path}/components/device/"
# These can be overridden in platform.local.txt
# These can be overridden in platform.local.txt
compiler.c.extra_flags={compiler.nrf.flags}
compiler.c.extra_flags={compiler.nrf.flags}
...
...
variants/BluzDK/linker_scripts/gcc/BluzDK.ld
0 → 100755
View file @
28d37854
/* Linker script to configure memory regions. */
SEARCH_DIR(.)
GROUP(-lgcc -lc -lnosys)
MEMORY
{
FLASH (rx) : ORIGIN = 0x0, LENGTH = 0x40000
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x8000
}
INCLUDE "nrf5x_common.ld"
variants/BluzDK/pins_arduino.h
0 → 100644
View file @
28d37854
/*
Copyright (c) 2014-2015 Arduino LLC. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
// API compatibility
#include "variant.h"
variants/BluzDK/variant.cpp
0 → 100644
View file @
28d37854
/*
Copyright (c) 2014-2015 Arduino LLC. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "variant.h"
const
uint32_t
g_ADigitalPinMap
[]
=
{
// D0 - D7
21
,
22
,
23
,
24
,
25
,
28
,
29
,
30
,
// ??
// ??
// A0 - A7
6
,
5
,
4
,
3
,
2
,
1
,
0
,
13
,
// RX, TX
12
,
8
,
// SS1, MOSI1, MISO1, SCK1
15
,
9
,
14
,
10
,
// BTN
7
,
// RBG
19
,
18
,
17
};
Uart
Serial
(
NRF_UART0
,
UART0_IRQn
,
PIN_SERIAL_RX
,
PIN_SERIAL_TX
);
extern
"C"
{
void
UART0_IRQHandler
()
{
Serial
.
IrqHandler
();
}
}
variants/BluzDK/variant.h
0 → 100644
View file @
28d37854
/*
Copyright (c) 2014-2015 Arduino LLC. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _VARIANT_BLUZ_DK_
#define _VARIANT_BLUZ_DK_
/** Master clock frequency */
#define VARIANT_MCK (16000000ul)
/*----------------------------------------------------------------------------
* Headers
*----------------------------------------------------------------------------*/
#include "WVariant.h"
#ifdef __cplusplus
#include "Uart.h"
#endif // __cplusplus
#ifdef __cplusplus
extern
"C"
{
#endif // __cplusplus
// Number of pins defined in PinDescription array
#define PINS_COUNT (26u)
#define NUM_DIGITAL_PINS (20u)
#define NUM_ANALOG_INPUTS (6u)
#define NUM_ANALOG_OUTPUTS (0u)
// LEDs
#define PIN_LED (7)
#define PIN_LEDR (23)
#define PIN_LEDG (24)
#define PIN_LEDB (25)
#define LED_BUILTIN PIN_LED
// Buttons
#define PIN_BUTTON (22)
/*
* Analog pins
*/
#define PIN_A0 (8)
#define PIN_A1 (9)
#define PIN_A2 (10)
#define PIN_A3 (11)
#define PIN_A4 (12)
#define PIN_A5 (13)
#define PIN_A6 (14)
#define PIN_A7 (15)
static
const
uint8_t
A0
=
PIN_A0
;
static
const
uint8_t
A1
=
PIN_A1
;
static
const
uint8_t
A2
=
PIN_A2
;
static
const
uint8_t
A3
=
PIN_A3
;
static
const
uint8_t
A4
=
PIN_A4
;
static
const
uint8_t
A5
=
PIN_A5
;
static
const
uint8_t
A6
=
PIN_A6
;
static
const
uint8_t
A7
=
PIN_A7
;
#define ADC_RESOLUTION 10
/*
* Serial interfaces
*/
// Serial
#define PIN_SERIAL_RX (16)
#define PIN_SERIAL_TX (17)
/*
* SPI Interfaces
*/
#define SPI_INTERFACES_COUNT 2
#define PIN_SPI_MISO (PIN_A4)
#define PIN_SPI_MOSI (PIN_A5)
#define PIN_SPI_SCK (PIN_A3)
static
const
uint8_t
SS
=
PIN_A2
;
static
const
uint8_t
MOSI
=
PIN_SPI_MOSI
;
static
const
uint8_t
MISO
=
PIN_SPI_MISO
;
static
const
uint8_t
SCK
=
PIN_SPI_SCK
;
#define PIN_SPI1_MISO (19)
#define PIN_SPI1_MOSI (20)
#define PIN_SPI1_SCK (21)
static
const
uint8_t
SS1
=
18
;
static
const
uint8_t
MOSI1
=
PIN_SPI1_MOSI
;
static
const
uint8_t
MISO1
=
PIN_SPI1_MISO
;
static
const
uint8_t
SCK1
=
PIN_SPI1_SCK
;
/*
* Wire Interfaces
*/
#define WIRE_INTERFACES_COUNT 1
#define PIN_WIRE_SDA (0u)
#define PIN_WIRE_SCL (1u)
#ifdef __cplusplus
}
#endif
/*----------------------------------------------------------------------------
* Arduino objects - C++ only
*----------------------------------------------------------------------------*/
#ifdef __cplusplus
/* =========================
* ===== SERCOM DEFINITION
* =========================
*/
extern
Uart
Serial
;
#endif
// These serial port names are intended to allow libraries and architecture-neutral
// sketches to automatically default to the correct port name for a particular type
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
//
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
//
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
//
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
//
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
//
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
// pins are NOT connected to anything by default.
#define SERIAL_PORT_MONITOR Serial
#define SERIAL_PORT_HARDWARE Serial
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment