nRF5 SDK

一般来说,开发nRF51/52产品推荐使用nRF5 SDK。从形式上来说,nRF5 SDK其实就是一个产品压缩包,其官网下载地址为:https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK/Download#infotabs。
在这里插入图片描述
除了nRF5 SDK,Nordic还针对某些特殊应用领域推出了一些专门的SDK,这些SDK和nRF5 SDK采用了相同的软件架构,相同的驱动和库,以及相同的编码风格。对开发者来说,只要熟悉了nRF5 SDK,这些特殊SDK上手也会比较快。比如:nRF5 SDK for Mesh,用于开发蓝牙Mesh应用。

1、nRF5 SDK和Softdevice概述

(1)nRF5 SDK是Nordic nRF51/52系列产品软件开发环境Softdevice是Nordic蓝牙协议栈的名称,为了方便用户的使用,每一个版本的SDK都包含了该版本支持的所有Softdevice,请到SDK根目录\components\softdevice目录查看具体支持的Softdevice类别和版本。
(2)Nordic一般推荐使用最新版的SDK来开发你的应用,nRF52系列推荐使用SDK15.3.0
(3)Softdevice命名规则(一):Softdevice包括两种底层协议栈:BLE和ANT,BLE包括两种角色:central(又称master)和peripheral(又称slave),为此需要给这些不同类型的协议栈进行命名区分。协议栈命名格式为Sxyz

编号 含义
x 表示协议栈的类型,1表示BLE协议栈,2表示ANT协议栈,3表示同时支持BLE和ANT
y 表示BLE角色,1表示从设备,2表示主设备,3表示同时支持主设备和从设备
z 表示芯片类型,0表示nRF51系列,2表示nRF52系列

比如S110,表示只支持从设备模式的nRF51 BLE协议栈 。
比如S130,表示既支持从设备模式又支持主设备模式的nRF51 BLE协议栈 。
比如S132,表示既支持从设备模式又支持主设备模式的nRF52 BLE协议栈 。
比如S212,表示nRF52 ANT协议栈 。
比如S332,表示nRF52既支持BLE协议栈又支持ANT协议栈,而且BLE协议栈既支持从设备模式又支持主设备模式 。
(4)Softdevice命名规则(二)。大体上跟命名规则1相同,但是协议栈编号最后2位跟芯片型号一样,比如S140,代表这个协议栈专门用于nRF52840。由于52840 Flash空间很大,没有必要做各种细分的协议栈,S140协议栈是一个大而全的协议栈,包含蓝牙所有功能。
(5)Softdevice版本编号,从1.0.0开始编号,然后2.0.0,3.0.0,…S110最新版本是8.0.0S130最新版本是2.0.1S112/S132/S140最新版本是7.0.0
(6)SDK和softdevice兼容性问题。不要查看兼容性表格,直接打开SDK,直接使用SDK里面的softdevice,肯定没有问题。比如S132在SDK如下文件夹中:
在这里插入图片描述
有时候你在Nordic官网下载SDK的时候,比如SDK15.2.0,官网会自动绑定一个比SDK安装目录里面自带的协议栈版本更高版本的协议栈:
在这里插入图片描述
那么这个时候推荐使用该绑定的高版本协议栈,原因如下:
再完美的协议栈难免也会有bug,此时Nordic会把bug修复的协议栈单独发布出来,比如nRF5 SDK 15.2.0自带的S140协议栈版本为6.1.0,一般来说,直接用这个版本的协议栈就可以了,但是这个版本的协议栈的主机模式有一个小bug,为此Nordic单独发布了6.1.1版S140协议栈,此时用户就需要去官网单独下载这个最新版的协议栈了。记住,大家只需要下载版本号数字最后一位有变化的即可,比如6.1.1相比6.1.0最后1个数字有升级,那么推荐大家直接下载下来,然后覆盖原来老的协议栈即可。如果版本号第1个数字就有变化,意味着两个版本的协议栈是不兼容的,此时一般SDK也会跟着升级的,比如7.0.0相比6.1.0,这个就属于大升级了,此时建议直接使用与之配套的最新版本SDK来进行开发,而不是把协议栈进行简单覆盖。(当然,你也可以自己把7.0.0的协议栈移植到老SDK中,这个稍微麻烦一些,不过Nordic也有相关移植文档供大家参考)。如下列出了常用协议栈的发布页面:
S140协议栈最新版本查询页面https://www.nordicsemi.com/Software-and-Tools/Software/S140/Download#infotabs
S132协议栈最新版本查询页面https://www.nordicsemi.com/Software-and-Tools/Software/S132/Download#infotabs
其他类型协议栈,比如S130S112S110等,请按照上述方式自己去寻找相应下载页面。

2、nRF5 SDK目录结构解读

SDK15.0.0为例,nRF5 SDK目录结构:

在这里插入图片描述

序号 目录 含义
1 components 包含Nordic自己开发的SDK源代码
2 documentation SDK release说明以及移植说明等
3 examples 丰富的应用示例
4 external 第三方或者源码(非Nordic开发)

components:该目录包含了Nordic自己开发的SDK源代码,切记:在产品开发过程中,不要去修改该目录下的任何文件!components目录结构:
在这里插入图片描述

序号 目录 含义
1 ant ANT相关代码
2 ble BLE相关代码
3 boards 开发板相关代码
4 drivers_ext Nordic开发,但使用了第三方设备
5 drivers_nrf SoC外设驱动
6 libraries 一些非常有用的及其源码
7 nfc NFC相关代码
8 proprietary_rf Nordic私有的2.4G相关源代码
9 serialization 串行化相关代码
10 softdevice 本SDK支持的所有softdevice.hex,API定义,以及一些说明

examples:该目录包含了丰富的应用示例,不仅包含BLE应用示例,也包含每个外设如何使用的示例,还包含bootloader示例代码。一般来说,开发过程中碰到的大部分问题,都可以在这个目录找到示例。examples目录结构:
在这里插入图片描述

序号 目录 含义
1 ant ANT相关代码
2 ble_central BLE主模式示例
3 ble_central_and_peripheral BLE同时支持主从模式示例
4 ble_peripheral BLE从模式示例
5 crypto 加密算法应用示例
6 dfu bootloader示例代码
7 dtm DTM测试设备端代码
8 multiprotocol BLE,ANT与私有2.4G同时工作示例
9 nfc NFC相关代码
10 peripheral 51/52外设应用示例
11 proprietary_rf Nordic私有的2.4G相关源代码

3、nRF5 SDK和softdevice帮助文档

(1)不管是SDK还是softdevice自有 API,建议首先查看SDK自带的API说明,记住:API说明一般都放在头文件中,而不是c文件中,里面有该API详细说明和使用注意事项。
(2)Softdevice还有一份专门的Specification(规范)(比如:S132_SoftDevice Specification_v6.2),来阐述Softdevice工作原理资源占用情况性能参数,使用注意事项等,建议大家一定要阅读该份Specification

猜你喜欢

转载自blog.csdn.net/Hongwei_1990/article/details/90543919