该库不再被维护,并且没有计划继承该库。虽然现有 nRF5 SDK 用户仍然可以访问它,但不会收到进一步的更新或支持。我们建议不要使用此库启动新项目,因为可用的固件(.hex 文件)使用过时的 SoftDevice 二进制文件。
pc-ble-driver
提供用于蓝牙低功耗 nRF5 SoftDevice 序列化的 C/C++ 库。
pc-ble-driver
由一组静态和共享库组成,这些库通过与运行 SoftDevice 和连接软件的 nRF5 连接芯片的串行端口通信向应用程序提供 SoftDevice 功能,此处包含为单个 .hex 文件。有关 SoftDevice 序列化的详细信息,请参阅序列化。
C/C++ 库可以直接连接,但也作为更高级别的绑定提供,以减少控制为代价简化开发(在大多数情况下是可以接受的):
其中“应用芯片”只是通用硬件(即 Windows、Linux 或 macOS 设备),尽管它也可以是 Arduino 或 Raspberry Pi 等。
要使用 pc-ble-driver,您的开发套件需要具有正确的固件。所需的固件可在hex/sd_api_v
文件夹中找到,其中包含与pc-ble-driver
通信所需的 SoftDevice 和连接固件。
生成的库与以下 SoftDevice API 版本和 nRF5x IC 兼容:
connectivity__1m_with_s130_2.xx
(nRF51 和 nRF52 系列 IC)connectivity__<1m|*usb>_with_s132_3.xx
(仅适用于 nRF52 系列 IC)connectivity__<1m|*usb>_with_s132_5.xx
(仅适用于 nRF52 系列 IC)connectivity__<1m|*usb>_with_s132_6.xx
(仅适用于 nRF52 系列 IC)connectivity__<1m|*usb>_with_s140_6.xx
(仅适用于 nRF52 系列 IC)*usb) 仅适用于带 USBD 外设的 nRF52 系列 IC
主成分分析 | 正式名称 | 货号 | 笔记 |
---|---|---|---|
PCA10028 | nRF51 开发套件 | nRF6824 | |
PCA10031 | nRF51 加密狗 | nRF6825 | |
PCA10040 | nRF52 开发套件 | nRF6827 | |
PCA10056 | nRF52840 { 开发套件 } | nRF6828 | *) |
PCA10059 | nRF52840 { 适配器 } | nRF6829 | 只能使用支持 Nordic USB CDC 串行端口的连接固件 |
*) 可以使用 Nordic USB CDC 串口版本和 SEGGER J-Link-OB (VCOM) 版本。在 PCA10056 上使用 Nordic USB CDC 串口版本需要连接引脚 P0.18 和 P0.24。 QSPI 芯片的引脚也必须就位(默认情况下)。检测是PCA10056还是PCA10059的算法是检查是否可以与QSPI芯片通信。 PCA10059没有QSPI芯片。 nRF Connect DFU 触发器使用检测来确定在 DFU 和应用模式之间切换时使用哪个引脚来重置设备。
该通信库可在任何类型的串行端口 (UART) 上工作,但最常在 Segger J-Link USB CDC UART 上使用。要设置所需的 J-Link 驱动程序,只需下载并安装与您的操作系统匹配的版本:
安装所需的驱动程序并连接支持 J-Link 的板(例如 Nordic 开发套件)后,端口应该可用。
此外,您必须禁用Mass Storage Device
才能使用pc-ble-driver
与设备通信,请参阅data corruption or drops issue
。
串行端口将显示为COMxx
。只需检查设备管理器中的“端口(COM 和 LPT)”部分即可。
串行端口将显示为/dev/ttyACMx
。
默认情况下,并非所有用户都可以访问该端口。键入以下命令将您的用户添加到dialout
组,以使其能够访问串行端口。请注意,需要重新登录才能生效。
$ sudo usermod -a -G dialout < username >
要防止调制解调器管理器服务尝试连接到 CDC ACM 串行端口:
$ systemctl stop ModemManager.service
$ systemctl disable ModemManager.service
串行端口将显示为/dev/tty.usbmodemXXXX
。
有一个已知问题,如果您遇到任何问题,请在此处检查。
要对连接固件进行编程,您需要nrfjprog
,它与 nRF5x 命令行工具捆绑在一起,可以从以下位置下载:
在 Linux 和 macOS 上将nrfjprog
和mergehex
添加到PATH
。
或者, nRF Connect Programmer
可以帮助您通过 UI 支持对连接固件进行编程。
下载 nRF Connect Desktop 并在那里安装nRF Connect Programmer
。
要编译pc-ble-driver
您将需要以下工具:
pc-ble-driver
要编译connectivity
HEX 文件,您将需要其他工具:
connectivity
HEX文件按照以下步骤在特定平台上安装依赖项:
下载Visual Studio 15
或更高版本并安装。
安装巧克力。使用cmd.exe
安装(以管理员身份运行)
# Copy everything below
@ " %SystemRoot%System32WindowsPowerShellv1.0powershell.exe " -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) " && SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
如果Chocolatey
已按上述方式安装,但尚未添加到 PATH,请运行:
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
安装Git
。
$ choco install -y git
安装CMake
。
$ choco install -y cmake
安装 vcpkg。
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ . b ootstrap-vcpkg.bat
然后将 vcpkg 位置添加到PATH
并将其设置为VCPKG_ROOT
环境变量。
仅当您想要编译自己的connectivity
HEX 文件时才需要执行以下步骤。
安装ninja
。
$ choco install -y ninja
下载并安装GNU Embedded Toolchain for Arm
从这个位置下载。
按照安装说明进行操作。
在环境变量中将其安装路径设置为GNUARMEMB_TOOLCHAIN_PATH
。例如:
$ set GNUARMEMB_TOOLCHAIN_PATH=c: g ccarmemb
安装Python
和pip
,然后安装nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
安装build-essential
。
$ sudo apt-get -y install build-essential
安装Git
$ sudo apt-get -y install git
如果安装的Git
版本低于要求,则:
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt update
$ sudo apt install git
安装CMake
。
$ sudo apt-get -y install cmake
如果版本低于要求,请从源安装CMake
。
安装 vcpkg。
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ ./bootstrap-vcpkg.sh
然后将 vcpkg 位置添加到PATH
和VCPKG_ROOT
环境变量中。
安装Ninja
。
$ sudo apt-get install ninja-build
仅当您想要编译自己的connectivity
HEX 文件时才需要执行以下步骤。
安装GNU Embedded Toolchain for Arm
。
GNUARMEMB_TOOLCHAIN_PATH
。安装Python
和pip
,然后安装nrfutil
。
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
# If errors persist, try updating pip itself.
安装Xcode (>=10.1)
。
使用 HomeBrew 安装gcc6
。
$ brew install gcc6
使用 HomeBrew 安装CMake
。
$ brew install cmake
$ brew upgrade cmake
如果版本低于要求,请从源安装CMake
。
安装 vcpkg。
$ git clone https://github.com/Microsoft/vcpkg/
$ cd vcpkg
$ git checkout tags/2020.04
$ ./bootstrap-vcpkg.sh
然后将 vcpkg 位置添加到PATH
和VCPKG_ROOT
环境变量中。
仅当您想要编译自己的connectivity
HEX 文件时才需要执行以下步骤。
安装GNU Embedded Toolchain for Arm
。
GNUARMEMB_TOOLCHAIN_PATH
。安装Python
和pip
,然后安装nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
安装 vcpkg 依赖项。
# cd
# Make sure %VCPKG_ROOT% is set and added to %PATH%
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake 根据本文选择要使用的 Visual Studio 编译器:在命令行上构建 C/C++ 代码
$ cmake -G Ninja ..
编译
$ cmake --build .
(可选)使用--config
选项选择构建配置。通常可以使用Debug
、 Release
、 MinSizeRel
和RelWithDebInfo
。例如:
$ cmake --build . --config Debug
安装 vcpkg 依赖项。
# cd
# Make sure $VCPKG_ROOT is set and added to $PATH
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake
$ cmake
-G Ninja
..
(可选)使用-DCMAKE_BUILD_TYPE
选项选择构建配置。通常可以使用Debug
、 Release
、 MinSizeRel
和RelWithDebInfo
。
(可选)使用-DARCH
选项选择目标体系结构(32 或 64 位)。这些值可以是x86_32
、 x86_64
、 x86_32,x86_64
。例如:
$ cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Debug
-DARCH=x86_32,x86_64
..
编译
$ cmake --build .
pc-ble-driver
。确保设置了以下环境变量:
VCPKG_ROOT
GNUARMEMB_TOOLCHAIN_PATH
确保以下路径已添加到 PATH:
VCPKG_ROOT
mergehex
按照以下步骤在特定平台上安装依赖项:
设置环境
# cd
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
# Make sure environment variables have been set
# as described at beginning of this section
CMake
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
设置为 1 以启用编译连接固件。
CONNECTIVITY_VERSION
定义编译的连接固件的版本。
检查在 Windows 上编译 pc-ble-driver 的更多选项
编译
$ cmake --build . --target compile_connectivity
编译后,HEX 文件位于hex/sd_api_v
文件夹中。它们包括 SoftDevice 和连接应用程序。
设置环境
# cd
$ export TMP=/tmp
# Make sure environment variables have been set
# as described at beginning of this section
CMake
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ cmake
-G Ninja
-DCOMPILE_CONNECTIVITY=1
-DCONNECTIVITY_VERSION=1.0.0
..
COMPILE_CONNECTIVITY
设置为 1 以启用编译连接固件。
CONNECTIVITY_VERSION
定义编译的连接固件的版本。
检查在 Ubuntu Linux 或 macOS 上编译 pc-ble-driver 的更多选项
编译
$ cmake --build . --target compile_connectivity
编译后,HEX 文件位于hex/sd_api_v
文件夹中。它们包括 SoftDevice 和连接应用程序。
如果尚未安装 nRF5x 命令行工具,请转至安装工具。
要使用此库,您需要对 nRF5x IC 上的连接固件进行编程
使用 nRF5x 命令行工具对 IC 进行擦除和编程:
$ nrfjprog -f NRF5 -e
$ nrfjprog -f NRF5 --program hex/sd_api_v/connectivity___with_s_...hex
或者,使用 nRF Connect Programmer 对 IC 进行擦除和编程。
某些套件(例如 pca10059 nRF52 加密狗)没有板载调试器,必须通过串行 DFU 进行编程。在 Windows 上,需要设备驱动程序才能让操作系统正确检测到套件。要安装所需的驱动程序,请确保您安装了最新的 nRF Connect for Desktop。
可以通过命令行或 nRF Connect for Desktop 通过串行 DFU 对连接固件进行编程。
使用 nrfutil 进行设备固件升级通常分两步完成:1:生成 DFU zip 包,2:执行 DFU 过程。 DFU zip 包已预先制作并包含在该存储库中。要使用 nrfutil 和预制的 DFU 包运行 DFU 过程:
nrfutil dfu usb-serial -pkg connectivity_x.x.x_usb_with_s_.._dfu_pkg.zip -p
这些示例是使用pc-ble-driver
进行开发的良好起点。示例包括心率监测器(BLE 外设)和心率收集器(BLE 主设备),并展示了基于pc-ble-driver
构建的应用程序的基本结构。
要快速启动并运行示例,请参阅示例/README.md。
如果您在安装 pc-ble-driver 过程中遇到问题,请参阅 Issues.md。
请随意通过创建拉取请求来提出更改。
如果您计划进行任何重要的更改,请从小处开始,并在投入太多工作之前征求意见。如果拉取请求不太适合当前产品路线图,则可以拒绝该拉取请求。
为了接受您的拉取请求,我们需要您签署我们的贡献者许可协议 (CLA)。提交第一个拉取请求后,您将看到执行此操作的说明。
如果您发现任何错误,或者有疑问或其他反馈,请在 Nordic DevZone 门户上提交帖子。请注意,错误报告应足够详细地描述如何重现错误。
有关详细信息,请参阅许可证文件。