1*042d53a7SEvalZero# 1 介绍 2*042d53a7SEvalZero 3*042d53a7SEvalZeroNimBLE 软件包是 RT-Thread 基于 [Apache NimBLE](https://github.com/apache/mynewt-nimble) 开源蓝牙 5.0 协议栈的移植实现,该协议栈提供完整的 Host 层和 Controller 层支持,目前支持 Nordic nRF51 和 nRF52 系列芯片。 4*042d53a7SEvalZero 5*042d53a7SEvalZero## 1.1 主要特性 6*042d53a7SEvalZero 7*042d53a7SEvalZero- 扩展广播(LE Advertising Extensions) 8*042d53a7SEvalZero- 2Mbit/s比特率的物理层 9*042d53a7SEvalZero- 长距离编码(Coded PHY for LE Long Range) 10*042d53a7SEvalZero- 高速不可连接广播(High Duty Cycle Non-Connectable Advertising) 11*042d53a7SEvalZero- 新的跳频算法(Channel Selection Algorithm #2) 12*042d53a7SEvalZero- 隐私1.2(LE Privacy 1.2) 13*042d53a7SEvalZero- 安全管理(SM),支持传统配对(LE Legacy Pairing),安全连接(LE Secure Connections),特定秘钥分发(Transport Specific Key Distribution) 14*042d53a7SEvalZero- 链路层PDU数据长度扩展(LE Data Length Extension) 15*042d53a7SEvalZero- 多角色并发(主机(central)/从机(peripheral), server/client) 16*042d53a7SEvalZero- 同时广播和扫描 17*042d53a7SEvalZero- 低速定向广播(Low Duty Cycle Directed Advertising) 18*042d53a7SEvalZero- 连接参数请求(Connection parameters request procedure) 19*042d53a7SEvalZero- LE Ping 20*042d53a7SEvalZero- 完整的GATT客户端,服务端,以及子功能 21*042d53a7SEvalZero- 抽象HCI接口层 22*042d53a7SEvalZero 23*042d53a7SEvalZero## 1.2 Profile和Service支持 24*042d53a7SEvalZero 25*042d53a7SEvalZero- 警报通知服务(ANS) 26*042d53a7SEvalZero- 即时报警服务(IAS) 27*042d53a7SEvalZero- 链路丢失服务(LLS) 28*042d53a7SEvalZero- 电池服务(BAS) 29*042d53a7SEvalZero- 设备信息服务(DIS) 30*042d53a7SEvalZero- 心率服务(HRS) 31*042d53a7SEvalZero- 自行车速度及步调(CSC) 32*042d53a7SEvalZero- 射频功率(TPS) 33*042d53a7SEvalZero 34*042d53a7SEvalZero## 1.3 Mesh 特性 35*042d53a7SEvalZero 36*042d53a7SEvalZero- 广播和GATT承载(Advertising and GATT bearers) 37*042d53a7SEvalZero- PB-GATT 和 PB-ADV provisioning 38*042d53a7SEvalZero- 模型层(Foundation Models (server role)) 39*042d53a7SEvalZero- 支持中继(Relay support) 40*042d53a7SEvalZero- 支持GATT代理(GATT Proxy) 41*042d53a7SEvalZero 42*042d53a7SEvalZero更多关于 NimBLE Stack 的介绍请参考 ``http://mynewt.apache.org/latest/network/docs/index.html``。 43*042d53a7SEvalZero 44*042d53a7SEvalZero## 1.4 目录结构 45*042d53a7SEvalZero 46*042d53a7SEvalZero``` 47*042d53a7SEvalZeroNimBLE 48*042d53a7SEvalZero ├───apps /* Bluetooth 示例应用程序 */ 49*042d53a7SEvalZero │ ├───blecent 50*042d53a7SEvalZero │ ├───blecsc 51*042d53a7SEvalZero │ ├───blehci 52*042d53a7SEvalZero │ ├───blehr 53*042d53a7SEvalZero │ ├───blemesh 54*042d53a7SEvalZero │ ├───blemesh_light 55*042d53a7SEvalZero │ ├───blemesh_shell 56*042d53a7SEvalZero │ ├───bleprph 57*042d53a7SEvalZero │ ├───bleuart 58*042d53a7SEvalZero │ ├───btshell 59*042d53a7SEvalZero │ ├───ext_advertiser 60*042d53a7SEvalZero │ └───ibeacon 61*042d53a7SEvalZero ├───docs /* 官方文档及 API 说明 */ 62*042d53a7SEvalZero ├───ext 63*042d53a7SEvalZero │ └───tinycrypt /* Tinycrypt 加密库 */ 64*042d53a7SEvalZero ├───nimble 65*042d53a7SEvalZero │ ├───controller /* Controller 实现 */ 66*042d53a7SEvalZero │ │ ├───include 67*042d53a7SEvalZero │ │ └───src 68*042d53a7SEvalZero │ ├───drivers /* Nordic 系列 Phy 驱动 */ 69*042d53a7SEvalZero │ │ ├───nrf51 70*042d53a7SEvalZero │ │ └───nrf52 71*042d53a7SEvalZero │ ├───host /* Host Stack(主机控制器)实现 */ 72*042d53a7SEvalZero │ │ ├───include 73*042d53a7SEvalZero │ │ ├───mesh /* Mesh 组网功能 */ 74*042d53a7SEvalZero │ │ ├───pts /* PTS 测试相关 */ 75*042d53a7SEvalZero │ │ ├───services /* 通用的 Profile */ 76*042d53a7SEvalZero │ │ │ ├───ans 77*042d53a7SEvalZero │ │ │ ├───bas 78*042d53a7SEvalZero │ │ │ ├───bleuart 79*042d53a7SEvalZero │ │ │ ├───dis 80*042d53a7SEvalZero │ │ │ ├───gap 81*042d53a7SEvalZero │ │ │ ├───gatt 82*042d53a7SEvalZero │ │ │ ├───ias 83*042d53a7SEvalZero │ │ │ ├───lls 84*042d53a7SEvalZero │ │ │ └───tps 85*042d53a7SEvalZero │ │ ├───src 86*042d53a7SEvalZero │ │ ├───store 87*042d53a7SEvalZero │ │ ├───tools 88*042d53a7SEvalZero │ │ └───util 89*042d53a7SEvalZero │ ├───include 90*042d53a7SEvalZero │ │ └───nimble 91*042d53a7SEvalZero │ ├───src 92*042d53a7SEvalZero │ └───transport /* HCI 传输抽象层 */ 93*042d53a7SEvalZero │ ├───emspi 94*042d53a7SEvalZero │ ├───ram 95*042d53a7SEvalZero │ ├───socket 96*042d53a7SEvalZero │ └───uart 97*042d53a7SEvalZero └───porting /* OS 抽象层及系统配置 */ 98*042d53a7SEvalZero ├───nimble 99*042d53a7SEvalZero │ ├───include 100*042d53a7SEvalZero │ └───src 101*042d53a7SEvalZero └───npl 102*042d53a7SEvalZero └───rtthread /* RT-Thread OS 接口实现 */ 103*042d53a7SEvalZero ├───include 104*042d53a7SEvalZero │ ├───config /* NimBLE 协议栈配置选项 */ 105*042d53a7SEvalZero │ ├───console 106*042d53a7SEvalZero │ └───nimble 107*042d53a7SEvalZero └───src 108*042d53a7SEvalZero``` 109*042d53a7SEvalZero 110*042d53a7SEvalZero## 1.5 许可证 111*042d53a7SEvalZero 112*042d53a7SEvalZeroNimBLE 软件包遵循 Apache-2.0 许可,详见 LICENSE 文件。 113*042d53a7SEvalZero 114*042d53a7SEvalZero## 1.6 依赖 115*042d53a7SEvalZero 116*042d53a7SEvalZero- RT_Thread 3.0+ 117*042d53a7SEvalZero 118*042d53a7SEvalZero## 2 获取软件包 119*042d53a7SEvalZero 120*042d53a7SEvalZero使用 NimBLE 软件包需要在 RT-Thread 的包管理中选中它,具体路径如下: 121*042d53a7SEvalZero 122*042d53a7SEvalZero``` 123*042d53a7SEvalZeroRT-Thread online packages 124*042d53a7SEvalZero IoT - internet of things ---> 125*042d53a7SEvalZero--- NimBLE:An open-source Bluetooth 5.0 stack porting on RT-Thread 126*042d53a7SEvalZero Bluetooth Role support ---> 127*042d53a7SEvalZero Host Stack Configuration ---> 128*042d53a7SEvalZero Controller Configuration ---> 129*042d53a7SEvalZero Bluetooth Mesh support ---> 130*042d53a7SEvalZero HCI Transport support ---- 131*042d53a7SEvalZero Device Driver support ---- 132*042d53a7SEvalZero Log level (INFO) ---> 133*042d53a7SEvalZero Bluetooth Samples (Not enable sample) ---> 134*042d53a7SEvalZero(1) Maximum number of concurrent connections 135*042d53a7SEvalZero[*] Device Whitelist Support 136*042d53a7SEvalZero(0) The number of multi-advertising instances 137*042d53a7SEvalZero[ ] Extended Advertising Feature Support 138*042d53a7SEvalZero Version (latest) ---> 139*042d53a7SEvalZero 140*042d53a7SEvalZero``` 141*042d53a7SEvalZero 142*042d53a7SEvalZero**Bluetooth Role support** : 配置 BLE角色支持(Central/Peripheral/Broadcaster/Observer) ; 143*042d53a7SEvalZero**Host Stack Configuration** : 配置 Host 相关功能; 144*042d53a7SEvalZero**Controller Configuration** : 配置 Controller 相关功能; 145*042d53a7SEvalZero**Bluetooth Mesh support** : Mesh 特性支持及配置; 146*042d53a7SEvalZero**HCI Transport support** : 配置HCI层传输方式 147*042d53a7SEvalZero**Device Driver support ** : 底层 SOC Phy 支持 148*042d53a7SEvalZero**Log level (INFO)** : 配置协议栈日志等级; 149*042d53a7SEvalZero**Bluetooth Samples** : 配置示例应用; 150*042d53a7SEvalZero**Version** : 软件包版本选择; 151*042d53a7SEvalZero 152*042d53a7SEvalZero配置完成后让 RT-Thread 的包管理器自动更新,或者使用 pkgs --update 命令更新包到 BSP 中。 153*042d53a7SEvalZero 154*042d53a7SEvalZero## 3 使用 NimBLE 软件包 155*042d53a7SEvalZero 156*042d53a7SEvalZero配合独立的 nrf52832-nimble bsp 使用,参考 https://github.com/EvalZero/nrf52832-nimble 。 157*042d53a7SEvalZero 158*042d53a7SEvalZero## 4 注意事项 159*042d53a7SEvalZero- NimBLE 当前处于开发阶段,暂时只支持 Nodic nRF52832 MCU,参见 [nrf52832-bsp](https://github.com/EvalZero/nrf52832-nimble) 160*042d53a7SEvalZero 161*042d53a7SEvalZero## 5、联系方式 & 感谢 162*042d53a7SEvalZero 163*042d53a7SEvalZero- 维护:RT-Thread 开发团队 164*042d53a7SEvalZero- 主页:https://github.com/RT-Thread-packages/nimble 165