在泰凌Wiki網站上提供了多種應用場景的軟件sdk,供客戶選擇使用。本系列的幾篇文章主要講述"Bluetooth LE Single Connection",此SDK是單連接應用的SDK,所謂的單連接就是藍牙芯片做從機跟主機(一般是手機)建立點對點連接,或者藍牙芯片做主機跟其他的從機建立點對點連接的應用場景。
本篇文章詳細講述此SDK中的B85m_module例程的使用及注意事項,以便客戶盡快的熟悉起來,加快項目開發(fā)進度。
1module例程說明
單連接sdk中B85m_module是使用825x芯片和827x芯片,所以編譯選項中又分為了825x_module和827x_module。module例程提供了基于BLE的數據透傳功能,使得用戶不必關心BLE復雜的實現細節(jié),只需要處理傳輸業(yè)務數據即可。數據透傳的指令是泰凌自己實現的一套指令集,如果用戶更習慣使用AT指令,可以將例程中的指令做替換即可。
2module例程編譯問題及解決方法
如果開發(fā)者直接編譯825x_module或者827x_module(下文統稱B85m_module),會出現下文的編譯錯誤。
原因是B85m_module例程實現較復雜,需要使用32K retention的配置來編譯,而sdk默認是選擇的16K retention的配置。
解決方法:修改retention的配置可以參考Handbook的1.3章節(jié)的Software bootloader介紹,使用32K的boot.link文件和cstartup_*_32K.S啟動文件。
3硬件連接圖
說明:下文以8258芯片為例,來描述B85m_module例程的使用。
在8258開發(fā)板上燒錄編譯成功的825x_module.bin固件,代碼中默認的UART tx是PB1, uart rx是PB0。然后根據硬件連接圖搭建好環(huán)境。
*注意:芯片的uart tx接串口工具的uart rx,芯片的uart rx接串口的工具uart tx,不要接錯了。
PC端打開串口工具軟件,波特率設置為115200,data bit為8,無校驗,stop位為1。
手機端的app使用LightBlue軟件,然后掃描到"kModule"的藍牙設備,然后建立連接。
如果連接時,彈出配對請求,則選擇配對。是因為默認使能了smp配對功能。如果不需要這個功能,則把app_config.h文件的 BLE_SECURITY_ENABLE宏定義設置為0,再clean后重新編譯生成固件。
4數據透傳
當手機app和B85m_module建立藍牙連接之后,可以看到module例程的Telink SPP透傳服務,根據描述符的提示,分成數據接收和數據發(fā)送兩個方向:
4.1數據接收
數據接收(Phone->Module)即手機app發(fā)送數據給藍牙芯片,然后藍牙芯片通過uart打印出來,最后在PC端的串口工具軟件上顯示。
1、藍牙event事件輸出
當在nrf connect軟件上點擊連接或者斷開時,串口工具上會顯示出藍牙連接事件(hex數據 FF 02 83 07)和藍牙斷開事件(hex數據 FF 02 84 07),如下圖所示。
*備注:FF 02 8D 07是map channel更換的event事件。
2、手機發(fā)送hex數據 00 11 22 33 44 55 66
在LightBlue軟件上,數據透傳使用的服務,UUID是0x000102030405060708090a0b0c0d2b11(注意跟代碼中的UUID是反序的),點擊紅色方框處輸入發(fā)送的數據。
如下圖所示,PC端的串口工具軟件已經顯示了接收到的數據。注意接收到的數據有格式,前7bytes是數據的header。
4.2數據發(fā)送
數據發(fā)送(Module -> Phone)即PC端串口工具軟件發(fā)送數據給藍牙芯片,然后藍牙芯片通過BLE發(fā)送給手機,最后在LightBlue軟件上顯示。
(1)手機app端使能notify權限
藍牙芯片上報數據給手機app,是使用notify方式,手機端必須先使能notify權限,手機端才會監(jiān)聽到藍牙芯片上報的數據,否則手機app不會接收的。
在LightBlue軟件上點擊Listen,當軟件界面顯示Stop Listening時,表示正在listening,已經使能了notify權限。
(2)藍牙芯片端使能喚醒腳
在B85m_module程序中,默認使能了低功耗,也就是藍牙芯片會自動進入低功耗模式,并定時喚醒保持藍牙連接的心跳,因此大部分時間是處于低功耗模式。在低功耗模式下,芯片的UART是無法接收數據的,必須先使用GPIO喚醒芯片,讓芯片處于active模式,uart才能接收數據。
代碼中默認設置為PA2為高電平喚醒腳。手動把芯片的PA2 pin拉高,接到3.3V上。就可以把藍牙芯片喚醒并禁止進入低功耗。在app_config.h文件中對應的宏定義:
#define GPIO_WAKEUP_MODULE GPIO_PA2
(3)數據發(fā)送
在串口工具中,輸入hex數據:1c ff 16 00 11 00 01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06 07 08 09 00,然后點擊send發(fā)送。
數據輸入的格式說明,都是hex格式的數據:
1C FF:表示data send命令
16 00:表示數據長度,handle值(2bytes)+ data Length(20bytes)
11 00:數據發(fā)送使用的handle值為0x0011,小端字節(jié)序原因。
01 02 …00:實際需要發(fā)送的數據。
注意數據發(fā)送的長度在20字節(jié)以內,如果要發(fā)送更長的數據,可以查看Handbook中的MTU和DLE功能,使能長包后再發(fā)送長包數據。
在手機LightBlue軟件上,可以看到收到的數據,如下圖所示。
關 于 泰 凌
泰凌微電子致力于為客戶提供一站式的低功耗高性能無線連接SoC芯片解決方案,包括經典藍牙,藍牙低功耗,藍牙Mesh,Zigbee,Thread,Matter,Apple HomeKit,Apple“查找(Find My)”,和私有協議等低功耗2.4GHz多協議無線連接系統級芯片和豐富的固件協議棧。公司產品廣泛應用于智能照明,智能家居/樓宇,智能遙控,無線外設,智能零售,穿戴設備,無線音頻,智能玩具,物流追蹤,智慧城市等各類消費和商業(yè)應用場景中。
審核編輯:湯梓紅
-
藍牙芯片
+關注
關注
17文章
376瀏覽量
46047 -
Module
+關注
關注
0文章
68瀏覽量
12855 -
SDK
+關注
關注
3文章
1036瀏覽量
45951 -
泰凌
+關注
關注
0文章
7瀏覽量
4271
原文標題:【技術專欄】泰凌微電子BLE單連接SDK B85m_module例程使用演示
文章出處:【微信號:telink-semi,微信公眾號:泰凌微電子】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論