一、問題簡介
MCU通過KT6368A用SPP透傳發(fā)送1K左右的數(shù)據(jù),手機APP顯示是3個包或者4個包,但是我看手冊說最大一個包是512,理論應該是兩個包吧,請問這正常嗎?
二、詳細說明
實際測試的截圖如下:使用的是安卓app測試軟件測試的結果
原因分析如下:
1、當您發(fā)1K的數(shù)據(jù)給KT6368A,芯片內部串口是dma的接收,收滿256個字節(jié),就中斷
然后轉發(fā)spp到手機
2、但是此時串口還在不停的接收,下一個256滿了之后,繼續(xù)轉發(fā)給spp
邏輯就是這樣子,這就是解釋了你為什么1K發(fā)上去,分了3包或者4包的原因
3、這里還有一個細節(jié),藍牙不是實時發(fā)送的,而是等待心跳包確認之后才發(fā)送,大概是10ms左右交互一次,如果當前收滿256之后,還沒到發(fā)送的時間,此時還會繼續(xù)串口接收存到緩存,等時間到了,在一起發(fā)送到spp,所以長度是不確定的
擴展說明:
藍牙spp,理論上最大一包的數(shù)據(jù)長度,可以達到600個字節(jié)左右,不同的手機可能略有差異
基本一包數(shù)據(jù)大于512是肯定可以的。這里分包,是我們芯片內部串口機制去分包,和spp無關
三、最后的總結
當然您需要最大的數(shù)據(jù)包,我們這邊修改藍牙程序--串口部分,也是可以做到的,加大藍牙芯片的dma接收長度限制就可以了,很簡單
但是盡量您那邊能自己處理最好,app那邊處理數(shù)據(jù)也很簡單,這樣會比較通用一點
審核編輯 黃宇
-
芯片
+關注
關注
455文章
50816瀏覽量
423674 -
藍牙芯片
+關注
關注
17文章
376瀏覽量
46047 -
SPP
+關注
關注
1文章
17瀏覽量
8088
發(fā)布評論請先 登錄
相關推薦
評論