• 資料介紹
    • 簡介
    • 快速實踐
    • 小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1321 基于BlueNRG SDK 修改ATT_MTU

03/22 14:12
323
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1321 基于BlueNRG SDK 修改ATT_MTU

960.23 KB

簡介

使用 BLE GATT 進(jìn)行數(shù)據(jù)發(fā)送、接收時,ATT_MTU 這個參數(shù)值決定了用戶一次可以發(fā)送、接收的數(shù)據(jù)包的長度。通訊的雙方在連接成功后會發(fā)起 ATT_MTU 協(xié)商流程。流程結(jié)束后,ATT_MTU 的大小由雙方的較小值決定。

當(dāng) ATT_MTU 是一個較大的值、無法使用一個鏈路層數(shù)據(jù)包承載時,協(xié)議棧便會對其進(jìn)行拆包發(fā)送處理。在實際應(yīng)用中,由于通訊設(shè)備內(nèi)存資源、時間資源的限制,ATT_MTU 的值會受到一定的限制,無法任意修改。

對于 BlueNRG-LP 來說,協(xié)議棧需要為較大的 ATT_MTU 預(yù)留足夠的 RAM 空間以緩存應(yīng)用層的數(shù)據(jù)包,因此,ATT_MTU 的最大值被限定為 1024 字節(jié)左右(BLE_STACK_MAX_ATT_MTU)。而對于手機來說,較大的 ATT_MTU 可能會造成線程阻塞時間過長,因此也會對其最大值做一定的限制(未找到具體的規(guī)范文件)。

本文指導(dǎo)用戶如何在 BlueNRG SDK 上修改 ATT_MTU,以及如何考慮、評估修改ATT_MTU 后可能帶來的影響。

快速實踐

本章節(jié)快速進(jìn)行一次修改 ATT_MTU 的實驗,并對實驗過程中遇到的問題做初步的講解。

小結(jié)

BlueNRG SDK 需要在編譯階段確定其需要的 RAM 空間。用戶改動 ATT_MTU 后,協(xié)議棧占用的 RAM 空間也將隨之改變。因此,在 RAM 空間足夠的情況下,我們可以給定ATT_MTU 一個較大值,這個值由以下宏確定:

#define MAX_ATT_MTU_CONF在和手機連接的大多數(shù)情況下,用戶只需要改變以上宏,即可成功修改 BLE 外設(shè)端的ATT_MTU。若不成功,則可從以下幾個方面進(jìn)行逐一排查:

  1. 定義并實現(xiàn)以下接口,以便查看最終的 ATT_MTU 值:void aci_att_exchange_mtu_resp_event
  1. 若無以上接口的回調(diào),則在連接成功后使用以下接口發(fā)起 ATT_MTU 交換流程:aci_gatt_clt_exchange_config
  1. 若 ATT_MTU 無法達(dá)到預(yù)期的、一個較大的值,比如 200,則使能 DLE 特性以擴展單個 LL 包的承載能力。可通過配置以下宏使能 DLE 特性:# define CONTROLLER_DATA_LENGTH_EXTENSION_ENABLED

資料預(yù)覽

相關(guān)推薦