。
一、簡介
本篇以******bleperipheral工程為例,介紹實現連線時廣播的方法。
二、實驗平台
協議棧版本:ble-cc254x-1.4.0
編譯軟體:iar 8.20.2
硬體平台:smart rf開發板
博主:甜甜的大香瓜
****:[email protected]
技術交流qq群:127442605
四、連線時廣播有什麼用?
用途一:廣播出連線狀態
主機1連上從機後,從機可通過改變廣播資料,來告知主機2「本從機已經被連線」。
用途二:手機修改廣播內容
主機1連上從機後,主機1給從機傳送廣播資料,從機再把廣播資料廣播出去。(需要配對加密,否則大家都可連線)
五、修改步驟
1、修改iar設定中的巨集
將xplus_broadcaster改為plus_broadcaster。
注:只修改這一句,手機連線時cc2541就仍能廣播。但是手機斷開後會出現兩個問題:
1)cc2541的顯示屏會顯示「disconnected」。
2)cc2541的廣播停了。
2、解決上面兩個問題
修改peripheralstatenotificationcb函式的gaprole_waiting**(******bleperipheral.c中)
所以在這裡從機超時後不進行當前廣播狀態的判斷,直接緊接著開廣播。
注:此時又出現了新的問題,也就是只有手機連線cc2541第一次時能「連線時廣播」,第二次連線就沒有廣播資料了。
3、解決上述的「只在第一次連線時能廣播」問題
修改peripheralstatenotificationcb函式的gaprole_connected**(******bleperipheral.c中)
預設是只會在第一次連線時預設開廣播,把紅框中的語句注釋掉以後每次連線時都能自動開廣播。
六、實驗現象注:用packet sniffer抓包。
1、cc2541上電廣播時:廣播包的間隔約為103127us(100ms),lcd顯示「adverting」。
2、手機連線cc2541時:有時候packet sniffer會看不到連線中的廣播包,需要packet sniffer軟體「停止-開始」地重開一下。此時廣播包間隔約為1290036us(1.2s),lcd顯示「connected adverting」,手機仍可正常與cc2541通訊資料。
3、手機斷開cc2541時:cc2541重新開始廣播,間隔約為105628us(100ms),lcd顯示「aderting」。
所以,實現了連線時廣播。
cc2541 低功耗廣播
設定2541 廣播有幾個引數 gap setparamvalue tgap lim adv timeout,5 廣播持續時間 5s what is the advertising interval when device is discoverable units of 625us,160 100m...
CC2541 關閉串列埠問題
在除錯低功耗時,最好關閉串列埠,需要修改巨集 hal uart false hal uart dma 1 hal uart isr 0 hal uart tx by isr 1 但是修改完之後會編譯錯誤,提示 undefine external print msg 原因是這個函式在 hal uart...
CC2541之資料加密與解密
一 簡介 本篇以 bleperipheral工程為例,介紹如何使用協議棧的資料加密與解密功能。二 實驗平台 協議棧版本 ble cc254x 1.4.0 編譯軟體 iar 8.20.2 硬體平台 smart rf開發板 博主 甜甜的大香瓜 897503845 qq.com 技術交流qq群 12744...