APP是可以修改它的MTU,它怎么自己程序設定啊,我修改了那個(gè)宏定義,還是默認的23,發(fā)多了字節也得分包。CH592F作為peripheral
char1~char4默認通信數據長(cháng)度都是1,char5是5。
BLE從機例程中注意修改如下幾處
1.config.h中BLE_BUFF_MAX_LEN改為最大值251
2.gattprofile.h中SIMPLEPROFILE_CHARn_LEN(n=1~5)改為最大值243(char4默認使用notify,協(xié)議開(kāi)銷(xiāo)少一個(gè)字節,故MTU可以到244)
3.如果需要使用notify且發(fā)包負載大于20個(gè)字節,peripheralMTU變量或者CH58xBLE_LIB.h中的ATT_MTU_SIZE需要被擴大為最大負載+3即247(V208中只讀,只能修改peripheralMTU變量)
BLE主機如果是手機APP,要看APP的是否對MTU有調整,部分手機APP在連接后會(huì )自動(dòng)更新MTU。如果手機APP是BLE調試助手,連接后要在A(yíng)PP右上角修改MTU為251(最大值視情況而定)
1、2、我已經(jīng)改了,改為了53;3沒(méi)有用到notify,手機app沒(méi)有對mtu進(jìn)行調整,這個(gè)我也能確定。完成上面的內容后,它的mtu仍然還是23.
手機APP中也要改一改MTU,不同的APP,MTU大小協(xié)商的數值有差異。
可以檢查BLE從機代碼中,連接后的“mtu xx”打印日志,檢查當前的MTU大小。手機APP先用“BLE調試助手”進(jìn)行測試,每次連接成功后都要在右上角菜單中修改MTU。
ATT_GetMTU(connInterval),這個(gè)函數獲取的MTU是正確的嗎
1.config.h中BLE_BUFF_MAX_LEN改為最大值251
2.gattprofile.h中SIMPLEPROFILE_CHARn_LEN(n=1~5)改為最大值243(char4默認使用notify,協(xié)議開(kāi)銷(xiāo)少一個(gè)字節,故MTU可以到244)
上面的1改為了55,后慢慢的用的是SIMPLEPROFILE_CHAR3_LEN改為了34,用的BLE調試助手連接通訊,mtu還是23,超過(guò)20了就分包了
BLE調試助手連接上以后,修改mtu,可以正常使用,超過(guò)20也沒(méi)問(wèn)題??梢哉P薷腗TU。我現在想直接把MTU改為一個(gè)大點(diǎn)的數,不用app來(lái)修改mtu這個(gè)過(guò)程。
MTU是需要主從機之間協(xié)商的,可以由APP主動(dòng)發(fā)起MTU協(xié)商;也可以由BLE從機發(fā)起協(xié)商請求,不過(guò)APP中要有對該請求的處理。