国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CC26xx BLE添加indication屬性的特征值

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2022-01-13 17:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Yan Zhang

摘要

CC26xx 是TI 提供的高性能2.4GHz射頻SOC芯片。最新一代CC2652可以支持BLE,ZigBee,Thread,TI15.4以及私有協(xié)議。能以multi-protocol模式同時運行BLE+ZigBee ,BLE+TI15.4,或者BLE+2.4G 私有協(xié)議,任意兩種組合。

TI提供CC26xx的SDK,SDK里面包含了各種協(xié)議支持,其中就包含BLE。BLE協(xié)議里,TI提供了很多例程。其中simple peripheral例程是最為廣泛使用的一個,里面提供了BLE最基本的各種read, write,notify屬性的特征值,唯獨沒有indication屬性的特征值。Indication 屬性和notify屬性類似,但又不一樣,它是需要BLE Client設(shè)備收到數(shù)據(jù)后回復(fù)確認的一種機制。

本文基于CC2652的SDK V3.30版本的simple peripheral 例程實現(xiàn)indication。本文提供的方式適用于所有CC26xx系列的芯片。

目錄

1. BLE 特征值的indication屬性........................................................................................................... 2

2. CC2652 indication的實現(xiàn)................................................................................................................ 2

2.1 特征值2的定義............................................................................................................................. 2

2.1.1 特征值2 屬性修改.................................................................................................................... 2

2.1.2 特征值2 的配置屬性添加......................................................................................................... 3

2.2 特征值2的CCC值操作................................................................................................................. 4

2.3 特征值2的indication數(shù)據(jù)發(fā)送...................................................................................................... 4

2.3.1 調(diào)用GATTServApp_ProcessCharCfg()................................................................................... 4

2.3.2 調(diào)用GATT_Indication()............................................................................................................ 5

2.4 應(yīng)用層代碼添加........................................................................................................................... 6

3. Indication 測試................................................................................................................................ 7

4. 參考文獻........................................................................................................................................... 9

圖表

圖1. BLE indication............................................................................................................................ 2

圖2. 特征值2的屬性.............................................................................................................................. 8

圖3. 使能特征值2的indication............................................................................................................. 9

圖4. Indication發(fā)送和確認................................................................................................................... 9

1 BLE 特征值的indication屬性

BLE特征值的indication是由server端主動向client端發(fā)送數(shù)據(jù)的一種方式,和notification方式類似,但indication不一樣的地方是需要client端收到數(shù)據(jù)后回復(fù)confirm包給server端。這些行為都是在GATT層完成,并可以通知client應(yīng)用層對方成功接收數(shù)據(jù)。由于有自動確認機制,indication在很多應(yīng)用層級的協(xié)議制定中有比較廣泛應(yīng)用。

poYBAGGKS8yAC6AIAAA8IWRiqZc083.png

圖1. BLE indication

2 CC2652 indication的實現(xiàn)

本文基于CC2652的SDK V3.30版本的simple peripheral 例程實現(xiàn)indication,在simple GATT service中的特征值2上添加indication機制,特征值2將同時支持read和indication的屬性。

2.1 特征值2的定義

2.1.1 特征值2 屬性修改

在simple_gatt_profile.c中,給Characteristic 的屬性添加indication 屬性:

poYBAGGKS82AdaCYAAAi-nvoYLM705.jpg

同時,在特征值定義表格中,特征值2的讀寫屬性里,把GATT_PERMIT_READ這一定義去掉,完全交由前面定義的simpleProfileChar2Props來決定,不然該特征值還是會被認為只有read屬性:

pYYBAGGKS8-AE5NtAAAhpv25FB4808.jpg

2.1.2 特征值2 的配置屬性添加

就像帶有notification屬性的特征值一樣,作為帶有indication屬性的特征值,也必須有一個CCC(Client Characteristic Configuration)緊隨該特征值的value定義,將它添加在特征值2的value定義后面:

pYYBAGGKS9GAc4OBAADcV7-U-Hc979.jpg

同時,我們需要在特征值定義表格中把這個CCC的定義attribute也添加進去,位置是在特征值2的value定義之后,該attribute的讀寫屬性為可讀+可寫。

pYYBAGGKS9KAEk6rAABLTH92z3Q779.jpg

注意,由于在表格里添加了一個attribute,表格數(shù)組的尺寸定義也要加1,由17變?yōu)?8:

poYBAGGKS9SAGodCAAAN2dhxDo4547.jpg

在service初始化函數(shù)中,把特征值2的CCC值也進行初始化,位置在SimpleProfile_AddService() 函數(shù):

pYYBAGGKS9aASFeTAABhyQNwOS0752.jpg

特征值的定義部分完成。

2.2 特征值2的CCC值操作

Indication或者notification的CCC值是由client(通常是central設(shè)備,極個別profile可以是peripheral設(shè)備)來用來使能server端的indication或者notification。這個操作本質(zhì)上是client對CCC值的一個寫操作,而寫操作的處理在simpleProfile_WriteAttrCB()函數(shù)里,區(qū)分和例程里特征值4的notification的CCC值,添加代碼如下,替換原來的:

poYBAGGKS9eAdFuTAABtc9qrRWs044.jpg

注意GATT_CLIENT_CFG_INDICATE和GATT_CLIENT_CFG_NOTIFY的區(qū)別,分別對應(yīng)indication和notification。這里的添加,就會修改simpleProfileChar2Config值,并且使能或者關(guān)閉特征值2的indication功能。

另外注意simpleProfileChar2Config本質(zhì)是一個指針,指向gattCharCfg_t結(jié)構(gòu)體:

poYBAGGKS9mAM45fAAA2HauiYds031.jpg

每一個CCC的value,對應(yīng)一個connection handle,也就是對應(yīng)一個BLE的連接。從其在SimpleProfile_AddService()函數(shù)里的初始化也可以看出,simpleProfileChar2Config被分配了MAX_NUM_BLE_CONNS個gattCharCfg_t尺寸的空間,這就為每個BLE連接都單獨預(yù)留了indication的CCC的配置,每一個連上本設(shè)備的central設(shè)備都能單獨開關(guān)特征值2的indication。

2.3 特征值2的indication數(shù)據(jù)發(fā)送

在CC26xx的SDK中,發(fā)送indication或者notification有兩種方式,一種是調(diào)用封裝的函數(shù)GATTServApp_ProcessCharCfg(),另一種是直接調(diào)用GATT的API函數(shù)GATT_Indication()和GATT_Notification()。

2.3.1 調(diào)用GATTServApp_ProcessCharCfg()

在SimpleProfile_SetParameter()中,應(yīng)用層會調(diào)用該函數(shù)來做特征值操作,把對應(yīng)的特征值2的部分修改如下:

pYYBAGGKS9uAUts3AACAVAL_s1c499.jpg

這里把len的長度加1的目的是為了得到應(yīng)用層的task ID。這就是indication和notification的區(qū)別之一,藍牙協(xié)議規(guī)定indication發(fā)送后是需要對方回復(fù)confirm確認的,這個確認必須要有一個對應(yīng)的實體也就是task去接收并且處理(也可以不處理,只是當作一個indication成功的通知,接收這個動作是必須的)。所以indication發(fā)送的時候必須要提前制定確認消息的接收task ID。這里就會通過SimpleProfile_SetParameter() 被應(yīng)用層調(diào)用來指定發(fā)送的indication的值和接收確認消息的task ID,一般就由應(yīng)用層task本身接收。

2.3.2 調(diào)用GATT_Indication()

另一種方法直接調(diào)用GATT層API GATT_Indication(),實現(xiàn)代碼如下。由于CC26xx支持一從多主模式,所以有可能同時存在多條BLE鏈路,因此代碼的實現(xiàn)也考慮到這一點,所有當前存在的BLE鏈路都要進行判斷,根據(jù)CCC值的開關(guān)狀態(tài)決定是否需要向?qū)?yīng)的主機發(fā)送該特征值的indication。

pYYBAGGKS92AbE3uAAD4bO1XGO0932.jpg

上面這段代碼同時也實現(xiàn)了如何在service的表格里查找某特征值對應(yīng)的attribute handle,可以借鑒用到其他地方。

2.4 應(yīng)用層代碼添加

添加用于indication的值,該值會每發(fā)送一次就累加一次:

poYBAGGKS96APn__AAAPYO5x8g0346.jpg

在SimplePeripheral_performPeriodicTask()中定時發(fā)送特征值2的indication,和特征值4的notification一起發(fā)送:

poYBAGGKS-CAanFdAADMygulkxQ282.jpg

針對特征值2操作的參數(shù)是兩個字節(jié)長度,第一個字節(jié)是要發(fā)送的值,第二個字節(jié)就是indication發(fā)送后central回復(fù)確認的時候進行接收的task ID,這里用的就是應(yīng)用層task本身的ID。

注意,TI-RTOS的每個task有個entity ID,這個其實就是task ID:

pYYBAGGKS-GAeNOHAAAdtu8qOrE887.jpg

在應(yīng)用層中添加indication發(fā)送后,收到central的確認消息的操作。在函數(shù)SimplePeripheral_processGATTMsg() 中添加ATT_HANDLE_VALUE_CFM的操作:

pYYBAGGKS-OAKc47AAAzMN4fOCs702.jpg

這里只簡單打印一下結(jié)果,打印的值為這一次發(fā)送成功的indication的值,具體可以根據(jù)實際情況進行修改,比如需要收到confirm之后發(fā)送下一個indication數(shù)據(jù)等。

3 Indication 測試

編譯下載代碼到CC2652 LaunchPad上。

打開手機上BLE的APP,比如LightBlue,查找Simple Peripheral,找到后連接。可以看到特征值2已經(jīng)帶indication屬性。

poYBAGGKS-WAQACnAABLMb3Hfqw650.jpg

圖2. 特征值2的屬性

3. 點進特征值2界面,點擊Listetn for notification。這里“notification”只是界面顯示,其實是indication。因為特征值2的屬性顯示已經(jīng)是indication。

poYBAGGKS-aAfZP1AABJe9StI9w627.jpg

圖3. 使能特征值2的indication

4. 手機收到CC2652發(fā)送過來的indication,并且在CC2652連接PC的串口終端上能看到手機回復(fù)收到indication之后的確認包。

審核編輯:金巧

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • soc
    soc
    +關(guān)注

    關(guān)注

    40

    文章

    4576

    瀏覽量

    229144
  • 嵌入式處理
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    10513
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1101

    瀏覽量

    51729
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    LuatOS平臺下BLE藍牙開發(fā)從入門到實踐

    ,全面介紹LuatOS中BLE模塊的基礎(chǔ)知識,涵蓋角色定義(主機/從機)、服務(wù)配置、特征值操作與事件回調(diào)機制,并通過一個完整的溫濕度數(shù)據(jù)上報案例,逐步演示應(yīng)用開發(fā)全過程。 一、BLE總體介紹 ? 1.1 什么是
    的頭像 發(fā)表于 02-02 16:32 ?6179次閱讀
    LuatOS平臺下<b class='flag-5'>BLE</b>藍牙開發(fā)從入門到實踐

    探索CC85xx系列:2.4 GHz無線數(shù)字音頻的理想之選

    探索CC85xx系列:2.4 GHz無線數(shù)字音頻的理想之選 在當今數(shù)字化的時代,無線數(shù)字音頻技術(shù)正以前所未有的速度發(fā)展。而德州儀器(TI)的CC8520、CC8521、CC8530和
    的頭像 發(fā)表于 01-06 10:35 ?4432次閱讀

    探索CC85xx系列:2.4GHz無線數(shù)字音頻流的理想之選

    探索CC85xx系列:2.4GHz無線數(shù)字音頻流的理想之選 在當今的電子世界中,無線數(shù)字音頻技術(shù)的發(fā)展日新月異。對于電子工程師而言,選擇一款性能卓越、功能豐富的無線音頻芯片至關(guān)重要。今天,我們就來
    的頭像 發(fā)表于 01-06 09:55 ?4825次閱讀

    探索CC85xx系列:2.4 GHz無線數(shù)字音頻的理想之選

    探索CC85xx系列:2.4 GHz無線數(shù)字音頻的理想之選 在當今的無線音頻領(lǐng)域,尋找一款高性能、低成本且易于集成的解決方案是眾多電子工程師的目標。德州儀器(TI)的CC8520、CC
    的頭像 發(fā)表于 01-06 09:45 ?5838次閱讀

    深入剖析CC2630:高性能無線MCU的卓越之選

    和應(yīng)用這款芯片。 文件下載: cc2630.pdf 一、CC2630概述 CC2630是CC26xx家族中的一員,具有低成
    的頭像 發(fā)表于 01-05 14:55 ?766次閱讀

    CC3130:開啟低功耗物聯(lián)網(wǎng)連接新時代

    豐富的功能和出色的性能,為物聯(lián)網(wǎng)應(yīng)用提供了強大的支持。 文件下載: cc3130.pdf 一、CC3130核心特性 (一)集成功能與協(xié)議支持 CC3130集成了Wi-Fi和互聯(lián)網(wǎng)協(xié)議,支持與B
    的頭像 發(fā)表于 12-22 11:10 ?1746次閱讀

    探索CC330xMOD:適用于物聯(lián)網(wǎng)的高效Wi-Fi 6與藍牙低功耗模塊

    330xMOD系列Wi-Fi 6和藍牙低功耗(BLE)模塊就是這樣一款滿足市場需求的產(chǎn)品。今天就深入探討CC330xMOD模塊的特性、規(guī)格以及應(yīng)用場景。 文件下載: cc3301mod.pdf 一、
    的頭像 發(fā)表于 12-22 09:40 ?784次閱讀

    TI CC2642R BLE 5.2低功耗藍牙模塊:以核心芯片驅(qū)動智能連接革新

    TI CC2642R BLE 5.2 低功耗藍牙模塊 憑借其卓越性能與靈活應(yīng)用,正重新定義無線通信的邊界。本文將從技術(shù)特性、核心優(yōu)勢、應(yīng)用場景及開發(fā)支持四大維度,深度解析這款模塊如何賦能行業(yè)創(chuàng)新。 一、技術(shù)特性:BLE 5.2
    的頭像 發(fā)表于 12-18 15:41 ?574次閱讀

    ?TI CC1311P3 LaunchPad?開發(fā)套件技術(shù)解析與應(yīng)用指南

    Texas Instruments CC1311P3 LaunchPad? 開發(fā)套件設(shè)計用于加速開發(fā)SimpleLink? 亞1GHz無線MCU。該器件支持TI 15.4堆棧和專有射頻協(xié)議。CC13XX-CC26XX軟件開發(fā)套件 (SDK) 提供TI
    的頭像 發(fā)表于 09-01 15:19 ?1316次閱讀
    ?TI <b class='flag-5'>CC</b>1311P3 LaunchPad?開發(fā)套件技術(shù)解析與應(yīng)用指南

    ATT讀取由組請求CYBLE-416045-02 gatt服務(wù)器響應(yīng),帶有錯誤的起始和結(jié)束屬性句柄怎么解決?

    過程中,需要經(jīng)過 ATT 按組類型請求讀取,我的服務(wù)器響應(yīng)如下: ... 客戶端 ATT 按組請求讀取:起始屬性句柄 = 70 / 結(jié)束屬性句柄 = 65535 我的服務(wù)器響應(yīng):句柄對{Start
    發(fā)表于 08-14 07:28

    STM32WBA55CG連接上手機時如何自動開啟Notify而不需要手機端手動開啟呢?

    這是我手機用STBLETOOlBOX連接上開發(fā)板后的圖片 我發(fā)現(xiàn)手機一旦連接上開發(fā)板有的特征值是自動開啟的notify 有的特征值還需要手動點擊Notify才能收到通知,這是為什么?在哪里可以讓所有特征值能夠連接上手機后自動打
    發(fā)表于 07-25 09:21

    外圍設(shè)備通過手機連接到BLE應(yīng)用程序,為什么不能連接到Infineaon BLE

    使用 ch06_ex01_periab \" le 項目創(chuàng)建了外圍設(shè)備。\" \" 使用像 LightBlue 這樣的移動應(yīng)用程序,我能夠連接到這個外圍設(shè)備并更改特征值。 我已經(jīng)使用 \"
    發(fā)表于 07-07 08:06

    【沁恒CH585開發(fā)板免費試用體驗】4、從ADC采集到BLE-Web實時可視化

    = await service.getCharacteristic(characteristicUuid); // 檢查特征值屬性 const properties
    發(fā)表于 07-04 15:43

    BLE連接未啟動的原因?

    我們遇到了與 BLE 連接相關(guān)的問題,詳情如下 添加了新的詳細日志(Detailed-logs.zip)。 移動設(shè)備:Android Samsung z flip 設(shè)備:M63 KA 設(shè)備應(yīng)用程序
    發(fā)表于 06-05 07:12

    藍牙UUID:無線通信中的唯一標識符

    一、藍牙UUID:1、我們將從機具有的數(shù)據(jù)或者屬性特征,稱之為從機中添加(profile配置文件),作為profile包含一個或者多個服務(wù),每個服務(wù)又包含一個或者多個特征。每個
    的頭像 發(fā)表于 03-25 16:48 ?1131次閱讀
    藍牙UUID:無線通信中的唯一標識符