1. 程式人生 > >【BLE】CC2541之發現服務與特徵值

【BLE】CC2541之發現服務與特徵值

本篇博文最後修改時間:2017年01月06日,11:06。

一、簡介

本文以SimpleBLECentral工程為例,解析CC2541作為主機時是如何發現從機的服務和特徵值的。


二、實驗平臺

協議棧版本:BLE-CC254x-1.4.0

編譯軟體:IAR 8.20.2

硬體平臺:Smart RF(主晶片CC2541)

博主:甜甜的大香瓜

宣告:喝水不忘挖井人,轉載請註明出處。

原文地址:http://blog.csdn.NET/feilusia

聯絡方式:[email protected]

香瓜BLE之CC2541群:127442605

香瓜BLE之CC2640群:557278427

香瓜BLE之Android群:541462902

香瓜微控制器之STM8/STM32群:164311667
甜甜的大香瓜的小店(淘寶店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i 四、實驗前提 1、在進行本文步驟前,請先閱讀以下博文: 暫無 2、在進行本文步驟前,請先實現以下博文:
暫無

五、基礎知識

1、服務和特徵值是什麼?

答:

一個工程可以有多個服務,比如按鍵服務、心率計服務、溫度計服務。

一個服務可以有多個特徵值,特徵值是主從機傳輸資料的媒介,像運人渡河的小船。

如果主機要想獲得按鍵服務的特徵值,必須先發現按鍵服務、再獲得按鍵服務的特徵值控制代碼、再根據特徵值控制代碼獲取特徵值。

六、程式碼解析

1、啟動發現服務事件

在連線完成時,主機會判斷是否之前獲取過特徵值控制代碼,如果沒有獲取到,則呼叫定時器進“START_DISCOVERY_EVT事件”開始發現服務。

2、發現服務事件

3、發現服務的函式

預設發現的是UUID為FFF0的服務。

4、發現服務的回撥函式

發現服務後,就會進入該函式。

此時可以通過特徵值的UUID來讀取對應的特徵值控制代碼。預設的是讀取CHAR1的特徵值控制代碼。

5、獲得特徵值控制代碼

讀到特徵值控制代碼後會再次進入該回調函式,此時將特徵值控制代碼儲存下來,隨口可用來操作特徵值。