本篇文章詳細講述此SDK中的B85m_ble_remote例程的使用及注意事項,以便客戶盡快熟悉起來,加快項目開發進度。
1ble_remote例程說明
單連接SDK中B85m_ble_remote適用825x芯片和827x芯片,所以編譯選項中又分為了825x_ble_remote和827x_ble_remote(下文統稱ble_remote)。
ble_remote例程是較復雜的從機例程,是藍牙語音遙控器的源碼例程。
該例程主要功能:藍牙連接并枚舉為HID設備,矩陣按鍵掃描,語音采集并BLE傳輸,IR功能,電池電量檢測,低功耗,OTA升級等。
2開發板選擇
基于TLSR825x和TLSR827x芯片的遙控器的相關資源(軟件SDK,硬件參考設計等)。
基于TLSR825x和TLSR827x的語音遙控器Audio RCU如下圖所示:
3使用演示
Audio RCU有兩種使用方式,一種是直接跟智能電視進行藍牙連接,并控制電視。另一種是配合kma master dongle一起使用(在kma master dongle的文章中進行演示說明)。下面主要講述第一種使用方式,并用手機替代智能電視。
-
編譯ble_remote例程,并把生成的固件download到Audio RCU板中,重新上電或者reset一次。
-
在手機-->設置-->藍牙 頁面,掃描到“VHID”,點擊連接并選擇配對。藍牙連接后,手機上會顯示“VRemote”的名稱。
-
點擊Audio RCU上的按鍵,手機上會有相應的顯示。比如按“音量+”,手機界面會彈出音量增加的提示。
注意1:ble_sample例程是HID設備,不需要在手機app中使用。如果使用手機app連接,是看不到上面的按鍵的效果。
注意2:RCU上的部分按鍵,手機不一定支持。因為RCU是藍牙語音遙控器,可以藍牙連接智能電視,機頂盒等設備,當作遙控器使用。手機和智能電視上對一些按鍵的解析不同導致的。
4主要功能
在ble_remote的app_config.h文件中,有主要功能的宏定義開關。
1、低功耗
默認使能了低功耗功能,宏定義為:
#define BLE_REMOTE_PM_ENABLE 1
#definePM_DEEPSLEEP_RETENTION_ENABLE 1
另外,針對遙控器閑置的情況做功耗優化,廣播超過60s會自動進入深睡眠(deepsleep模式)而停止廣播。建立連接,60s內無按鍵事件,會斷開連接并進入deepsleep模式。代碼如下圖所示,在blt_pm_proc()中代碼如下圖所示。
注意:當藍牙處于連接狀態時,必須先主動斷開連接并收到對方的ack后,再進入低功耗模式。
2、按鍵掃描
遙控器有較多的按鍵,Telink提供了行列式掃描按鍵的代碼,此部分請用戶根據handbook的“按鍵掃描”章節以及例程代碼來理解,本文不再贅述。
3、語音采集和語音傳輸
語音采集支持16K和32K的采樣率,語音傳輸是使用BLE的方式來傳輸壓縮的語音。實現原理和機制請用戶參考handbook的“Audio”章節,本文不再贅述。宏定義開關為:
#define BLE_AUDIO_ENABLE 1
另外例程支持多種語音流的壓縮格式,可使用宏定義選擇:
#define TL_AUDIO_MODE TL_AUDIO_RCU_ADPCM_GATT_TLEINK
4、低電量檢測
使用ADC采集電池電量,是較為常用的應用場景。該例程有提供了代碼實現,原理和使用的說明,請用戶參考handbook的“低電檢測”章節。宏定義開關為:
#define BATT_CHECK_ENABLE 1
5、紅外遙控
該例程也支持紅外遙控器的功能,實現原理和機制請用戶參考handbook的“IR”章節。默認沒有使能,宏定義的開關為:
#define REMOTE_IR_ENABLE 0
6、OTA升級
默認支持OTA升級,OTA升級的原理和機制,請用戶參考handbook的“OTA”章節。宏定義開關為:
#define BLE_REMOTE_OTA_ENABLE 1
7、固件檢查
firmware check有兩種,一種是通過CRC32校驗的方式來確認firmware是否完整。在firmware的末尾有CRC32校驗值,在初始化的時候從flash中讀取frimware固件計算CRC32并比較。如不一致,則認為firmware損壞。詳情請參考handbook的“14.4 Firmware完整性自檢”章節的說明。
宏定義開關為:
#define FIRMWARE_CHECK_ENABLE 0
另一種是,基于UID的firmware check,實現機制是:在量產時,量產工具獲取芯片端的16字節的uid明文加密得到一段密文,并燒錄到flash的固定地址。在程序代碼中,初始化時也會根據芯片本身的uid進行加密得到密文,并跟flash中燒錄的密文對比,一致則認為ok繼續運行,否則停止運行。詳情請參考handbook的“14.3 Firmware數字簽名”章節的說明。
宏定義開關為:
#define FIRMWARES_SIGNATURE_ENABLE 0
注意,打開FIRMWARES_SIGNATURE_ENABLE宏定義后,編譯會報錯,提示firmware_encrypt_based_on_uid未定義,如下圖所示:
解決方法:在proj_lib文件夾中有“libfirmware_encrypt.a”庫文件,但是工程沒有包含該庫文件。具體操作為:點擊project --> Properties-->C/C++ Build-->Setting-->Tool Setting的Libraries頁面,點擊“+”,在窗口輸入“firmware_encrypt”,并點擊OK。
注意:添加庫文件包含的名稱不要寫錯了,庫文件名稱“libfirmware_encrypt.a”需要去頭去尾(即把lib和.a去掉)。
添加完成的效果如下圖,clean后再rebuild即可編譯成功。
-
藍牙芯片
+關注
關注
17文章
376瀏覽量
46047 -
BlueTooth
+關注
關注
3文章
213瀏覽量
61600 -
Remote
+關注
關注
0文章
11瀏覽量
9127 -
SDK
+關注
關注
3文章
1036瀏覽量
45951
原文標題:【技術專欄】泰凌微電子BLE單連接SDK(三):B85m_ble_remote例程使用演示
文章出處:【微信號:telink-semi,微信公眾號:泰凌微電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論