BLE CC2541之通過廣播傳送自定義資料

2021-07-09 10:59:50 字數 2384 閱讀 8930

一、簡介

本文以******bleperipheral為例,將自定義的資料寫入廣播資料中,通過乙個週期事件定時重新整理廣播資料。

二、實驗平台

協議棧版本:ble-cc254x-1.4.0

編譯軟體:iar 8.20.2

硬體平台:smart rf(主晶元cc2541)、usb dongle

博主:甜甜的大香瓜

****:[email protected]

香瓜ble之cc2541群:127442605

香瓜ble之cc2640群:557278427

香瓜ble之android群:541462902

香瓜微控制器之stm8/stm32群:164311667

甜甜的大香瓜的小店(**店):

四、

實驗前提

1、在進行本文步驟前,請先

閱讀

以下博文:

暫無

2、在進行本文步驟前,請先

實現以下博文:

暫無

五、基礎知識暫無

六、實驗步驟

1、修改初始化廣播資料(******bleperipheral.c中)

static uint8 advertdata =

;

2、定義兩個變數(******bleperipheral.c中)

static uint8 stemperature_h = 0;                                //溫度高位

static uint8 stemperature_l = 0; //溫度低位

本篇的自定義資料是兩個溫度資料,乙個高位資料,乙個低位資料。

3、定義乙個週期事件

1)定義乙個週期事件(******bleperipheral.c的******bleperipheral_processevent中)

//週期性廣播處理事件 

if ( events & sbp_adv_periodic_process_evt )

這裡將溫度值變數累加,以便快速看到廣播資料改變的現象。

2)定義乙個週期事件的巨集(******bleperipheral.h中)

#define sbp_adv_periodic_process_evt    0x2000  //週期性廣播處理事件
3)定義乙個週期時間的巨集(******bleperipheral.c中)

static uint32 sbp_adv_periodic_process_evt_period = 1000;      //週期時間
預設是1000,也就是1s。

如果需要2s更新一次溫度資料,則改為2000。

4、啟動週期事件(******bleperipheral.c的******bleperipheral_processevent中)

if ( events & sbp_start_device_evt )

七、注意事項手機可能快取了之前的**(在更新過cc2541的**之後,都需要清除手機端的快取!!!),因此要清除快取,清除快取的方法如下:

八、實驗結果

1、當廣播的資料的溫度值為0x09時,時間為942490us。

當廣播的資料的溫度值為0x0a時,時間為1891854us。

所以,更新一次廣播資料的時間為1891854us-942490us=949364us,約為1s,協議棧的定時時間會有誤差。

因此成功地定時通過廣播傳送出了自定義的資料,實驗成功。

BLE CC2541之指令週期

一 簡介 本文介紹cc2541的指令週期,以及如何利用指令週期來計算乙個延時函式的時長。二 實驗平台 協議棧版本 ble cc254x 1.4.0 編譯軟體 iar 8.20.2 硬體平台 smart rf 主晶元cc2541 博主 甜甜的大香瓜 897503845 qq.com 香瓜ble之cc2...

BLE CC2541低功耗測試實驗 晶元驗證篇

通過檢視晶元手冊cc2541的電氣特性表,cc2541低功耗 lowpower 有三種狀態 powermode1 簡稱 pm1 powermode2 簡稱 pm2 powermode3 簡稱 pm3 描述 它們分別對應功耗的典型值 單位 a 如下表 lowpowerstate typical val...

CC2541之連線時廣播

一 簡介 本篇以 bleperipheral工程為例,介紹實現連線時廣播的方法。二 實驗平台 協議棧版本 ble cc254x 1.4.0 編譯軟體 iar 8.20.2 硬體平台 smart rf開發板 博主 甜甜的大香瓜 897503845 qq.com 技術交流qq群 127442605 四 ...