• 資料介紹
    • 引言
    • BLE 連接參數(shù)及更新過程
    • 問題產(chǎn)生
    • 問題解決
    • 小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1371 關(guān)于STM32WB OTA 速率提升引發(fā)的討論

03/19 10:43
409
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1371 關(guān)于STM32WB OTA 速率提升引發(fā)的討論

478.44 KB

引言

客戶的 STM32WB 產(chǎn)品考慮功耗和 OTA 傳輸速率的平衡,在正常工作和做 OTA 升級時會使用兩套不同的 BLE 連接參數(shù)。這就涉及到 BLE 連接參數(shù)更新。客戶的問題也正是由更新 BLE 連接參數(shù)引起。連接參數(shù)的更新除了會影響 BLE 的傳輸速率,還需要考慮 OTA接收到數(shù)據(jù)后的擦寫 Flash 操作。

BLE 連接參數(shù)及更新過程

我們先簡單回顧一下影響 OTA 傳輸速率,也就是 BLE 傳輸速率的因素:

  • PHY:BLE 的 PHY 是選用 1M, 還是 2M
  • DLE: Data length extension 允許數(shù)據(jù)包大小容納更大的負載最大為 251 字節(jié),禁用時為 27 字節(jié)
  • ATT MTU ,當(dāng)開啟 DLE 時建議最大值設(shè) 247 字節(jié)
  • 連接間隔(connection interval),范圍是 7.5ms 至 4000ms
  • 連接事件(connection event),每個連接事件的最大數(shù)據(jù)包數(shù),受限于 BLE 堆棧,Android 和 IOS 設(shè)備會有差異。
  • 從機端的間隔喚醒(Slave Latency): 定義從機可以忽略主機發(fā)起的連接事件數(shù)。
  • 發(fā)送數(shù)據(jù)后是否需要 RSP,不需要的時候選用 write without RSP/notify 的方式速度更快。

客戶的應(yīng)用中其 BLE 連接參數(shù)更新其實只涉及 connection interval 和 slave latency 兩個。

問題產(chǎn)生

從上面的描述可知,客戶的程序設(shè)計是每接收到 4KB 數(shù)據(jù),就要做 BLE 連接參數(shù)的更新。頻繁的 BLE 連接參數(shù)更新會引發(fā)了一些問題。首先是連接參數(shù)更新是由從設(shè)備STM32WB 發(fā)起把更新請求發(fā)給主機,主機收到更新請求后,正常會回一個 response 給從機,告訴從機后面可以按新的連接參數(shù)進行通信。但有些主設(shè)備有可能不支持參數(shù)更新或更新參數(shù)的時機有差異。導(dǎo)致更新失敗。這就產(chǎn)生了兼容性的問題。

問題解決

為了解決 BLE 連接參數(shù)更新帶來的問題。有兩個建議,一個是可以在 OTA 更新數(shù)據(jù)之前將 Flash 區(qū)域提前擦除,后面收到 OTA 數(shù)據(jù)后直接寫 Flash。因為在 BLE 射頻 IDLE 時間內(nèi)寫 Flash 的操作不受限制,這樣就可以不用頻繁更新 BLE 連接參數(shù),完成 OTA 升級。另一個是建議對于 STM32WB BLE 協(xié)議棧,只要主機對從機更新連接參數(shù)請求有response,從機收到這個 response 后就可以再次發(fā)起連接參數(shù)更新請求,而無需等待30s。這樣也不會影響 OTA 的升級速率。

其實上面是針對使用的是 STM32Cube_FW_WB_V1.8 的協(xié)議棧版本的解決方案,它必須使用 ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_REQ 命令發(fā)送更新請求。

小結(jié)

本文分享了客戶為提升 STM32WB OTA 速率引發(fā)的關(guān)于 BLE 連接參數(shù)更新的討論。最后根據(jù)客戶需要頻繁更新連接參數(shù),給出了相應(yīng)的處理辦法。以上供大家參考。

資料預(yù)覽

相關(guān)推薦