The nRF5 SDK documentation includes descriptions and other reference material to help you understand the various components of the SDK. Examples are provided for development purposes only and should always be tested with your design.
Note:
The nRF5 SDK is in
maintenance mode
. For more information,
see the
nRF Connect SDK and nRF5 SDK statement
. For new projects, we
recommend the
nRF Connect SDK
.
See Getting Started for instructions on how to run the provided examples.
This version of the SDK supports the following SoftDevices:
- S130 SoftDevice v2.0.1 ( API documentation )
- S132 SoftDevice v3.0.0 ( API documentation )
- S212 SoftDevice v2.0.0 ( API documentation )
- S332 SoftDevice v2.0.0 ( API documentation )
- Note
- The nRF5 SDK v12.2.0 provides experimental support for the nRF52840 SoC. However, not all features are supported on nRF52840. See the release notes for details.
To download a copy of the SDK documentation for offline use, go to developer.nordicsemi.com .
SDK Release Notes:
nRF5 SDK v12.2.0
----------------
Release Date: Week 49, 2016
Highlights:
- Added an NFC Type 4 Tag stack (experimental).
- Replaced the existing Eddystone example with a new implementation.
- Added experimental support for the new nRF52840 chip. See the section
"Scope for the nRF52840" for information about which SDK features are
supported on the new chip.
The following toolchains/devices have been used for testing and
verification:
- ARM: MDK-ARM version 5.18a
- GCC: GCC ARM Embedded 4.9 2015q3
- IAR: IAR Workbench 7.30.4
Supported SoftDevices:
- S130 v2.0.1
- S132 v3.0.0
- S212 v2.0.0
- S332 v2.0.0
Supported boards:
- PCA10028
- PCA10031
- PCA10040
- PCA10056 (limited support; see the "Scope for the nRF52840" section)
- PCA20006 (only for beacon examples)
- Dynastream's N5DK1 (only for ANT examples)
For other devices and boards, see the SDK documentation, section "Using
the SDK with other boards".
*** Scope for the nRF52840 chip
********************************
Support for the new development board PCA10056 has been added.
All examples and libraries for the new chip should be treated as
experimental.
The following SDK features are supported on the new nRF52840 chip:
- Most BLE, hardware peripheral, and NFC examples (with some
exceptions; see the available example projects for details)
- Peripheral HAL and drivers (both for existing and new peripherals)
- Library supporting CC310 CryptoCell
- NFC Type 2 Tag and Type 4 Tag
The following SDK features are not supported on the new nRF52840 chip:
- ANT
- Secure DFU
- Serialization
- DTM
- ESB and Gazell
- RTX and FreeRTOS
- Eddystone
*** New features
*****************
** Drivers and libraries **
- Added a SysTick driver.
- Added a queue module (nrf_queue).
- Added a memory block allocator module (nrf_balloc).
- Added an atomic operations module (nrf_atomic, nRF52 Series only).
- Added an atomic FIFO module (app_atfifo, nRF52 Series only).
- Added a power management module (nrf_pwr_mgmt).
- Added an asynchronous SD card driver using SPI.
- Ported fatfs for nRF5 (external library).
*** nRF52840 specific updates ***
- Added a USB device stack and the following USB classes: HID, MSC,
CDC ACM, Audio.
- Added a QSPI driver for external memories.
- Added support for 2 UART instances.
- Added support for 4 PWM instances.
- Added support for more GPIO (48 pins).
** BLE **
- Integrated the Eddystone project from GitHub, replacing the existing
Eddystone Beacon example. The new implementation follows the
specification at https://github.com/google/eddystone (commit 97225a9
from Sep 28, 2016). The new Eddystone library and example supports both
nRF51 and nRF52 (experimental).
- Added an example to demonstrate ATT throughput with long ATT_MTU and
DLE (experimental).
- Added a GATT module that encapsulates the long ATT_MTU feature.
- Extended the Apple Notification Center Service (ANCS) Service module
and example application:
- Added 'notification actions' that depend on the app (for example,
marking a new email as read or dialing up a missed call).
- Added functionality to retrieve app attributes, which allows to
get the name of the app that provided a notification.
- Extended the Continuous Glucose Monitoring Service (CGMS) example
application to handle greater, lesser, or equal filtering for the
Record Access control point.
- Updated the BLE examples to no longer attempt to re-initiate bonding
if encryption fails due to a missing or wrong key.
** NFC **
- Added support for NFC Type 4 Tag with both read and write NDEF
access (experimental).
- Added support for raw ISO-DEP transmission protocol mode.
- Added Type 4 Tag support to the Adafruit Tag Reader example.
** Cryptography **
- Added support for the ARM CryptoCell 310 hardware-accelerated
cryptography engine.
- Added examples to show how to use the hardware-accelerated
cryptography functionality.
*** Changes
************
** Overall **
- Changed the default interrupt priorities for nRF52 to be the same as
the SoftDevice event priority.
- Prefixed error codes with "NRF_".
- Fixed a bug in the clock driver where the driver was failing to handle
two requests coming from the same source.
- Removed nRF52 support for RTX. RTX is now supported on nRF51 chips
only.
- Updated the example Secure DFU images. They are now created with the
debug flag enabled.
- Modified the SoftDevice header files nrf_soc.h and nrf_nvic.h to
support PCA10056 (nRF52840).
- Split up the files located in the examples\bsp folder to new locations:
components\libraries\bsp and components\boards.
** Drivers and libraries **
- Updated the RNG driver so that it supports the SoftDevice being
enabled and disabled. Removed the function nrf_drv_rng_pool_capacity().
- Changed the API for function app_button_is_pushed() (located in
app_button.h).
- Extended the app_gpiote API to support more than 32 pins. Removed
unimplemented functions from the API.
- Extended the nrf_gpio API to support more than 32 pins. Removed
functions that referred to 8-bit ports (for example,
nrf_gpio_port_read).
- Removed the function nrf_drv_adc_gpio_to_ain() from the
nrf_drv_adc API.
- Removed the function nrf_drv_comp_gpio_to_ain() from the
nrf_drv_comp API.
- Removed the function nrf_drv_saadc_gpio_to_ain() from the
nrf_drv_saadc API.
** BLE **
- Fixed an issue that would cause some central examples to fail when
restarting scanning using a whitelist.
- Updated the Peer Manager modules to return NRF_ERROR_STORAGE_FULL
instead of NRF_ERROR_NO_MEM.
- The field "peer_id" in the Peer Manager structure
"pm_peer_data_bonding_t" has been renamed to "peer_ble_id".
- Fixed an issue where the Database Discovery Module would not
re-initialize properly upon successive discoveries.
- Fixed an issue where the Database Discovery Module would fail to
discover the extended properties descriptor and the characteristic
user description descriptors.
- Fixed an issue where the Apple Notification Center Service (ANCS)
example application could crash if the connecting iPhone disconnected
immediately after connecting.
** NFC **
- Modified the Adafruit NFC Shield library to support reading Type 2 and
Type 4 Tags.
- Improved performance of the Adafruit library in Type 2 Tag reader mode
(faster read).
- Added LE Secure Connections OOB values encoding in ble_pair_msg.
- Enabled dynamic update of the TK value in ble_pair_msg.
*** Known Issues
****************
** Overall **
- Updating the MDK requires to manually copy the header and linker files
into the SDK folder (ARM Keil uVision 4, IAR Workbench, ARMGCC).
- When uploading an application to an nRF52 IC using nrfjprog, you must
provide the "--reset/-r" argument or powercycle the board.
- RTX is not supported on nRF52 chips.
** BLE **
- Some examples might have excessively verbose logging.
- In the Proximity Application, writing "High Alert" to the AlertLevel
characteristic of the Link Loss Service does not trigger a high alert
when the link is lost.
- When an Android device is used as a peripheral, it sends slave
security request with the MITM bit set. The central applications in
the SDK will reject the security request (Pairing Failed) because
they do not support MITM.
- Eddystone Beacon Application:
- Advertisement intervals are not verified. Clients must ensure that
the configured advertisement interval is within the valid range.
Note that EID/eTLM configurations might require advertisement
intervals larger than the default value.
- Caution: On nRF51 devices, eTLM calculation takes around 500 ms
and is performed once per EID slot in the same interrupt level
priority as the 'Unlock' functionality. Therefore, if multiple EID
slots and an eTLM slot are configured, the client might not be able
to unlock a beacon that has an eTLM slot and uses the default
advertisement interval. To resolve this issue, increase the
advertisement interval.
- Buttonless DFU Template Application (experimental):
- The project setup of the example is wrong and does not fit into the
available space below the DFU bootloader. To fix this problem,
change the IROM1 size from 0x61000 to 0x59000. In addition, comment
out the code section that reserves a codepage at 0x7E000 for MBR
parameters. For details, see
https://devzone.nordicsemi.com/question/100609/sdk-12-bootloader-erased-after-programming/
- To switch to DFU mode, you must write to the DFU control point.
However, this characteristic is set as read only. Add the following
code line to enable the write property:
char_md.char_props.write = 1;
For details, see
https://devzone.nordicsemi.com/question/93414/sdk12-ble_app_buttonless_dfu/#95079
** NFC **
- NFC Type 2 and Type 4 Tag HAL modules require using TIMER4 on nRF52832.
- Type 2 Tag on nRF52840 chips might fail unpredictably.
- Some mobile phone apps cannot write Type 4 Tag ("NFC Tool" seems to be
okay to use).