該庫不再被維護,並且沒有計劃繼承該庫。雖然現有 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 入口網站上提交貼文。請注意,錯誤報告應足夠詳細地描述如何重現錯誤。
有關詳細信息,請參閱許可證文件。