HOGP概述
HOGP(HID over GATT)是由Bluetooth SIG維護(hù)的藍(lán)牙配置文件規(guī)范,通過低功耗藍(lán)牙實現(xiàn)HID的配置文件并作為與計算器之間的接口,消除HID中對電線或物理連接的需求。
HID角色
在HID中,以及在HOGP的延伸中,定義了兩個角色,這些角色是HID主機(jī)和HID設(shè)備。HID設(shè)備一次只能主動連接到單個HID主機(jī);然而一個HID主機(jī)可以連接到多個HID設(shè)備。有關(guān)主機(jī)和設(shè)備如何交互的細(xì)節(jié),請參閱HOGP規(guī)范中的第3章HID設(shè)備需求和第4章HID主機(jī)需求和行為。
一、HID主機(jī)
HID主機(jī)實現(xiàn)藍(lán)牙GAP中的中心(Central)角色,接收輸入訊息并使用提供的數(shù)據(jù)進(jìn)行更進(jìn)一步的處理。例如,計算器會是HID主機(jī),因為這是接收HID數(shù)據(jù)的設(shè)備。HID主機(jī)對HID功能的正確執(zhí)行有許多責(zé)任與需求,但在此開發(fā)指南中所提供的范例僅實現(xiàn)了HID設(shè)備,因此本文檔不涉及這些內(nèi)容。想要了解HID主機(jī)的職責(zé)和需求,請參閱HOGP規(guī)范中的第2章配置、第4章HID主機(jī)需求和行為、第5章連線建立。
二、HID設(shè)備HID設(shè)備實現(xiàn)藍(lán)牙GAP中的外設(shè)(Peripheral)角色,負(fù)責(zé)將輸入信息傳輸?shù)街醒胗嬎闫鳌@纾髽?biāo)或鍵盤會是HID設(shè)備,因為它們將輸入數(shù)據(jù)發(fā)送到計算器設(shè)備。
Bluetooth Profile
要透過藍(lán)牙實現(xiàn)HID功能,那就必須要事先定義好規(guī)范,如此主機(jī)及裝置雙方才能夠順利通信,由于本開發(fā)指南是針對裝置的部份進(jìn)行說明,故此處只列出裝置所需的服務(wù)。
表1. HID裝置的必須服務(wù)
這邊要注意到Device Information Service中的PnP特征,如果是開發(fā)一個標(biāo)準(zhǔn)的鍵盤或鼠標(biāo),請根據(jù)已經(jīng)注冊的Vendor ID及Product ID填入其中。
例 HID裝置實做
HOGP 工程是一個在 AT32WB415 上實現(xiàn) HOGP 規(guī)范的低功耗藍(lán)牙工程,該工程使用 HOGP 規(guī)范指定的藍(lán)牙外設(shè)角色,演示了 HOGP 的鍵盤及鼠標(biāo)。通過使用通知(Notification)和 GATT 配置文件,該項目能夠通過低功耗藍(lán)牙 HID 裝置并與 HID 主機(jī)正確連接。HOGP 工程中有幾個復(fù)雜的部份,在本文檔中進(jìn)行了討論,這些部份組合在一起以實現(xiàn)整體功能。
報告映射討論
HOGP工程依賴于報告映像,報告映射是HOGP用于實現(xiàn)低功耗藍(lán)牙HID功能的結(jié)構(gòu)。報告映像用于告訴主機(jī)許要從HID設(shè)備獲得什么功能和什么樣的數(shù)據(jù),在原始的HID USB規(guī)范中,報告映射稱為報告描述符,報告映射和報告描述符是相同的,它們之間唯一的區(qū)別是報告映射用于HOGP,報告描述符用于HID USB。該工程使用的報告映像可以在app_hid.c文件中找到,并且包含在gHIDReportDescriptor變量中,此工程中的報告映像包含鍵盤的輸入信息。該結(jié)構(gòu)分為多個部份,應(yīng)用程序以及HID主機(jī)能夠通過使用報告ID字段找到所需的部份。可以輕松修改報告映像以包含不同的輸入或修改已經(jīng)存在的輸入,USB實現(xiàn)者論壇的設(shè)備工作組有一個報告描述符建構(gòu)器工具,可以用于輕松創(chuàng)建報告映射。下面的程序代碼顯示了報告映像結(jié)構(gòu)片段,所有字段都有標(biāo)簽,可以輕松修改。例如,如果需要不同數(shù)量的鍵盤按鍵,則可以輕松修改相關(guān)字段。
- HID Report
修改裝置類型
只有當(dāng)開發(fā)者正確地填入裝置類型參數(shù),主機(jī)端才能顯示出合適的裝置圖標(biāo),即便在廣播的時候能夠正確辨識出裝置的類型,但如果沒有修改GAP中的Appearance數(shù)值,聯(lián)機(jī)后的裝置圖標(biāo)依然會顯示異常,以下特別列出在開發(fā)時容易疏忽的地方:1. 廣播時的Appearance,主機(jī)掃描到時就會將裝置類型顯示出來,比如說鍵盤或是鼠標(biāo),在代碼中位于user_config.h里面的宏定義APP_HID_ADV_DATA_APPEARANCE, 0x03C2代表鼠標(biāo), 0x03C1代表鍵盤,更詳細(xì)的內(nèi)容可以參考SIG的Spec.圖1. Appearance Part of ADV Data2.?聯(lián)機(jī)建立后,主機(jī)會來讀取裝置的GAP, 這個時候就會得到這個裝置是屬于哪一種類型,如果沒有正確填寫,在主機(jī)端的驅(qū)動安裝完成后,顯示的裝置類型會與預(yù)期的不同。這個部份的代碼位于app_task.c中的gapc_get_dev_info_req_ind_handler函式,代碼中已將鍵盤及鼠標(biāo)的Appearance給定義起來,使用者可以依據(jù)需求擴(kuò)充。圖2. GAP Client Gets Device Apperance
3.?在新增HID Profile時,填入當(dāng)前的應(yīng)用類型,這位于app_hid.c中的app_hid_add_hids函式,使用者可以根據(jù)當(dāng)前需求填入鍵盤或是鼠標(biāo)的宏定義,但要記得一定要有Protocol Mode才能正常使用。圖3. GAP Client Gets Device Apperance
資源類型
1) 硬件環(huán)境:對應(yīng)產(chǎn)品型號的AT-START BOARD2) 軟件環(huán)境wb415_hogp_bt_demo\projects\ble_app_remotewb415_hogp_mcu_demo\utilities\wb415_hogp_mcu_demo\mdk_v5
軟件設(shè)計
1) 配置流程a) MCU端
- 配置USER KEY作為擊鍵
- 編寫USART3通訊函數(shù)
- 輪詢USER KEY是否按下
- 根據(jù)需求去配置USER KEY按下后發(fā)出的AT command
b) BT端
- 將HOGP的Profile加入database
- 編寫應(yīng)用層與GATT之間的界面
- 在應(yīng)用層中輪詢AT command
- 透過HOGP將不同的key function發(fā)給host端
2) 代碼介紹a)MCU端
- main函數(shù)代碼描述
b)?BT端
原則上不需要去修改Profile層的內(nèi)容,由APP層去設(shè)定HID裝置的內(nèi)容即可
- 初始化HOGP裝置變量
- 將HOGP加入database
在main函數(shù)之中的while loop不斷輪詢app_user_entry()來確認(rèn)有無收到AT command,如果收到有收到AT command則執(zhí)行該命令的內(nèi)容。
- 解析AT command并執(zhí)行對應(yīng)的程序
實驗效果
- 按下AT-START板上的USER KEY發(fā)送www back按鍵,則瀏覽器頁面返回上一頁
- 按下AT-START板上的USER KEY發(fā)送volume up按鍵,則音量提高(需要修改ATcommand)
- 按下AT-START板上的USER KEY發(fā)送volume down按鍵,則音量降低(需要修改AT command)
按鍵定義
本應(yīng)用指南以多媒體按鍵為例,在代碼中定義了多媒體按鍵值的數(shù)組,用戶可以在app_key.c中找到以下代碼:
- 多媒體按鍵值定義
在app.c中的app_user_entry函數(shù),每當(dāng)添加一個新的按鍵實例,必須透過app_hid_send_report這個函數(shù),將按鍵值及長度發(fā)送給主機(jī)端,主機(jī)才能根據(jù)按鍵值做出對應(yīng)的行為;舉例來說,要發(fā)出降低音量的按鍵功能,從上面的注釋可以看到volume down對應(yīng)到第九列,是整個數(shù)組的第18個數(shù),因此調(diào)用發(fā)送函數(shù)時寫成app_hid_send_report(&key_copy[18], 2),其他按鍵也是如此使用。
HOGP相關(guān)AT command
本應(yīng)用指南中,已經(jīng)建立部分的AT command,如下表:表2. HOGP相關(guān)AT command
用戶自行添加AT command時,需要在MCU端及BT端同時增加對應(yīng)的實例;MCU端要在at_cmd.h中新增AT command的請求及期待的響應(yīng);BT端要在app.h中新增要解析的AT command字符串、command的枚舉以及回復(fù)的枚舉,數(shù)量上如果對不上的話則發(fā)出的按鍵功能可能會不正常。另外鼠目標(biāo)AT command及位移都是填入Dummy Data, 使用者如果要反應(yīng)真實的位移及實作按鍵、滾輪等功能,需要自己由傳感器讀取數(shù)據(jù),并修改鼠標(biāo)的AT command讓它可以攜帶真實參數(shù),接收AT command的部份也要實做解析函數(shù)去取出AT command中的參數(shù)內(nèi)容,并填入Notification之中。關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創(chuàng)新趨勢的芯片設(shè)計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進(jìn)工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運算效能,并支持工業(yè)級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機(jī)、掃地機(jī)、光流無人機(jī)、熱成像儀、激光雷達(dá)、工業(yè)縫紉機(jī)、伺服驅(qū)控、電競周邊市場、斷路器、ADAS、T-BOX、數(shù)字電源、電動工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費、商務(wù)及工控等領(lǐng)域。
-
mcu
+關(guān)注
關(guān)注
146文章
17945瀏覽量
363627 -
雅特力
+關(guān)注
關(guān)注
0文章
179瀏覽量
8548 -
AT32
+關(guān)注
關(guān)注
1文章
121瀏覽量
2681
發(fā)布評論請先 登錄
AT32 HOGP開發(fā)指南
AT32 MCU QSPI應(yīng)用說明
AT32 HOGP開發(fā)指南
雅特力攜高效能AT32 MCU“芯”動亮相ICCAD 2020
雅特力攜高性能AT32 MCU精彩亮相全球MCU生態(tài)發(fā)展大會

雅特力攜高性能AT32 MCU精彩亮相D Forum 2021 微控制器論壇

雅特力攜高性能AT32 MCU精彩亮相全球MCU生態(tài)發(fā)展大會

雅特力展臺首日速遞,AT32 MCU精彩亮相

雅特力AT32 MCU實現(xiàn)高效電機(jī)驅(qū)動控制與應(yīng)用

雅特力AT32 MCU與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍

評論