一、問題簡介
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那邊處理數據也很簡單,這樣會比較通用一點
審核編輯 黃宇
-
芯片
+關注
關注
455文章
50816瀏覽量
423675 -
藍牙芯片
+關注
關注
17文章
376瀏覽量
46047 -
SPP
+關注
關注
1文章
17瀏覽量
8088
發布評論請先 登錄
相關推薦
評論