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