nRF5 SDK v11.0.0
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.0 ( API documentation )
- S132 SoftDevice v2.0.0 ( API documentation )
- S212 SoftDevice v0.9.1 ( API documentation )
- S332 SoftDevice v0.9.1 ( API documentation )
SDK Release Notes:
nRF5 SDK v11.0.0
----------------
Release date: Week 10, 2016
Highlights:
- Combined SDK supporting both the nRF51 and the nRF52 Series
- Moved Peer Manager out of experimental
- Moved NFC libraries out of experimental and added support for low
power mode
- Added drivers for all nRF52 peripherals
- Added serialization of the S132 and S130 SoftDevices
- Added support for SoftDevices S130 v2.0.0, S132 v2.0.0, S212 v0.9.x,
and S332 v0.9.x
- Replaced the Enhanced ShockBurst library with a new implementation
(based on µESB)
- Included a critical MDK update (v8.5.0)
- Removed support for CMSIS Packs
The following toolchains/devices have been used for testing and
verification:
- ARM: MDK-ARM version 5.16a
- GCC: GCC ARM Embedded 4.9 2015q1
- IAR: IAR Workbench 7.30.4
Supported SoftDevices:
- S130 v2.0.0
- S132 v2.0.0
- S212 v0.9.x
- S332 v0.9.x
Supported IC revisions:
- nRF51 IC revision 3
- nRF52 IC revision 1
- nRF52 Engineering C
- nRF52 Engineering A and Engineering B (see Compatibility)
Supported boards:
- PCA10028
- PCA10031
- PCA10036 (see Compatibility)
- PCA10040 (see Compatibility)
- PCA20006 (only for beacon examples)
For other devices and boards, see the SDK documentation, section
"Using the SDK with other boards".
Compatibility:
The SoftDevices that are supported in this SDK are not compatible
out-of-the-box with nRF52 Engineering A and Engineering B (the
IC revisions present on all versions of PCA10036 and on PCA10040
v0.9.0).
However, you can use the latest SoftDevices on Engineering A and B
nRF52 chips for development purposes if you implement the
workaround for anomaly 73 (TIMER: Event lost, see
https://docs.nordicsemi.com/bundle/errata_nRF52805_Rev1/page/ERR/nRF52805/Rev1/latest/err_805_changelog.html).
*** New features
****************
** Drivers and libraries **
- Added a COMP driver (nRF52 only)
** BLE **
- Extended the Peer Manager functionality:
- Added an additional data unit (Peer Rank) that can be used for
tracking which bonds are most (and least) recently used
- Added support for LE Secure Connections in Peer Manager
(experimental)
- Added an example application for LE Secure Connections (experimental,
support for Keil5, IAR, and GCC only)
** ANT **
- Added new examples (experimental):
- Advanced Burst
- Asynchronous Transmitter
- Continuous Scanning Controller
- Debug Demo
- IO Demo
- Message Types
- Search Sharing
- Search Uplink
- ANT OTA bootloader application now uses the SoCLibrary API to perform
NVIC operations instead of direct operations
- Added multiprotocol examples for the S332 SoftDevice:
- Heart Rate Monitor Relay Application
- Shared Channels (experimental)
** Serialization **
- Added serialization of the S130 and S132 v2.0.0 SoftDevices
** NFC **
- Added a generic NDEF message parser that can parse NDEF messages to
the format that is used by the generic NFC NDEF message builder
- Added a module and example for creating NDEF text records
- Added and modified NFC pairing examples (experimental):
- HID Keyboard Application with BLE pairing using NFC (new)
- Heart Rate Application with BLE pairing using NFC (improved user
experience)
** Proprietary **
- Added a Low Power Transmitter/Receiver example for ESB
*** Changes
***********
** Overall **
- Support for CMSIS Packs has been removed. The SDK is delivered as zip
file only.
** Drivers and libraries **
- The MSB and LSB macros have been renamed to MSB_32 and LSB_32. Code
using these macros should be changed to use either the 16- or the
32-bit variant.
** BLE **
- Multi-instance handling of Service client modules has been greatly
improved. The client examples now handle service discovery in the main
application context. The main application context must manage which
client instance belongs to which connection link.
- The Multi-link Example has been modified to demonstrate multiple
client instances in a better way.
- The ble_app_multilink_peripheral example has been removed.
ble_app_blinky now acts as the peripheral for ble_app_multilink_central.
- Heart Rate Application with RTX: Support for nRF52 has been removed.
- The Peer Manager is no longer experimental.
- The following BLE examples now use Peer Manager:
- Central:
Running Speed and Cadence Collector (ble_app_rscs_c)
- Central and Peripheral:
BLE Relay (ble_app_hrs_rscs_relay)
BLE LE Secure Connections Multirole (ble_app_multirole_lesc)
- Peripheral:
Alert Notification (ble_app_alert_notification)
Proximity (ble_app_proximity)
Glucose (ble_app_gls)
HID Keyboard Application with BLE pairing using NFC (experimental_ble_app_hids_keyboard_pairing_nfc)
- The behavior of Peer Manager and Device Manager has changed to reject
pairing requests from already bonded peer centrals.
- Several BLE peripheral examples now support the S332 SoftDevice.
- Minor bugfixes in DFU.
** ANT **
- The ANT bootloader was aligned to MBR version 2.0.0.
- The following ANT examples now support the S332 SoftDevice
(experimental):
- ANT Bootloader/DFU
- Message Types
** NFC **
- The Adafruit Tag Reader Example has been extended to show added NDEF
parsing functionality.
- The NFC Type 2 Tag HAL was improved with a workaround for supporting
low power mode.
** Proprietary **
- A new implementation of the Enhanced ShockBurst (ESB) protocol
supporting both nRF51 and nRF52 has been added.
*** Fixed issues
****************
** Drivers and libraries **
- GPIOTE: Fixed the problem of lost events in low-accuracy sense toggle
mode
- SAADC: Added functionality to use one AIN with multiple channels
- UART: Fixed a glitch on TX pin when initializing the driver
- UART: Fixed the problem that TX bytes were sent in wrong order in
app_uart_fifo
** BLE **
- Removed a vulnerability in Peer Manager and Device Manager that would
allow malicious attackers to overwrite the bonding information of a
bonded device
** ANT **
- Fixed the handling of send-until-success request types in the ANT
request controller
- Fixed an ant_evt_t structure member alignment bug
** NFC **
- Fixed the NFC examples to work when the UART logger is enabled
- Fixed a buffer leakage bug in the module for creating
application/vnd.bluetooth.le.oob records
*** Known issues
****************
** Drivers and libraries **
- Using the NVIC API directly and not through a SoftDevice causes
problems, especially when NVIC_EnableIRQ or NVIC_DisableIRQ are called
from critical sections.
** BLE **
- All BLE examples have been tested only on PCA10028 and PCA10040.
- BLE Examples that use pairing are incompatible with examples in SDK
version 6.1 and earlier that do not use pairing.
** ANT **
- Previous versions of the ANT DFU example are incompatible with the ANT
S212/S332 SoftDevices version 0.9.x.
** NFC **
- NFCT requires using TIMER4 on nRF52832.
** FPU **
- When the FPU is in use, it triggers the FPU_IRQn interrupt when one of
the six exception flags (IDC, IXC, UFC, OFC, DZC, IOC) is set.
The FPU interrupt will always set the pending flag (even if the
interrupt is not enabled), irrespective of whether the user is
interested in the exception bit.
The pending flag then prevents the SoftDevice from going into low
power mode when sd_app_evt_wait() is called.
Therefore, always clear the exception bits and the pending interrupt
before calling sd_app_evt_wait(). See the code below for an example
implementation.
FPU exception bit definition:
https://developer.arm.com/documentation
Example code:
{
// Set bit 7 and bits 4..0 in the mask to one (0x ...00 1001 1111)
#define FPU_EXCEPTION_MASK 0x0000009F
...
/* Clear exceptions and PendingIRQ from the FPU unit */
__set_FPSCR(__get_FPSCR() & ~(FPU_EXCEPTION_MASK));
(void) __get_FPSCR();
NVIC_ClearPendingIRQ(FPU_IRQn);
/* Call SoftDevice Wait For event */
error_code = sd_app_evt_wait();
}