2,nRF52xx蓝牙学习(蓝牙工程包 SDK 详解)

    一、什么是 SDK
什么是 SDK,认识这个问题对应我们开发项目是有极大的帮助的,这章就来介绍下官方是 SDK17 这个版本的结构。 由于 nordic Semiconductor 的低功耗蓝牙芯片 NRF52 系列的协议栈是未开源的,同时为了鼓励开 发者快速入门 nRF52 系列的开发,节省对基础硬件寄存器的操作的程序编写时间,使开发者方便快速的编写程序,官方提供专业的 SDK 工程开发包。
      SDK 全程为软件开发工具包(英文全称:Software Development Kit),
是 nordic Semiconductor 设计的为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。软件 开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合。一般而言 SDK 即开 发Windows 平台下的应用程序所使用的 SDK。它包含了为底层协议栈提供的 API 接口,也包括处理 器芯片的硬件驱动。同时 nordic Semiconductor 官方在 SDK 中还提供包括外设和 BLE 的演示代码、支 持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。 为了鼓励开发者加入 nRF52 系列低功耗蓝牙的开发中,使用nrf52 系列芯片,nordic 官方 SDK 是免费 提供的。软件工程师可以直接通过 nordic Semiconductor 官方下载获得 SDK 软件开发包,从而会吸引 更多人由于能免费为其编程而购买其构件。认识官方提供的 SDK 对我们开发是非常有帮助的。
二、SDK17 开发包的基本结构
       打开官方 SDK 文件包 nRF5_SDK_17.1.0_ddde560,出现如下图所示的文件夹,下面对这个文件夹 里的内容详细进行介绍:
(1)components 文件包
打开 components 文件包,如图 2.3 所示。该文件包存放的是各类驱动、蓝牙协议栈、芯片库程序 等文件,是后期我们编程所需要的文件,是 SDK 的核心部分,具体说明如下:
◎ 802_15_4 文件夹:IEEE 802.15.4 无线通信协议,该协议栈用于低速无线个人域网(LR-WPAN) 的物理层和媒体接入控制层规范。支持两种网络拓扑,即单跳星状或当通信线路超过 10 m 时的多跳对 等拓扑。这个协议栈只能使用在 nrf52840 的芯片。
◎ ant 文件夹:nrf52840 系列处理器在蓝牙 5.x 基础上添加了 ANT+的功能,ANT+是运动领域内 最通用最普及的无线传输协议。该协议栈也是以 2.4G 通信为基础的,本文件夹为官方提供的关于 ANT+ 的驱动文件。
◎ble 文件夹:ble 蓝牙协议相关的文件,对接协议栈 softdevice 提供的 API 接口的驱动函数库。 是编写蓝牙应用的核心部分。
◎boards 文件夹:对应的开发板头文件定义,定义了诸如 nrf51 和 nrf52 的各类开发板的头文件。
◎device_ext 文件夹:第三方传感器文件,一些外接传感器的驱动文件。比如 mpu6050、ds1624 等的驱动文件。
◎device_nrf 文件夹:处理器硬件外设的驱动。老版本里包含了比如时钟、串口等外设驱动,新
版本 SDK17 把这部分分离到 modules 文件夹中了,所以这里面只剩下部分驱动,读者可以直接调用编 程。
◎iot 文件夹:Internet of Things 的缩写,物联网的一些驱动文件库。
◎libraries 文件夹:外设应用的库文件。以上面 device_nrf 文件和 modules 文件夹为基础来编写的 二级应用驱动。比如串口,PWM,校验等应用的驱动文件。
◎nfc 文件夹:NFC 的驱动文件库。
◎propertary_rf 文件夹:2.4G 应用的配置文件,nrf5x 系列处理器兼容普通的 2.4G 的通信协议。
◎serialization 文件夹:该文件夹主要提供了一下公共配置文件,包括协议栈不同版本需要使用的 配置文件。
◎softdevice 文件夹:协议栈的说明文档以及对应 hex,不同的版本的协议栈的 hex 文件,以及相 关说明文档,还有相关的头文件。说明文档对各个版本的协议栈对应程序所需要的 ROM 大小有明确 说明:
◎toolchain 文件夹:提供给不同开发环境使用的配置文件。可以用于开发 nRF5x 系列处理器的开 发环境包括:keil、acc、iar 等环境需要的配置文件。
(2)config 文件包
Config 文件提供开发环境以及库函数的配置,程序里主要需要使用的是 sdk_config.h 函数,这个 函 数 在 提 供 一 个 芯 片 配 置 使 能 模 板 , 文 件 夹 中 一 共 提 供 多 个 芯 片 的 配 置 : nrf52810,nrf52832,nrf52820,nrf52833,nrf52840,这级个函数都可以使用 ble5.0 的协议栈。如下图 2.5 所示:
(3)documentaion 文件包
documentaion 文件夹打开后,里面提供一个 index.html 的网页引导文件。点开这个文件就可以打开官方对整个 SDK 支持包的说明网站,说明文档包含了各个函数定义以及官方例程的简介说明,特别是对应协议栈函数和库函数,通过在网站中进行搜索,找到其定义,对于理解 nrf5x 系列处理器的编程很重要,打开后如下图 2.6 所示:
点击 index.html 的网页引导文件后会弹出下面一个网页,这个网页就是对 SDK 整个工程说明的网 页链接,可以再其中查看协议栈 api 和 sdk 工程说明,链接网页如图 2.7 所示:
(4) example 文件包
example 文件夹内包含了官方提供给开发者的应用实例,通过参考官方的演示实例,便于开发者 快速的开发出自己的应用,打开文件后如下图 2.8 所示。文件夹中,更加不同的类型,把例子分为了 多个文件夹,具体说明如下:
802_15_4:提供的 nrf52840 的 802_15_4 通信应用实例。
ant:该文件夹提供多个 ANT+通信的应用实例。
ble_central:该文件夹提供多个蓝牙 BLE 主机的应用实例。
ble_central_and_peripheral:该文件夹提供蓝牙主从一体的应用实例。
ble_peripheral:该文件夹提供多个蓝牙 BLE 从机的应用实例。
connectivity:蓝牙直接连接方式的几个测试代码。 该文件提供定义官方开发工具的 IO 管脚分配的文件。
dfu:该文件夹内提供官方 dfu 的 bootloader 工程和 dfu 的演示实例。
dtm:Direct Test Mode,也就是直接连接测试模式的演示实例。
multiprotocol:混合协议的演示实例。
nfc:提供的 nfc 的演示实例。
peripheral:该文件夹提供多个 nrf51822 外部设备的应用实例。
Proprietal_rf:2.4G 通信下的演示实例。
Usb_driver:usb 驱动设备声明。
(5) external 文件包和 external_tool 文件包
external 文件夹打开后,如下图 2.9 所示。里面包含一些第三方的驱动文件夹,比如为 freertos 微 型操作系统 freertos 的支持文件包。FreeRTOS 是迷你的实时操作系统内核。作为一个轻量级的操作系 统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程 等,可基本满足较小系统的需要,特别适合在已 arm cortex m4 为内核的 nrf52840 低功耗蓝牙芯片中使 用。还包含了比如 fatfs 的文件系统包,lwip 的网络支持包,segger 的 rtt 支持包,n 等等,这些第三方 的驱动包还是比较多的,方便我们编程的时候调用,大家感兴趣的可以自行了解。
External_tool 工具包,放置一些外部工具包,目前该文件包里只包含了 CMSIS 的配置向导。
(6) integration 文件包和 modules 文件包
这两个文件夹提供的是硬件顶层驱动,下面详细说明下这两个文件夹:
Integration 文件夹:这个文件夹提供的是老版本驱动的兼容头文件。比如你用老版本的 SDK 底层硬件外设驱动移编写的程序,现在使用新版本 SDK,需要进行移植,这时就可以通过配置这个文件夹 的里的硬件底层兼容文件夹进行兼容。方便早期版本的硬件底层外设驱动迁移到版本驱动之下。 modules 文件夹:以 nrfx 命名一个文件夹,这个文件夹提供了多个文件包。如下图 2.10 所示:
doc: 一些说明备注
Driver: 最新版的驱动 c 文件和头 h 文件。
Hal: 老版本的硬件配置头文件
mdk: keil,iar 等编译环境使用的启动文件
Soc: 处理器中断声明的文件
Templates:处理器的配置文件文本
官方软件包就介绍到这,官方后期不断更新的 SDK 有部分变化,大的结构没有变化。同时本书主要以蓝牙 Ble 5.1 为目标进行讲解。因此我们希望读者可以参考官方软件代码,同时配合本书的学习 后,能够独立的进行蓝牙的开发了。
三、开发包外设例子和蓝牙历程说明
(1)  外设硬件例子
在官方 sdk 包中,外设硬件实例在 nRF5_SDK_17.1.0_a53641a/examples 这个文件包内,这个包里 包含了 nrf5x 系列芯片的硬件外设各种驱动代码实例,非常丰富,对我们编写外设代码是一个很好的 参考,基本能够解决我们绝大多数需求。其中我们打开一个例子 saadc 进行说明。 打开 sdk 工程包 examples/peripheral/saadc,如下图 ,图中包含几个部分:
Hex 文件夹:官方提前发的工程 hex 文件,可以直接下载。
pca10040 文件夹:提供的是芯片 nrf52840 的芯片支持工程,需要使用的 nrf52840 芯片的外设可以打开这个工程包。
pca10040e 文件夹:提供的是芯片 nrf52810 的芯片支持工程,需要使用的 nrf52810 芯片的外设可以打开这个工程包,但目前不是所有的工程里都有 nrf52810。
pca10056 文件夹:提供的是芯片 nrf52840 的芯片支持工程,需要使用的 nrf52840 芯片的外设可以打开这个工程包。
pca10056e 文件夹:提供的是芯片 nrf52811 的芯片支持工程,需要使用的 nrf52811 芯片的外设可以打开这个工程包。
pca10100 文件夹:提供的是芯片 nrf52833 的芯片支持工程,需要使用的 nrf52833 芯片的外设可以打开这个工程包。
main.c 文件: 工程的主函数,工程主函数是几个芯片公用的,这样非常方便不同芯片之间的移植。
我们使用的是 nrf52840 工程包,打开 pca10040 工程里的 blank 文件夹,如下图 所示,会出现多个工程目录:
arm5_no_packs:keil5 的工程文件包。
armgcc:gcc 的编译支持文件。
config: nrf52840 的配置文件。
iar:IAR 的工程文件包。
ses:segger embedded studio 的工程文件包。
根据自己使用的开发环境选择工程包,我们后面会使用 keil 工程开发环境,因此前 两个工程包都是可以使用的。
(2)  蓝牙例子说明
nRF52840 芯片实际上是多协议芯片,本书主要关心其中的蓝牙部分。蓝牙实例包含 三个部分:
ble_central :主机设备实验
ble_perpheral: 从机设备实验
ble_central_and_perpheral: 主从一体实验,作为中继节点使用打开文件夹 nRF5_SDK_17.1.0_a53641a/examples 这个文件包内,如下图 2.13 所示,可以观察到提供的三个方面的蓝牙工程包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值