簡(jiǎn)介本次講座介紹 SimpleLink? CC26x2 和 CC13x2 軟件開(kāi)發(fā)套件 (SDK) 的 低功耗 Bluetooth? 器件,。本次實(shí)驗(yàn)中的 4 個(gè)任務(wù)預(yù)計(jì)將在 2 小時(shí)內(nèi)完成。完成 這些任務(wù)需具備中級(jí) C 語(yǔ)言編程知識(shí) 以及一定的嵌入式軟件開(kāi)發(fā)經(jīng)驗(yàn),。 本次實(shí)驗(yàn)課程將使用 SimpleLink CC26X2R1 無(wú)線 MCU LaunchPad 開(kāi)發(fā)套件來(lái)演示本模塊中的各項(xiàng)任務(wù),。第一項(xiàng)任務(wù)是演示 如何將項(xiàng)目下載到設(shè)備以及如何運(yùn)行, 然后我們將討論無(wú)線 BLE 接口,, 并對(duì) BLE 應(yīng)用做一些小的更改。 對(duì)于后面的任務(wù)來(lái)說(shuō),,我們將需要用到一個(gè)支持低功耗藍(lán)牙的手機(jī)或
運(yùn)行 TI 套件和 SDK 兼容性LAUNCHXL-CC26x2R1 和 LAUNCHXL-CC1352R1 套件均支持 各自的軟件開(kāi)發(fā)套件中包含的 低功耗藍(lán)牙棧。在本次實(shí)驗(yàn)中,我們將以 CC26x2R Launchpad 和 CC26x2 SDK 為例,, 但兩者的適用性相同。 除了進(jìn)行本實(shí)驗(yàn),,還建議閱讀 TI BLE-Stack 用戶(hù)指南 以了解詳細(xì)信息和更多信息,。本文還提供了一些參考文獻(xiàn)。 必要條件桌面開(kāi)發(fā)軟件
為了進(jìn)行測(cè)試,,需要使用藍(lán)牙客戶(hù)端應(yīng)用:
編譯器支持請(qǐng)參閱支持的 TI ARM 編譯器版本的 SimpleLink CC26X2 SDK 發(fā)行說(shuō)明。 與 CCS 中的其他 TI ARM 編譯器版本的兼容性尚未經(jīng)過(guò)測(cè)試,, 因此使用其他編譯器版本可能會(huì)導(dǎo)致未定義行為,。 請(qǐng)參閱《TI BLE-Stack 用戶(hù)指南》的 SDK 快速入門(mén)指南 → IDE → CCS → 步驟 4. 一章,了解安裝其他編譯器版本的步驟,。 硬件
用于測(cè)試:
推薦閱讀
入門(mén) - 桌面安裝軟件通過(guò) View → Resource Explorer 打開(kāi) Resource Explorer,找到 您要安裝的 SDK,。 在右側(cè)將看到下載圖標(biāo)。單擊此處以安裝 SDK 以及它的所有依賴(lài)項(xiàng),。 1.從上方 2.運(yùn)行 SimpleLink CC26X2 SDK 安裝程序: 在這種情況下,,您無(wú)需在計(jì)算機(jī)上進(jìn)行任何安裝。您可以導(dǎo)航到 TI-Rex 中的項(xiàng)目并將它導(dǎo)入 CCS 云,。 然后單擊 Cloud Import 按鈕: 請(qǐng)注意,,這不會(huì)在計(jì)算機(jī)上安裝 BTool。 這將為您提供:
任務(wù) 1 - 運(yùn)行 ProjectZero 項(xiàng)目第一個(gè)任務(wù)只需在 CC26X2R1 LaunchPad 上運(yùn)行 Project Zero 示例項(xiàng)目,, 并驗(yàn)證項(xiàng)目按照預(yù)期運(yùn)行,。 無(wú)線下載和 BIM 項(xiàng)目請(qǐng)注意,此項(xiàng)目默認(rèn)配置為 無(wú)線更新 (OAD)。這意味著您可以在手機(jī)上將新版本或完全不同的項(xiàng)目 上傳到 LaunchPad,。 它還意味著項(xiàng)目編譯和鏈接的方式使您的設(shè)備的內(nèi)部閃存中
必須先存在 啟動(dòng)映像管理器客戶(hù)配置 (CCFG) 此配置部分用來(lái)指示設(shè)備在啟動(dòng)后的行為方式, 如復(fù)位矢量的位置,、時(shí)鐘源是什么,,等等。 啟動(dòng)映像管理器 (BIM) 項(xiàng)目與 CCFG 部分位于內(nèi)部閃存的最后一個(gè)扇區(qū),,
負(fù)責(zé)從外部閃存加載新的映射(如果有),,
并啟動(dòng)內(nèi)部映像,。在
我們的案例中,,內(nèi)部映像是 如果不存在 BIM,,從 IDE 調(diào)試和啟動(dòng) Project Zero 將正常進(jìn)行,,因?yàn)?IDE 覆蓋引導(dǎo)配置并 直接跳到它認(rèn)為項(xiàng)目啟動(dòng)地址所在的位置。但如果 不存在 BIM,,在復(fù)位后,,設(shè)備將不知道做什么。 請(qǐng)注意,,在使用支持 OAD 的項(xiàng)目時(shí),,只需下載 BIM 一次。 導(dǎo)入 CCS 桌面打開(kāi) Code Composer Studio 并導(dǎo)入 Project Zero 應(yīng)用和堆棧庫(kù) 項(xiàng)目:
連接 CC26X2R LaunchPad首先確保您的套件已組裝、開(kāi)啟并且通過(guò) USB 線纜 連接到 PC,。 連接 CC26X2R Launchpad 后,,Windows 設(shè)備管理器 (開(kāi)始 → 控制面板 → 設(shè)備管理器,, 或在 Windows 10 上使用 Win+X, M) 應(yīng)該會(huì)顯示已連接以下設(shè)備:
配置調(diào)試器連接導(dǎo)入項(xiàng)目時(shí)會(huì)默認(rèn)選擇正確的調(diào)試器類(lèi)型 (XDS110),。 連接終端程序要查看套件的串行輸出,必須使用終端仿真器,。 當(dāng)您確認(rèn)調(diào)試器與設(shè)備的連接正常時(shí),立即啟動(dòng)終端仿真器,。有多種選擇可供使用:
1.啟動(dòng)您的終端程序 2.選擇 115200 波特速率、8 位數(shù)據(jù),、1 個(gè)停止位,、無(wú)奇偶校驗(yàn),、無(wú)流量控制。 3.打開(kāi)串行端口 構(gòu)建項(xiàng)目并刷寫(xiě)設(shè)備cc26xxr1lp_bim_offchip1.構(gòu)建 BIM 項(xiàng)目,,方法是右鍵單擊該項(xiàng)目并選擇
ble5_project_zero_cc26x2r1lp_app1.構(gòu)建
2.下載并運(yùn)行該項(xiàng)目,,方法是
3.下載項(xiàng)目并在 應(yīng)用運(yùn)行后,您應(yīng)可在終端應(yīng)用中觀察到如下所示的內(nèi)容: 這會(huì)顯示用戶(hù)應(yīng)用正在初始化三個(gè)服務(wù):LED,、Button 和 Data,并設(shè)置這些服務(wù)中特征的初始值,。最后會(huì)從堆棧收到回調(diào), 該回調(diào)指出設(shè)備已準(zhǔn)備就緒并已開(kāi)始廣播其存在,。 記下您的設(shè)備地址供以后使用。 任務(wù) 2 - 連接和瀏覽公開(kāi)的服務(wù)為了與低功耗藍(lán)牙設(shè)備進(jìn)行交互,,您需要使用指向該設(shè)備并充當(dāng)中央設(shè)備的東西。 許多移動(dòng)應(yīng)用程序可用于此目的,。我們將介紹 使用適用于 iOS 和 Android 的 TI SimpleLink Starter 應(yīng)用的 說(shuō)明。 除了這些移動(dòng)應(yīng)用,,德州儀器 (TI) 還為此提供了一些 PC 工具,,這些工具可通過(guò)串行端口與加載到獨(dú)立的 CC26xx 器件上的 特定固件進(jìn)行通信。這些串行命令符合 藍(lán)牙 SIG 定義的 HCI 標(biāo)準(zhǔn),,且除了 HCI 規(guī)范要求的裸機(jī)鏈路層命令之外,,還允許控制主機(jī)層,如 GATT,、GAP 和 Security Manager。 諸如 BTool 之類(lèi)的工具使用此接口連接到其他 BLE 設(shè)備以及與這些設(shè)備進(jìn)行交互,。 通過(guò)展開(kāi)以下框來(lái)選擇連接到 Project Zero 的首選方法,。 首先,,您將使用 0 – 在 Launchpad 上進(jìn)行 HostTest 編程 在這里,,您有兩個(gè)選擇:
1 – 啟動(dòng) BTool BTool 是一個(gè)使用 HCI 供應(yīng)商特定命令的 PC 工具,,
作為低功耗藍(lán)牙設(shè)備使用。BTool 可在 SimpleLink CC26X2 SDK 安裝文件夾
BTool 打開(kāi)時(shí),會(huì)提示您選擇 如果您有多個(gè) COM 端口,,請(qǐng)?jiān)? 2 – 掃描 BLE 設(shè)備 設(shè)備完成初始化后,GUI 右側(cè)的選項(xiàng)卡部分可用于執(zhí)行 BLE 功能,。我們將使用以下操作
來(lái)掃描和連接 1) 選擇 Discover/Connect 選項(xiàng)卡 2) 選擇 LocalName ,,標(biāo)記為黃色。
3) 在 Slave BDA 下拉菜單中,,選擇設(shè)備地址(來(lái)自于先前的終端輸出) 4) 單擊 Establish 以進(jìn)行連接 5) 建立連接后,,將看到已連接的外設(shè)的條目,。 連接后,,串行窗口將如以下所示: 注意,, 您還將在 BTool 窗口的左側(cè)看到一個(gè) 新的 Connection Info 部分: 3 – 瀏覽 Attribute 表 注意,,我們已建立連接,,接下來(lái)我們將要執(zhí)行發(fā)現(xiàn)來(lái)查找 Project Zero 設(shè)備上的所有特征和服務(wù),以便可與這些屬性進(jìn)行交互,。
您將注意到日志下方的區(qū)域會(huì)填充設(shè)備上可用的 服務(wù)和特征的相關(guān)信息,。 直截了當(dāng)?shù)卣f(shuō),完成發(fā)現(xiàn)后在 BTool 中的日志下方看到的內(nèi)容,, 就是可以通過(guò)藍(lán)牙屬性協(xié)議對(duì)任何已連接的 GATT Client 設(shè)備 進(jìn)行訪問(wèn)的內(nèi)容的可視化結(jié)果。 通過(guò)無(wú)線方式報(bào)告的唯一結(jié)果是 下圖中的每一行都是一個(gè)
圖 – 讀取所有值(通過(guò)右鍵單擊菜單)后的 Project Zero 的 GATT 表, 包括特征屬性/權(quán)限,。 4 - 交互 您可能會(huì)注意到,某些屬性沒(méi)有關(guān)聯(lián)的值,。為填充所有屬性的該字段,必須手動(dòng)讀取這些值,。
或者,,也可單擊 Value 列中的某個(gè)字段 以讀取單項(xiàng)的值。 GATT 表填充完成后,,接下來(lái)可以開(kāi)始與 Project Zero 設(shè)備 進(jìn)行交互。Value Description 字段中的注釋將會(huì)指導(dǎo)您如何操作,。 要向特征寫(xiě)入,雙擊 Value 字段,,隨后將出現(xiàn)一個(gè)新窗口。編輯 Value 并選中 Write Value,,即可發(fā)送 Write Request。 例如,,要點(diǎn)亮 LED0,請(qǐng)雙擊與 您可通過(guò)類(lèi)似的方式與 Button 和 Data 服務(wù)進(jìn)行交互,。 1 – 啟動(dòng) SimpleLink Starter 使用您的 iOS 設(shè)備,,找到 SimpleLink Starter 應(yīng)用并將其打開(kāi),。 2 – 掃描 BLE 設(shè)備 該應(yīng)用應(yīng)該會(huì)開(kāi)始自動(dòng)掃描 BLE 設(shè)備,但您可以通過(guò)下拉操作 刷新列表,。 您應(yīng)該會(huì)看到 Project Zero 廣播為 圖 – 在此處的第一步中選擇 連接后,,串行窗口將如以下所示: 注意, 3 – 使用 GUI SimpleLink Starter 可以識(shí)別 Project Zero 實(shí)施的服務(wù)的
4 – 瀏覽 Attribute 表 GUI 很有趣,,但我們也可以在更低的層級(jí)上探索 BLE 服務(wù)。為此,,
請(qǐng)返回 GUI 屏幕,并長(zhǎng)按 選擇菜單中的 直截了當(dāng)?shù)卣f(shuō),,您看到的內(nèi)容, 就是可以通過(guò)藍(lán)牙屬性協(xié)議對(duì)任何已連接的 GATT Client 設(shè)備 進(jìn)行訪問(wèn)的內(nèi)容的可視化結(jié)果,。 通過(guò)無(wú)線方式報(bào)告的唯一結(jié)果是 SimpleLink Starter 使用 圖 – 出現(xiàn)在 ProjectZero 中的 SimpleLink Starter 的 GATT 服務(wù)列表 圖 – LED 服務(wù)中的特征列表,。請(qǐng)注意,,允許的操作突出顯示。這里是 Read/Write,。 參閱下方的 Project Zero 的自定義標(biāo)識(shí)符列表 了解如何解讀自定義 UUD 5 – 交互 要使用 SimpleLink Starter 與特征進(jìn)行交互,請(qǐng)單擊 Characteristic UUID,。根據(jù)所單擊的具體特征,您將看到如下所示的內(nèi)容: 如上所示的特征具有 Write 屬性,。要使用 Write 屬性
向特征寫(xiě)入新值,請(qǐng)單擊其中一個(gè) 完成后,,單擊 6 – 廣播數(shù)據(jù) 通過(guò)操作菜單還可以查看設(shè)備在等待連接時(shí) 發(fā)送出去的數(shù)據(jù),。 在本例中為 1 – Start SimpleLink Starter 使用您的 Android 設(shè)備,找到 SimpleLink Starter 應(yīng)用并將其打開(kāi),。 2 – 掃描 BLE 設(shè)備 該應(yīng)用應(yīng)該會(huì)開(kāi)始自動(dòng)掃描 BLE 設(shè)備,,但您可以通過(guò)在設(shè)備列表上執(zhí)行下拉操作 強(qiáng)制刷新。 您應(yīng)該會(huì)看到 Project Zero 廣播為 連接后,,串行窗口將如以下所示: 注意, 3 – 交互 SimpleLink Starter 應(yīng)用識(shí)別到 Project Zero 服務(wù) (如下所述),,并顯示要交互的 GUI 小工具。單擊其中一個(gè) LED 以更改狀態(tài),。它還自動(dòng)啟用按鈕狀態(tài)通知, 這反映在按鈕圖表中,。 Project Zero 的自定義標(biāo)識(shí)符列表 (UUID)使用工具查看運(yùn)行 Project Zero 的設(shè)備的 Attribute 表時(shí), 如果該工具沒(méi)有元數(shù)據(jù)可用于解釋 UUID 以便顯示說(shuō)明和助記符,,請(qǐng)使用此列表來(lái)識(shí)別 每個(gè)服務(wù)和特征: 請(qǐng)記住,有些工具會(huì)使用通過(guò)無(wú)線接收的字節(jié)順序來(lái)顯示
表 – 識(shí)別 ProjectZero 服務(wù)和特征的 UUID,。 對(duì)于服務(wù)和特征聲明,您將在 ATT-Value 字段中 找到 UUID,,而且對(duì)于特征值,,UUID 位于 ATT-Type 字段中,。
表 – GATT UUID 在 ATT 表中的位置。 請(qǐng)參閱自定義配置文件 實(shí)驗(yàn)以了解更多詳細(xì)信息 Quiz-time借助使用 BTool 進(jìn)行連接部分的此 GATT 表回答以下 問(wèn)題(單擊 GATT 表可將其放大),。 上圖 GATT 表中的 LED 1 Characteristic Declaration 的
在哪里可以找到 GATT Service UUID,? Characteristic Declaration 的 LED Service 總共包含多少個(gè) 配置文件和發(fā)現(xiàn)當(dāng)一個(gè)設(shè)備連接到您的設(shè)備時(shí),,它不知道就它可交互的服務(wù)和特征而言,, 您需要提供什么,。 諸如 BTool 之類(lèi)的仿真工具將會(huì)發(fā)現(xiàn)并顯示可供您操作的一切,,
但通常對(duì)于大多數(shù)應(yīng)用而言,將會(huì)有一個(gè) 例如,,一個(gè)心率監(jiān)測(cè)設(shè)備通常會(huì)實(shí)施 如果您尚不知曉,,GATT 會(huì)在 ATT 上方強(qiáng)加一個(gè)元層,。 這意味著,,Attribute 是 ATT 項(xiàng),而 Service 是使用 Attribute 的 GATT 項(xiàng),。 使用仿真工具,您可以根據(jù) 在建立連接后會(huì)發(fā)現(xiàn)服務(wù)和特征,,然后 GATT 交互
才會(huì)開(kāi)始。這樣做的原因在于,, 健康溫度計(jì)示例例如,您有一個(gè) Health Thermometer Collector 設(shè)備,,
想要連接并使用一個(gè)遵循藍(lán)牙 SIG 針對(duì)
健康溫度計(jì) [PDF] 采納的 閱讀藍(lán)牙 SIG 規(guī)范后,,您就會(huì)明白 Health Thermometer Service 的 UUID 是 0x1809,,而 Temperature Measurement Characteristic 的 UUID 是 0x2A1C,。 然后,,您通過(guò)定義的過(guò)程發(fā)現(xiàn)它們的 Handle,以便進(jìn)行配置/讀取/寫(xiě)入,。 任務(wù) 3 - 接收通知如果使用移動(dòng)設(shè)備此任務(wù)是使用 BTool 進(jìn)行演示的,,因?yàn)樗峁┝俗钊娴?GATT 表。本任務(wù)結(jié)尾提供了有關(guān)在移動(dòng)設(shè)備上啟用通知的說(shuō)明,,但強(qiáng)烈建議您閱讀 BTool 說(shuō)明,以更好地了解藍(lán)牙通知,。 您已建立連接,。您已讀取并寫(xiě)入值來(lái)控制藍(lán)牙設(shè)備 并已點(diǎn)亮和熄滅 LED,。從設(shè)備上的傳感器取回一些數(shù)據(jù)(如按鈕的狀態(tài))如何,? 讀取發(fā)生更改的數(shù)據(jù)假設(shè)讀取 在此任務(wù)中,您將學(xué)習(xí)如何在不輪詢(xún)您感興趣的值
(這可能會(huì)浪費(fèi)大量精力)的情況下對(duì)設(shè)備進(jìn)行配置
以便在值更改時(shí)向您傳輸 當(dāng)您連接到符合 [ 1.每個(gè) BUTTONx 狀態(tài)特征的 2.BUTTONx 狀態(tài)特征包括 3.該應(yīng)用會(huì)關(guān)注 如果我們?cè)?BTool 中查看 在上圖中,,可在左列中看到
每個(gè) 特征屬性考慮在上面看到的 按鈕狀態(tài)特征的訪問(wèn)屬性有哪些? 訪問(wèn)屬性每個(gè)特征都具有屬性,;在特征聲明中通過(guò) 位圖來(lái)聲明這些屬性。以下列表摘錄自 SimpleLink CC26X2 SDK 中的定義,。
Snippet from gattservapp.h 客戶(hù)端特征配置(CCC)
屬性的 在移動(dòng)設(shè)備中啟用通知的方式略有不同,。 對(duì)于 SimpleLink Starter,,在特征視圖中,單擊 測(cè)驗(yàn)!查看任務(wù) 3 - 接收通知中的此表, 每個(gè)按鈕狀態(tài)的客戶(hù)端配置是什么,??jī)蓚€(gè)正確答案。 操作,!
任務(wù) 4 - 對(duì)應(yīng)用進(jìn)行自定義此任務(wù)教您如何自定義設(shè)備對(duì)外的外觀,,使其更加個(gè)人化,。 您可以通過(guò)三種主要方法在設(shè)備上設(shè)置標(biāo)記:
讀取設(shè)備名稱(chēng)使用 BTool 或您選擇的 BLE 中央設(shè)備,,查找
名稱(chēng)為 更改廣播數(shù)據(jù)
更改 LOCAL_NAME在
示例 LOCAL_NAME 修改,。注意長(zhǎng)度字段。 完成此操作后,,右鍵單擊 Project Zero App 項(xiàng)目,,然后選擇 請(qǐng)注意,某些移動(dòng)設(shè)備傾向于緩存先前已知的設(shè)備名稱(chēng),,并且可能無(wú)法更新您的設(shè)備名稱(chēng),。要查看您的新設(shè)備名稱(chēng),請(qǐng)查看如何清除移動(dòng)設(shè)備上的藍(lán)牙緩存.通常 這只需要在系統(tǒng)菜單中禁用藍(lán)牙,,然后重新啟用藍(lán)牙,。 就是這樣!做得很好,!冒險(xiǎn)一點(diǎn),,也可更改 在函數(shù) |
|
來(lái)自: 恰似一場(chǎng)夢(mèng) > 《待分類(lèi)》