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

為什么一個數(shù)據(jù)包會收到兩個獨立的netbufs呢?
KT6368A藍牙芯片問題回答
KT6368A藍牙轉(zhuǎn)HID鍵盤,藍牙ibeacon模塊方案測試板使用說明

KT6368A的藍牙芯片名稱修改以及出現(xiàn)兩個藍牙名連不上的問題

為什么我給藍牙芯片KT6368A發(fā)送AT指令沒有反應(yīng)呢

你知道2個KT6368A的藍牙芯片模塊如何配對以及數(shù)據(jù)傳輸嗎

kt6368A雙模藍牙芯片無法透傳 可能是什么問題呢

KT6368A雙模藍牙芯片批量生產(chǎn)使用主機芯片KT6358M測試很方便

關(guān)于KT6368A雙模藍牙芯片的BLE在ios的lightblue大數(shù)量數(shù)據(jù)測試

KT6368A雙模藍牙芯片上電到正常發(fā)送AT指令或指令復(fù)位需要多久

KT6368A藍牙芯片的uuid完整的是多少,以及app或者小程序開發(fā)的注意點

評論