Central例程運(yùn)行在CH32F208WBU6,自己畫的板子
從機(jī)運(yùn)行在BLE調(diào)試助手,手機(jī)是小米11
情況是這樣,Central例程有個(gè)宏定義
#define DEFAULT_MAX_CONNECTION_INTERVAL 60
在這種情況下一切正常,能掃描到,建立連接,更新連接參數(shù),找到從機(jī)主服務(wù)FFF0,找到特征值,然后發(fā)送數(shù)據(jù),一切正常。
我把60改成100后,找不到FFF0服務(wù)
#define DEFAULT_MAX_CONNECTION_INTERVAL 100
圖中斷電處均無法進(jìn)
隨后我跟蹤查看連接參數(shù)是否有更新成功,結(jié)果用注釋寫出來了??礃幼討?yīng)該是協(xié)商成功了。圖如下
還有另外一個(gè)問題,連接超時(shí)的問題。在#define DEFAULT_MAX_CONNECTION_INTERVAL 60 的情況下,我每隔1秒鐘就發(fā)送一個(gè)字節(jié)的數(shù)據(jù)給從機(jī)。大概在20~30分鐘的時(shí)候,連接會(huì)超時(shí)。返回的reason就是連接超時(shí)0x08。測(cè)了好幾次,基本都是這樣,一開始沒問題,放在一邊不管它,程序就進(jìn)Terminate Link事件了。從機(jī)用的就是BLE 調(diào)試助手。下圖是Terminate Link事件處理的代碼,這部分我都沒怎么動(dòng),都是例程的原代碼。
接下來的一張圖片是我添加的一個(gè)tmos循環(huán)事件START_WRITE_EVT,一秒鐘發(fā)送一個(gè)字節(jié)給從機(jī)。替換了原代碼中的"START_READ_OR_WRITE_EVT"。