修改例程adv_vendor_self_provision_with_peripheral并燒錄,使用一個(gè)friend節(jié)點(diǎn)和兩個(gè)lpn節(jié)點(diǎn),其中一個(gè)lpn節(jié)點(diǎn)經(jīng)常性發(fā)送數(shù)據(jù)不能傳輸,需要重新斷開APP,再發(fā)送才有可能成功。
另外一個(gè)lpn2還算正常,發(fā)送都能收到。
修改例程adv_vendor_self_provision_with_peripheral并燒錄,使用一個(gè)friend節(jié)點(diǎn)和兩個(gè)lpn節(jié)點(diǎn),其中一個(gè)lpn節(jié)點(diǎn)經(jīng)常性發(fā)送數(shù)據(jù)不能傳輸,需要重新斷開APP,再發(fā)送才有可能成功。
另外一個(gè)lpn2還算正常,發(fā)送都能收到。
APP發(fā)送到friend節(jié)點(diǎn)顯示有收到,但friend節(jié)點(diǎn)轉(zhuǎn)發(fā)給lpn卻失敗了
重新?lián)Q了外置fpc天線,現(xiàn)在又換成lpn2不好使了,lpn又正常了,難道friend節(jié)點(diǎn)只支持一個(gè)lpn?
您好,您檢查一下圖中的宏是否定義為1,為1的話可以改寫成默認(rèn)代碼支持的最大值4。
朋友關(guān)系的建立由低功耗節(jié)點(diǎn)發(fā)起,可以查看低功耗節(jié)點(diǎn)和朋友節(jié)點(diǎn)的串口打印,朋友關(guān)系的建立與斷開都有打印log。
@TECH_JW?是的,我改成3就可以了,謝謝
如果需要擴(kuò)展朋友節(jié)點(diǎn)支持的低功耗個(gè)數(shù),應(yīng)該怎么修改?直接修改宏定義APP卡死,看上去需要修改APP
修改MESH_MEM大小可以支持多些節(jié)點(diǎn)。
您好,用最EVT中的庫(kù)實(shí)際上已經(jīng)沒有最大值4的限制了,為了支持更多低功耗節(jié)點(diǎn),需要做如下優(yōu)化。
①CONFIG_MESH_FRIEND_RECV_WIN_DEF這個(gè)宏規(guī)定低功耗節(jié)點(diǎn)在向朋友節(jié)點(diǎn)發(fā)送POLL請(qǐng)求數(shù)據(jù)后,進(jìn)入接收狀態(tài)的接收窗口大小。如果朋友節(jié)點(diǎn)支持的節(jié)點(diǎn)多了導(dǎo)致丟包,可以適當(dāng)加大這個(gè)宏,但是功耗會(huì)變高。
②CONFIG_MESH_RF_CHANNEL_37到39三個(gè)宏后面的信道可以修改,默認(rèn)這三個(gè)信道與BLE共用廣播信道,如果環(huán)境中其他無線干擾比較多,可以修改到其他信道。注意三個(gè)信道別靠太近,比如說重新分配為2、17、33。
③內(nèi)存分配優(yōu)化一下。app.c中MESH_MEM這個(gè)數(shù)組和BLE_MEMHEAP_SIZE這個(gè)宏,分配大些,要求編譯器編譯和朋友節(jié)點(diǎn)初始化過程中不要報(bào)錯(cuò)。每多支持一個(gè)低功耗節(jié)點(diǎn),會(huì)多占用朋友節(jié)點(diǎn)的332字節(jié)的RAM即MESH_MEM以及CONFIG_MESH_UNSEG_LENGTH_DEF * CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF個(gè)字節(jié)的緩存即BLE_MEMHEAP_SIZE。
目前測(cè)試MESH_MEM分配9K,BLE_MEMHEAP_SIZE分配10K,CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF設(shè)置為2,低功耗節(jié)點(diǎn)2sPOLL一次,582作為朋友節(jié)點(diǎn)可以支持10個(gè)低功耗節(jié)點(diǎn)。
@TECH_JW?感謝解答!