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