TI CC2540 BLE協(xié)議棧 藍(lán)牙相關(guān)

《AMOMCU-CC254x開發(fā)板快速入門.pdf 》 筆記
阿莫淘寶店: https://amomcu.taobao.com/

什么是協(xié)議棧

  • 協(xié)議:定義的是一系列的通信標(biāo)準(zhǔn)蚣录,通信雙方需要共同按照這一標(biāo)準(zhǔn)進(jìn)行正常的數(shù)據(jù)收發(fā)馒索;
  • 協(xié)議棧:是協(xié)議的具體實現(xiàn)形式缸托,通俗的理解就是用代碼實現(xiàn)的函數(shù)庫俗扇,以便于開發(fā)人員調(diào)用驶社。

使用BLE 協(xié)議棧進(jìn)行開發(fā)的基本思路可以概括為如下三點:

  • 用戶對于BLE 無線網(wǎng)絡(luò)的開發(fā)就簡化為應(yīng)用層的C 語言程序開發(fā),用戶不需要深入研究復(fù)雜的BLE 協(xié)議棧炸站;
  • Bluetooth-LE 低功耗藍(lán)牙中數(shù)據(jù)采集,只需要用戶在應(yīng)用層加入傳感器的讀取函數(shù)即可疚顷。
  • 如果考慮到節(jié)能旱易,可以根據(jù)數(shù)據(jù)采集周期進(jìn)行定時,定時時間到就喚醒BLE腿堤。
image.png

注意;所有的協(xié)議棧demo都要放到Projects/BLE 這個目錄下編譯運行

術(shù)語

1. profile

  • 通信協(xié)議
  • 位于從機(jī)中
    藍(lán)牙組織規(guī)定了一系列的標(biāo)準(zhǔn)Profile阀坏,例如HID OVER GATT、防丟器笆檀、心率計等
    每個Profile中會包含多個Service

2. service

  • 服務(wù)/從機(jī)的能力:電量信息服務(wù)忌堂,系統(tǒng)信息服務(wù)
  • 每個Service 里又包含多個Characteristic 特征值。

3. characteristic

  • 特征值
  • 可以理解為一個標(biāo)簽酗洒,通過這個標(biāo)簽可以獲取或者寫入想要的內(nèi)容士修。
  • BLE 主從機(jī)的通信均是通過Characteristic 來實現(xiàn)

4. UUID

  • 統(tǒng)一識別碼
  • Service 和Characteristic,都需要一個唯一的UUID來標(biāo)識樱衷。

主從機(jī)互相發(fā)送數(shù)據(jù) 資料4.3節(jié)

主-》從:GATT_WriteCharValue 函數(shù)
從-》主:GATT_Notification 函數(shù)
紙尿褲中的例子如下:

紙尿褲的例子

從機(jī)接收數(shù)據(jù)

  • 從機(jī)收到主機(jī)發(fā)來的數(shù)據(jù)后棋嘲,會產(chǎn)生一個GATT Profile Callback 調(diào)用,
  • 我們在這個callback 中接收主機(jī)發(fā)送的數(shù)據(jù)
  • 這個callback 在從機(jī)初始化時向Profile 注冊矩桂。
    下面的例子同樣來自紙尿褲/藥盒:


    image.png
image.png

該回調(diào)函數(shù)的一個例子:

*********************************************************************
 * @fn      simpleProfileChangeCB
 *
 * @brief   Callback from SimpleBLEProfile indicating a value change
 *
 * @param   paramID - parameter ID of the value that was changed.
 *
 * @return  none
 */
static void simpleProfileChangeCB( uint8 paramID )
{
  uint8 newValue;
  uint8 newChar6Value[SIMPLEPROFILE_CHAR6_LEN];
  uint8 returnBytes;
  
  switch( paramID )
  {
    case SIMPLEPROFILE_CHAR1: 
/**
判斷是否是寫特征值Characteristic 1沸移,如果是,將characteristic1 的value 復(fù)制到newValue 中耍鬓,然后可以通過lcd 輸出顯示。
*/
      SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR1, &newValue, &returnBytes );

      #if (defined HAL_LCD) && (HAL_LCD == TRUE)
        HalLcdWriteStringValue( "Char 1:", (uint16)(newValue), 10,  HAL_LCD_LINE_3 );
      #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)

      break;

    case SIMPLEPROFILE_CHAR3:
      SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR3, &newValue, &returnBytes );

      #if (defined HAL_LCD) && (HAL_LCD == TRUE)
        HalLcdWriteStringValue( "Char 3:", (uint16)(newValue), 10,  HAL_LCD_LINE_3 );
      #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)

      break;
    
    case SIMPLEPROFILE_CHAR6:
      SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR6, newChar6Value, &returnBytes );
      if(returnBytes > 0)
      {
        if(simpleBLE_CheckIfUse_Uart2Uart())     //使用透傳模式時才透傳
        {
            NPI_WriteTransport(newChar6Value,returnBytes);
            
            // 這里可以處理一下數(shù)據(jù)流妻,比如發(fā)命令點燈
            // MT 命令處理 函數(shù)
            simpleBLE_MT_CMD_Handle(newChar6Value,returnBytes);
          }
      }
 
      break;
      
    default:
      // should not reach here!
      break;
  }
}

GATT 的Service 和 Client

  • GATT 有Service 和Client之分
  • Central 作為Client牲蜀, Peripheral 作為Service
  • 主機(jī)Central 會調(diào)用 GATT_WriteCharValue 或者GATT_ReadCharValue 來和從機(jī)通信
  • 而Peripheral 需要通過notify 的方式,也就是調(diào)用GATT_Notification 發(fā)起和主機(jī)的通信
  • 一般來說绅这,Peripheral notify 的方式涣达,速度要比直接讀寫的速度要慢。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末证薇,一起剝皮案震驚了整個濱河市度苔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浑度,老刑警劉巖寇窑,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異箩张,居然都是意外死亡甩骏,警方通過查閱死者的電腦和手機(jī)窗市,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饮笛,“玉大人咨察,你說我怎么就攤上這事「G啵” “怎么了摄狱?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長无午。 經(jīng)常有香客問我媒役,道長,這世上最難降的妖魔是什么指厌? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任刊愚,我火速辦了婚禮,結(jié)果婚禮上踩验,老公的妹妹穿的比我還像新娘鸥诽。我一直安慰自己,他們只是感情好箕憾,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布牡借。 她就那樣靜靜地躺著,像睡著了一般袭异。 火紅的嫁衣襯著肌膚如雪钠龙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天御铃,我揣著相機(jī)與錄音碴里,去河邊找鬼。 笑死上真,一個胖子當(dāng)著我的面吹牛咬腋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播睡互,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼根竿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了就珠?” 一聲冷哼從身側(cè)響起寇壳,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妻怎,沒想到半個月后壳炎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡逼侦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年冕广,在試婚紗的時候發(fā)現(xiàn)自己被綠了疏日。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡撒汉,死狀恐怖沟优,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情睬辐,我是刑警寧澤挠阁,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站溯饵,受9級特大地震影響侵俗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丰刊,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一隘谣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啄巧,春花似錦寻歧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至澄耍,卻和暖如春噪珊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背齐莲。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工痢站, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人选酗。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓阵难,卻偏偏與公主長得像,于是被迫代替她去往敵國和親星掰。 傳聞我的和親對象是個殘疾皇子多望,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一嫩舟、BLE協(xié)議棧架構(gòu) BLE 協(xié)議棧(簡稱“協(xié)議”)由兩部分組成: 和 氢烘。控制器與主機(jī)分離的形式來自標(biāo)準(zhǔn)的藍(lán)牙 B...
    Leung_ManWah閱讀 2,610評論 0 3
  • 藍(lán)牙 藍(lán)牙的波段為2400-2483.5MHz(包括防護(hù)頻帶)家厌。這是全球范圍內(nèi)無需取得執(zhí)照(但定不是無管制的)的工...
    蘇永茂閱讀 6,157評論 0 11
  • 一播玖、概述 1、BLE藍(lán)牙協(xié)議棧結(jié)構(gòu) 協(xié)議棧分為兩部分:控制器和主機(jī)饭于。對于4.0以前的藍(lán)牙蜀踏,這兩部分是分開的维蒙。所有p...
    張志中閱讀 1,385評論 0 2
  • 這次介紹一下藍(lán)牙協(xié)議棧(BLE)的基礎(chǔ)知識颅痊,藍(lán)牙協(xié)議棧組成如下圖所示,首先我們說說GAP和GATT 1. G...
    一智半解閱讀 7,399評論 0 3
  • 背景 藍(lán)牙歷史說到藍(lán)牙局待,就不得不說下藍(lán)牙技術(shù)聯(lián)盟(Bluetooth SIG),它負(fù)責(zé)藍(lán)牙規(guī)范制定和推廣的國際組織...
    徐正峰閱讀 12,348評論 6 33