1 . nRF5 SDK简介
nRF5 SDK是Nordic NRF51 NRF52系列的固件开发SDK,提供了这两个系列MCU开发基本的外设驱动,当前最新版本为nRF5_SDK_17.1.0_ddde560,后续应该也不会有太大升级和改动,因为后续Nordic将主推另一套新的nrf connect ,新的SDK基于Zephyr RTOS,上手成本更高,搞得更复杂,对于旧的NRF51 NRF52系列完全没有必要使用这套新的SDK。
nRF5 SDK官网下载地址:nRF5 SDK
2 . SDK目录介绍
解压完的SDK目录如上图所示,下面简单介绍下每个目录里放的内容
-
components: ble文件夹里的内容主要与BLE协议栈等相关,libraries放的是一些芯片库等文件,softdevice放的是nordic无线协议栈的hex档和相关头文件,nordic无线协议栈像BLE部分是不开放的,是直接烧录hex到Flash中的,用户无法随意更改。
- config: 主要需要使用其中的sdk_config.h文件,这里是SDK配置的集合,通过宏定义来配置一些外设功能的使能和相关参数设定,很多时候添加了C文件和头文件还报错,可能是这里相关使能没有打开,需要特别关注
- documentation: 里面有index.html,点击可以链接到官方的说明文档,可以查看关于SDK和softdevice的一些说明和介绍,有些不太清楚的地方可以在这里搜索下
-
examples: 这里是一些常用的例程工程,都可以直接打开工程编译,需要安装Keil V5或SEGGER Embedded Studio(SES),新手上手都可以先使用这些例程工程来了解SDK
- external和external tools: 一些第三方的驱动文件和工具,随便看看
- integration和modules:底层驱动文件,有nrf和nrfx两个开头的,搞得很乱,应该有一些兼容老版本SDK的缘由,一般使用nrf开头的函数。
3. 如何基于SDK新建工程
前期开发可以先使用例程工程来开发,但后续可以基于SDK新建工程来开发,为什么需要新建工程来开发,SDK中有很多文件是当前工程所不需要的,所以需要精简,当然也可以选择在当前例程工程中一步一步来删除多余的文件,但何不如新建个空工程来添加需要的文件,这样对于了解每个驱动文件所在的地方,进一步熟悉工程的完整架构,这里基于Keil V5来新建一个基本的工程,Keil所需要的pack下载地址:https://developer.nordicsemi.com/nRF5_SDK/pieces/nRF_DeviceFamilyPack/文章来源:https://www.toymoban.com/news/detail-425496.html
-
- 从nRF5 SDK中复制所需要的文件,一般复制如下目录即可,这些目录下面也可以再次进行精简的,新建一个Nordic文件夹,把下述文件夹都复制到Nordic文件夹下,之后新建工程都可以直接复制这个Nordic文件夹进来就行。
- 从nRF5 SDK中复制所需要的文件,一般复制如下目录即可,这些目录下面也可以再次进行精简的,新建一个Nordic文件夹,把下述文件夹都复制到Nordic文件夹下,之后新建工程都可以直接复制这个Nordic文件夹进来就行。
-
- 新建一个NRF52840工程这里就跳过,选择Device和添加启动文件即可,下一步添加源文件和头文件到空工程中,新建nRF_Drivers、nRF_Libraries、nRF_SDKConfig等目录,如下图所示
nRF_Drivers: 主要放置Nordic\integration\nrfx\legacy和Nordic\modules\nrfx\drivers\src里的c文件,可以按需添加
nRF_Libraries: 放置Nordic\components\libraries里的c文件
- 新建一个NRF52840工程这里就跳过,选择Device和添加启动文件即可,下一步添加源文件和头文件到空工程中,新建nRF_Drivers、nRF_Libraries、nRF_SDKConfig等目录,如下图所示
添加完c文件后需添加头文件,头文件的分布特别散,需要到components、external、integration、modules目录下仔细查找相关联的头文件,而且一层一层特别多,编译的时候可以根据相应的Error去找有那些头文件没有被包含
文章来源地址https://www.toymoban.com/news/detail-425496.html
-
- 工程设置,在C/C++、 Asm 的Define栏中添加系统级的宏定义
如果出现Undefined symbol sdh_req_observers$$Base等警告,可以在Linker的Misc controls中加入–diag_suppress 6330来消除
Sample文件夹中对应的MCU型号
- 工程设置,在C/C++、 Asm 的Define栏中添加系统级的宏定义
硬件标识 | MCU |
---|---|
PCA10040 | NRF52832 |
PCA10040e | NRF52810 |
PCA10056 | NRF52840 |
PCA10056e | NRF52811 |
PCA10100 | NRF52833 |
PCA10100e | NRF52820 |
4. 相关开发工具介绍
- nRF Connect for Desktop: 集成了一些图形化的工具,如Programmer可以烧录程序,Bluetooth Low Energy对于BLE开发很有用,下载地址:https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-desktop/Download
- nRF Command Line Tools:命令行工具,可以进行烧录和读取(配合JLink),合并softdevice hex和app hex档等功能,也可以基于当中的nrfjprog DLL开发自己的烧录工具,下载地址:https://www.nordicsemi.com/Products/Development-tools/nRF-Command-Line-Tools/Download?lang=en#infotabs
到了这里,关于NRF52840 NRF52833 nRF5 SDK 开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!