一、問題簡介
MCU通過KT6368A用SPP透傳發送1K左右的數據,手機APP顯示是3個包或者4個包,但是我看手冊說最大一個包是512,理論應該是兩個包吧,請問這正常嗎?
二、詳細說明
實際測試的截圖如下:使用的是安卓app測試軟件測試的結果

原因分析如下:
1、當您發1K的數據給KT6368A,芯片內部串口是dma的接收,收滿256個字節,就中斷
然后轉發spp到手機
2、但是此時串口還在不停的接收,下一個256滿了之后,繼續轉發給spp
邏輯就是這樣子,這就是解釋了你為什么1K發上去,分了3包或者4包的原因
3、這里還有一個細節,藍牙不是實時發送的,而是等待心跳包確認之后才發送,大概是10ms左右交互一次,如果當前收滿256之后,還沒到發送的時間,此時還會繼續串口接收存到緩存,等時間到了,在一起發送到spp,所以長度是不確定的
擴展說明:
藍牙spp,理論上最大一包的數據長度,可以達到600個字節左右,不同的手機可能略有差異
基本一包數據大于512是肯定可以的。這里分包,是我們芯片內部串口機制去分包,和spp無關

三、最后的總結
當然您需要最大的數據包,我們這邊修改藍牙程序--串口部分,也是可以做到的,加大藍牙芯片的dma接收長度限制就可以了,很簡單
但是盡量您那邊能自己處理最好,app那邊處理數據也很簡單,這樣會比較通用一點

審核編輯 黃宇
-
芯片
+關注
關注
463文章
54305瀏覽量
468456 -
藍牙芯片
+關注
關注
17文章
464瀏覽量
48023 -
SPP
+關注
關注
1文章
19瀏覽量
8505
發布評論請先 登錄
基于KT6368A芯片開發SOP8藍牙自拍桿方案記錄總結
為什么一個數據包會收到兩個獨立的netbufs呢?
KT6368A藍牙芯片問題回答
KT6368A藍牙轉HID鍵盤,藍牙ibeacon模塊方案測試板使用說明
kt6368A雙模藍牙芯片無法透傳 可能是什么問題呢
KT6368A雙模藍牙芯片批量生產使用主機芯片KT6358M測試很方便
關于KT6368A雙模藍牙芯片的BLE在ios的lightblue大數量數據測試
KT6368A藍牙芯片的uuid完整的是多少,以及app或者小程序開發的注意點
KT6368A用SPP發送1K APP顯示是3個包或者4個包,理論應該是兩個包吧
評論