https://www.cnblogs.com/iini/p/9095551.html
SDK和Softdevice 的区别,怎么选择SDK和Softdevice版本及版本兼容问题
Nordic目前有2套完全独立的SDK:nRF SDK和nRF Connect SDK,一般来说,开发板nRF51/52推荐使用nRF5 SDK,开发nRF91/nRF53等新产品推荐使用nRF connect SDK 官网下载地址 https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK/Download#infotabs。
除了nRF5 SDK,Nordic 还针对某些特殊应用推出了一些专门的SDK
1.nRF5 SDK for Mesh 用于开发蓝牙Mesh应用
2.nRF5 SDK for Thread and ZigBee 用于开发ZigBee应用或者Thread应用
3.nRF SDK HK 用于开发苹果home kit应用
4.Thingy SDK 用于开发Nodic Thingy传感器套件
5. nRFread Smart Remote 3用于开发蓝牙语音遥控器
6.nRFready Desktop 2用于开发蓝牙或者2.4 G的无限键盘和鼠标
如果你的应用是上面6种垂直应用,那么建议你选择上面的SDK,否则一律推荐使用nRF5SDK.
1)Softdevice 是Nodic蓝牙协议栈的名称,每个SDK包中都包含该版本支持的协议栈 请到SDK根目录\components\softdevice
SDK官网下载地址为:https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK/Download#infotabs
2)nRF5 SDK版本编号,nRF51 SDK v9.0.0,nRF51 SDK v10.0.0,nRF5 SDK v11.0.0, nRF5 SDK v12.0.0 …目前最新版是nRF5 SDK v15.3.0。SDK9/10只支持nRF51系列芯片,SDK11/12同时支持nRF51和nRF52系列芯片,而SDK13/14/15只支持nRF52系列芯片。
3)Nodic一般推荐使用最新的SDK来开发你的应用,因为功能强大,考虑周全,可靠性最好,比如nRF系列,推荐使用SDK12.3
nRF系列推荐使用SDK15.3 ,查看SDK新版本特性 在:SDK根目录\documentation\release_notes.txt
4)Softdevice 命名规则一,Softdevcie 包括两种底层协议栈:BLE 和ANT ,BLE包括两种角色central(又称master)和peripheral(又称Slave),为此需要给这类不同类型协议栈命名区分:
比如S110,表示只支持从设备模式的nRF51 BLE协议栈
比如S130,表示既支持设备模式又支持主设备模式的nRF51 BLE协议栈
比如132,表示既支持从设备模式又支持主设备模式的nRF52BLE协议栈
比如S212,表示nRF52 ANT协议栈
比如S332,表示nRF既支持BLE协议栈又支持ANT协议栈,而且BLE协议栈既支持从设备模式又支持主设备模式
Softdevice命令规则而,大体上更命名规则1相同,但是协议栈变化最后2位跟芯片型号一样,比如S140,代表这个协议栈专门用于nRF52840,S140协议栈是一个很大而全的协议栈,包含蓝牙所有功能
5)SDK和softdevice 兼容性问题,不要查看兼容性表格,直接打开SDK,直接使用SDK里面的softdevice ,肯定没问题
6)再完美的协议栈难免也会有bug 大家只需要下载版本号最后一位有变化的即可,比如6.1.1相比6.1.0,最后一个数字有升级,那么直接下载下来直接覆盖老的协议栈,如果有大的变化,比如7.0.0相比6.1.0这个属于大升级了,此时需要直接使用最新的版本SDK进行来开发,
S132协议栈最新版本查询页面:https://www.nordicsemi.com/Software-and-Tools/Software/S132/Download#infotabs
7)在Nordic SDK中,经常会碰到deprecated 和experimental目录,他们的作用如下:
\deprecated,该目录的内容已被舍弃,并有新版本来替代他们,但为了兼容老产品,SDK还是将其保留下来,比如如下目录:
components\drivers_nrf\twi_master\deprecated,如果你是新用户,切记不要使用\deprecated目录下的API。
\experimental ,SDK不断有new feature/new example 出现,这些还没有经过市场大规模验证,对此Nodic会在这些new feature/new example前面加一个前缀:experimental,比如 :examples\ble_peripheral\experimental_ble_app_buttonless_dfu,碰到experimental一定要小心,里面有可能有bug,希望用户自己进行充分测试,以保证产品的质量。
nRF52SDK和softdevice 帮助文档
1)不管是SDK还是softdevice自有API,建议首先查看SDK自带API说明,记住:API说明一般都放在头文件中,比如:softdevice_enable()API相关的头文件在Softdevice_handler.h中
2)Softdevice还有一份专门的spec,来阐述softdevice工作原理,资源占用情况,性能参数,使用注意事项等,建议大家一定要阅读该份spec:
S132 spec:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsds_s132%2FSDS%2Fs1xx%2Fs130.html&cp=3_4_1_0
3)SDK还有在线帮助文档和离线帮助文档,两者一模一样,离线帮助文档就是通过在线帮助文档生成的,以方便网络不好的用户使用。你可以根据自己的情况选择其中一份帮助文档即可,帮助文档链接:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fexamples.html&cp=5_1_4
因此对于SDK有任何疑问,可以直接查对应的帮助文档,比如你想了解nRF5_SDK安装目录\examples\peripheral\spi这个例子是干什么的,直接找到帮助文档对应的条目:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fspi_master_example.html&cp=5_1_4_6_37,你就会明白这是一个告诉你如何使用SPI master的例子。
再比如你想知道nRF5_SDK_15.2.0_9412b96\examples\dtm\direct_test_mode这个例子是不是讲如何进行DTM测试的,找到帮助文档相关条目说明:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fble_sdk_app_dtm_serial.html&cp=5_1_4_5,你就会知道自己的猜测是对的
SDK 例子开发
Nordic nRF5 SDK包含了丰富实用例子,一般来说,我们的应用都是基于其中一个例子来开发的
比如你想了解” nRF5_SDK安装目录\examples\ble_peripheral\ble_app_gls”这个例子是干什么的,找到该例子对应的帮助文档说明:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fble_sdk_app_gls.html&cp=5_1_4_2_2_11,通过查看例子说明,你会发现这是一个标准的血糖仪例子,里面使用了bonding,而且bonding的时候,需要输入PIN码,并支持LESC模式。看完这个例子说明,你就大概明白这个例子跟你的应用接不接近,如果你也需要使用带PIN码的bonding,那么就可以选择该例子作为基础来开始你的开发。
再比如nRF5_SDK安装目录\examples\ble_peripheral\ble_app_uart,例子说明链接为:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fble_sdk_app_nus_eval.html&cp=5_1_4_2_2_24,
通过查看说明文档,我们知道这个例子是把蓝牙作为透传来使用的,如果你的应用就是把蓝牙作为一个透传模块来使用,那么你可以以这个例子为基础来开始你的开发