|
1 | | -# nRF5x BSP 框架 |
| 1 | +# nRF5x BSP 说明 |
2 | 2 |
|
3 | | -## 1. 目录结构 |
| 3 | +## 简介 |
| 4 | + |
| 5 | + Nordic nRF5x 系列 MCU 应用广泛,且功能齐全、灵活性高,非常适用于 Bluetooth 低功耗蓝牙和 2.4 GHz 超低功耗无线应用。 |
| 6 | + |
| 7 | + 基于官方[sdk16.0](http://developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v16.x.x/nRF5_SDK_16.0.0_98a08e2.zip)版本的基础上,该BSP将官方的SDK和RT-THREAD生态结合,让开发者可以既可以基于官方的sdk开发自己的应用,也可以使用RT-Thread生态的软件包。 |
| 8 | + |
| 9 | + 目前支持硬件平台:`nrf52832(pca10040)`、`nrf52840`(pca10056) |
| 10 | + |
| 11 | + 在搭建bsp的时候,通过参考STM32的架构,预留出支持多种nordic芯片的框架,理论上可以支持更多的nordic的平台,限于目前社区小伙伴手上的开发板有限,如果您手上有相关nordic的开发板,欢迎添加对应的nordic的芯片的bsp。 |
| 12 | + |
| 13 | +Nordic nRF5x系列BSP 目前支持情况如下: |
| 14 | + |
| 15 | +| nordic主芯片 | 开发板名称 | bsp所在文件夹 | 备注 | |
| 16 | +| ------------ | ------------------------------------------------------------ | ------------- | ---- | |
| 17 | +| nrf52840 | 官方pca10056 | nrf52840 | | |
| 18 | +| nrf52832 | 官方pca10040 | nrf52832 | | |
| 19 | +| nrf52840 | [青风52840](https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-15118192232.5.46a15d490SURQ9&id=581711815379) | nrf52840 | | |
| 20 | + |
| 21 | +### 主要支持功能 |
| 22 | + |
| 23 | +- 支持官方softdevice的sample: ble_app_uart、ble_app_blinky、ble_app_hrs(softdevice是官方nordic的协议栈名称) |
| 24 | +- 支持nimble的软件包及对应的sample |
| 25 | +- 官方softdevice的sample和RT-THREAD驱动框架结合。 |
| 26 | + |
| 27 | + |
| 28 | + |
| 29 | +### 目录结构 |
4 | 30 |
|
5 | 31 | ``` |
6 | 32 | nrf5x |
7 | 33 | ├───docs |
8 | | -│ └───figures // 文档使用图片 |
| 34 | +│ └───images // nrf5x文档使用图片 |
9 | 35 | │ └───nRF5x系列BSP制作教程.md |
10 | | -├───libraries |
| 36 | +├───libraries // nrf5x系列支持BSP |
11 | 37 | │ └───drivers // nRF5x 系列设备通用驱动文件 |
12 | 38 | │ └───templates // 通用设备 BSP 工程模板 |
13 | | -│ │ └───nrf51x // nrf51x 系列 BSP 工程模板 |
14 | | -│ │ │ nrf52x // nrf52x 系列 BSP 工程模板 |
| 39 | +│ │ └───nrf52x // nrf52x 系列 BSP 工程模板 |
15 | 40 | │ │ └───nrf5x_board_kconfig // 通用 BSP 工程配置文件 |
16 | 41 | ├───nrf52832 // nrf52832 BSP 工程 |
17 | 42 | │ └───application // 应用代码 |
|
21 | 46 | │ │ kconfig // 工程配置文件 |
22 | 47 | │ └───rtconfig.h |
23 | 48 | ├───nrf52840 // nrf52840 BSP 工程 |
24 | | -└───README.md |
25 | | -``` |
| 49 | +└───README.md // nordic 工程整体介绍 |
| 50 | +``` |
| 51 | + |
| 52 | +### 如何使用 |
| 53 | + |
| 54 | +#### RT-THREAD的使用 |
| 55 | + |
| 56 | + 默认的RT-THREAD工程是不带有蓝牙协议栈功能的,方便客户先搭建对应的bsp平台,后续可以选择任意协议栈运行蓝牙。 |
| 57 | + |
| 58 | + 默认的BSP是支持UART和GPIO的,烧入即可亮灯。 |
| 59 | + |
| 60 | +**准备工作** |
| 61 | + |
| 62 | +需要env环境和keil环境,并且对RT-THREAD使用稍微熟悉一些即可。 |
| 63 | + |
| 64 | +- 首先下载代码,`git clone https://github.com/RT-Thread/rt-thread.git` |
| 65 | +- 进入到目录`rt-thread/bsp/nrf5x/nrf52840` |
| 66 | +- 右击进入env命令行模式 |
| 67 | +- menuconfig 选择需要加载的BSP配置并且保存 |
| 68 | +- 执行`pkgs --update` 下载对应的硬件软件包(这里的HAL库采用软件包的方式,需要客户自行下载) |
| 69 | +- 执行`scons --target=mdk5` 生成keil工程,烧入即可看到LED小灯闪烁 |
| 70 | +- 需要注意的是,如果之前板子上已经烧入softdevice的话,烧入可能会出现烧不进的情况,需要将整颗芯片擦除之后再运行rt-thread裸工程 |
| 71 | + |
| 72 | +#### Softdevice 的使用 |
| 73 | + |
| 74 | +首先可以熟悉上述工程的运行,在上述运行的基础上,我们可以试着跑一下ble_app_beacon(这个在SDK16.0中的peripheral 的sample中) |
| 75 | + |
| 76 | +- menuconfig 进入Hardware Drivers Config, BLE STACK 选择Nordic softdevice |
| 77 | + |
| 78 | + |
| 79 | + |
| 80 | +- menuconfig 进入peripheral libraries and drivers目录中选中nrf5x_sdk |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | +- 进入目录选择对应的sample |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | +- 保存配置,然后`pkgs --update`, 执行`scons --target=mdk5` |
| 89 | +- 打开keil 工程,softdevice的工程需要烧入官方的协议栈,所以先要烧入softdevice(如果之前已经烧入SDK16.0的softdevice,可以不用执行这一步),点击softdevice工程,烧入即可 |
| 90 | + |
| 91 | + |
| 92 | + |
| 93 | +- 重新选择rtthread工程,进行编译,烧入,通过串口看到如下的输出即代表成功 |
| 94 | + |
| 95 | + |
| 96 | + |
| 97 | +- 这个时候我们执行命令 `ble_app_beacon` 不同的sample对应不同的命令,看到如下log代表beacon已经跑起来了 |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | +- 这个时候用nrf connect 来测试可以搜索到对应的beacon |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | +#### nimble的使用 |
| 106 | + |
| 107 | +如果使用nimble就不能选择softdevice了,所以要清空之前的配置,为了防止误操作,可以选择将nrf52840的目录下面的内容全部执行`git reset --hard` 之后重复上述操作,然后执行`git clean -xfd`清理掉无效的文件 |
| 108 | + |
| 109 | +- menuconfig进入BLE STACK 选择nimble |
| 110 | + |
| 111 | +- menuconfig选择nimble |
| 112 | + |
| 113 | + |
| 114 | + |
| 115 | +- 进入Controller Configuration 选择nrf52840 |
| 116 | +- 进入Bluetooth Samples 选择ble beacon sample |
| 117 | +- 执行`pkgs --update` 下载需要的软件包 |
| 118 | +- 执行`scons --target=mdk5` |
| 119 | +- 打开keil工程烧入代码,这个时候需要注意的是,如果之前有softdevice存在flash中,需要擦除芯片中的softdevice。 |
| 120 | +- 烧入之后执行cmd `ble_ibeacon` |
| 121 | +- 之后用nrf connect 软件可以搜索到对应的beacon设备。 |
| 122 | + |
| 123 | + |
| 124 | + |
| 125 | +## FAQ: |
| 126 | + |
| 127 | +#### 1. 如果烧入的时候出现如下状况: |
| 128 | + |
| 129 | + |
| 130 | + |
| 131 | +说明板子上已经烧入了softdevice,需要擦除掉,才能烧入不带有softdevice的程序。 |
| 132 | + |
| 133 | +下面提供一种擦写softdevice的方法。在keil中选择softdevice Erase的FLASH算法,这个时候就烧写之前可以擦除之前的softdevice。 |
| 134 | + |
| 135 | + |
0 commit comments