1150812a8SEvalZero# NRF52832 Nimble BSP 使用说明 2150812a8SEvalZero 3150812a8SEvalZero## 简介 4150812a8SEvalZero 5*41de9012SEvalZero该 BSP 以 nrf52832 MCU 作为为平台,提供 NimBLE Bluetooth Stack 在 RT-Thread 上的基本功能。 6150812a8SEvalZero 7*41de9012SEvalZero所使用的协议栈为 NimBLE 在 RT-Thread上的移植版本,提供完整的 Host 及 Controller 协议栈支持,主要特性如下: 8*41de9012SEvalZero 9*41de9012SEvalZero- 支持 BLE5.0 标准 10*41de9012SEvalZero- 2Msym / s PHY 吞吐量 11*41de9012SEvalZero- 安全管理(SM),支持 LE Legacy Pairing, LE Secure Connections, Transport Specific Key Distribution 12*41de9012SEvalZero- 配置灵活,最多支持 32 个并发连接 13*41de9012SEvalZero- 提供常用的 Profile 和 Service 支持 14*41de9012SEvalZero- 清晰的 HCI 接口抽象 15*41de9012SEvalZero- 支持 BLE Mesh(PB-GATT and PB-ADV provisioning, Relay support, GATT Proxy ....) 16*41de9012SEvalZero- 最小 4.5 KB RAM,69KB Flash 的资源占用 17*41de9012SEvalZero 18*41de9012SEvalZero更多关于 NimBLE Stack 的介绍请参考 ``http://mynewt.apache.org/latest/network/docs/index.html``。 19150812a8SEvalZero 20150812a8SEvalZero## 外设支持 21150812a8SEvalZero 22150812a8SEvalZero本 BSP 目前对外设的支持情况如下: 23150812a8SEvalZero 24150812a8SEvalZero| **片内外设** | **支持情况** | **备注** | 25150812a8SEvalZero| :----------------- | :----------: | :------------------------------------- | 26150812a8SEvalZero| OS_Tick | 支持 | | 27150812a8SEvalZero| UART | TX-->6;RX-->8 | | 28150812a8SEvalZero## 使用说明 29150812a8SEvalZero 30150812a8SEvalZerobluetooth 协议栈当前是以软件包的形式发布,因此如果需使用 BLE 的相关功能,首先需要拉取该软件包。 31150812a8SEvalZero 32150812a8SEvalZero### 编译及烧写 33150812a8SEvalZero 34150812a8SEvalZero- 设置 RTT_ROOT 路径 35150812a8SEvalZero 36150812a8SEvalZero因为当前 BSP 尚未合并入 RT-Thread 仓库,所以编译之前需要手动设置 RTT_ROOT 的路径,即打开 ENV 工具,输入 ``set RTT_ROOT=D:\dev\rt_code\rt-thread``。 37150812a8SEvalZero 38150812a8SEvalZero- 拉取 BLE 软件包 39150812a8SEvalZero 40*41de9012SEvalZero打开 ENV 工具,首先输入``pkgs --upgrade``,更新软件包索引,接着输入 ``pkgs --update``,会自动从 github 拉取 BLE 协议栈。 41150812a8SEvalZero 42150812a8SEvalZero- 编译工程 43150812a8SEvalZero 44150812a8SEvalZero成功拉取协议栈之后,需要重新生成 MDK 工程。仍然在 ENV 目录下,输入 ``scons --target=mdk5``,此时会重新生成新的 MDK5 工程。 45150812a8SEvalZero打开该工程,点击 build 按钮,编译生成 hex 文件。 46150812a8SEvalZero 47150812a8SEvalZero- 烧写 48150812a8SEvalZero 49150812a8SEvalZero使用 JLINK 连接板子,选择对应的芯片型号,点击 Download 按钮进行烧写。 50150812a8SEvalZero 51150812a8SEvalZero### 运行结果 52150812a8SEvalZero 53150812a8SEvalZero烧写完成后,正确连接板载串口至终端软件,复位重新执行,打印如下信息,此时标志 RT-Thread 已经在正常工作,可输入其它 FINSH 命令查看系统状态信息,如 ``ps`` 、 ``free`` 等。 54150812a8SEvalZero 55150812a8SEvalZero``` 56150812a8SEvalZero \ | / 57150812a8SEvalZero- RT - Thread Operating System 58150812a8SEvalZero / | \ 4.0.0 build Jan 23 2019 59150812a8SEvalZero 2006 - 2018 Copyright by rt-thread team 60150812a8SEvalZerohello world 61150812a8SEvalZeromsh /> 62150812a8SEvalZero``` 63150812a8SEvalZero 64150812a8SEvalZero### BLE 的简单使用 65150812a8SEvalZero 66150812a8SEvalZero当前工程提供一个 Heart rate 示例。系统正常运行后,在 Finsh 命令行 输入 `` ble_hr ``,执行该 Demo。如下: 67150812a8SEvalZero 68150812a8SEvalZero``` 69150812a8SEvalZeromsh />ble_hr 70150812a8SEvalZero[I/nimble] GAP procedure initiated: stop advertising. 71150812a8SEvalZero[I/nimble] GAP procedure initiated: advertise; disc_mode=2 adv_channel_map=0 own_addr_type=0 adv_filter_policy=0 adv_itvl_min=0 adv_itvl_max=0 72150812a8SEvalZeromsh /> 73150812a8SEvalZero``` 74150812a8SEvalZero 75*41de9012SEvalZero此时手机打开 `nRF Master Control Panel` APP,能够扫描到名为 `rtt_blehr_sensor` 的设备,连接之后,模拟的 Heart rate 示例开始运行。现象如下: 76150812a8SEvalZero 77150812a8SEvalZero 78150812a8SEvalZero 79150812a8SEvalZero## 注意事项 80150812a8SEvalZero 81150812a8SEvalZero- 该BSP UART默认使用 TX--->6;RX--->8 引脚,可根据板载设计自行修改; 82*41de9012SEvalZero- 该协议栈移植自 Apache 开源方案 Nimble,相关介绍及 API 说明可参考``http://mynewt.apache.org/latest/network/docs/index.html``。 83150812a8SEvalZero 84150812a8SEvalZero 85