582藍(lán)牙主機(jī)喚醒的問題

582作為藍(lán)牙主機(jī),通過LowPower_Sleep休眠,IO口中斷喚醒,有下面2個(gè)問題:

1、喚醒后如何快速恢復(fù)藍(lán)牙主機(jī),我目前是參考main函數(shù),重新調(diào)用CH58X_BLEInit();HAL_Init();GAPRole_CentralInit();Central_Init();不知道這樣是否合理?

2、通過以上方法恢復(fù)在1.3版的庫上能正常喚醒并觸發(fā)中斷,但升級(jí)到1.8版的庫后,一個(gè)脈沖只能喚醒,需要再一個(gè)脈沖才能觸發(fā)中斷,請(qǐng)問要怎么處理?(其它代碼不做任何修改,僅替換Lib目錄下的文件重新編譯)。

直接通過宏開啟進(jìn)入睡眠就可以了,會(huì)由協(xié)議站管理喚醒

如果是自行調(diào)用進(jìn)入睡眠,在喚醒之后可以嘗試軟復(fù)位操作。

代碼更新到最新,包括公共文件和庫都使用最新的。

進(jìn)行g(shù)pio喚醒的操作,可以直接參考pm例程。


修改為通過宏進(jìn)入睡眠,但有時(shí)在我需要進(jìn)入睡眠時(shí),系統(tǒng)并不調(diào)用CH58X_LowPower()函數(shù),那么我如何知道是什么問題阻止系統(tǒng)調(diào)用這個(gè)函數(shù)了呢?



這里都是協(xié)議棧管理的,所以從應(yīng)用層角度解釋,就是在沒有任務(wù)的時(shí)候,則會(huì)自動(dòng)進(jìn)入睡眠。如果有任務(wù)到來,則協(xié)議棧管理會(huì)進(jìn)行喚醒并執(zhí)行對(duì)應(yīng)的功能。

注意點(diǎn):任務(wù)的執(zhí)行時(shí)間需要控制在有效連接間隔的一半以內(nèi),否則藍(lán)牙可能斷連。


另外一個(gè)問題請(qǐng)教:調(diào)用GaPRole_CentralEstablishlink后,如果沒有連上從機(jī),是不是就進(jìn)不了休眠了?要怎么取消呢?


主機(jī)會(huì)一直在進(jìn)行掃描的,因此不會(huì)進(jìn)入到睡眠。如果是主機(jī)間隔性的掃描,也會(huì)有定時(shí)起來喚醒的。注意如果配置為掃描10s就停止掃描,且在該10s未發(fā)現(xiàn)從機(jī)設(shè)備, 則存在沒有連接就進(jìn)入了休眠。

基于手動(dòng)調(diào)用建立連接的情況并會(huì)定時(shí)停止,可以這樣操作:協(xié)議棧睡眠是進(jìn)入CH58X_LowPower函數(shù)的,因此在進(jìn)入函數(shù)之前加上標(biāo)志判斷。未建立連接則在協(xié)議棧調(diào)用CH58X_LowPower函數(shù)時(shí),一進(jìn)來就立馬return出去。直到建立連接并注意標(biāo)志清0。


image.png

最后一條消息是從機(jī)上電后,主機(jī)連上,然后立即進(jìn)入睡眠,否則一直在等待。


我們主機(jī)是一個(gè)面板設(shè)備,要求觸摸喚醒后最快連上藍(lán)牙,所以不會(huì)去掃描而是直接連,這時(shí)如果從機(jī)一直沒開機(jī),就一直不會(huì)調(diào)用CH58X_LowPower(),是不是我有什么操作或參數(shù)不對(duì)呢?請(qǐng)看我下面的截圖

image.png


主機(jī)可以調(diào)用直接建立連接的函數(shù)Establishlink,進(jìn)行立馬連接。但是需注意并考慮以下幾點(diǎn):如主機(jī)在準(zhǔn)備建立連接的時(shí)候,從機(jī)未廣播,則主機(jī)是否等待完全建立連接再考慮再次睡眠,還是設(shè)置timeout進(jìn)行節(jié)省功耗,這是主機(jī)開低功耗并節(jié)省功耗的注意點(diǎn)。而基于原本Central例程基礎(chǔ)上開啟睡眠,主機(jī)基本不會(huì)進(jìn)入低功耗,因?yàn)槿潭荚趻呙瑁ㄅc從機(jī)不同,從機(jī)是有廣播間隔概念,在非廣播時(shí)自動(dòng)進(jìn)入睡眠),因此你看到的進(jìn)入CH58X_LowPower函數(shù)次數(shù)非常少(從機(jī)會(huì)一直打印)??梢韵炔婚_啟睡眠,直接使用Establishlink判斷是否可以建立連接。

基于以上,①timeout可以自行考慮配置時(shí)長(zhǎng),如主機(jī)未成功建立連接,則先進(jìn)行睡眠,過一會(huì)再醒來并建立連接;②主機(jī)一直調(diào)用建立連接的函數(shù),同時(shí)通過標(biāo)志,在未連接的時(shí)候進(jìn)入CH58X_LowPower函數(shù)立馬return出去,直到連接成功,則將CH58X_LowPower函數(shù)中的標(biāo)志清0并不再手動(dòng)return。

需要注意的是:如果使用Establishlink是因?yàn)槿梭w感知,則建議使用例程的掃描連接方式,速度是差不多的。


你好,我需要的就是方式①,但我不知道如何設(shè)置這個(gè)timeout,Establishlink本身好象沒有相關(guān)的參數(shù)設(shè)置。


timeout是自行配置的。舉例:主機(jī)進(jìn)行Establishlink時(shí)間為10s,如果未建立連接可能從機(jī)沒有再廣播,主機(jī)過60s再次連接,以此往復(fù)。


timeout是自行配置的

=======================================

在哪配置呢?

如果從機(jī)沒有廣播,我不關(guān)心主機(jī)多久再次連接,而是主機(jī)怎么取消Establishlink?從而觸發(fā)CH58X_LowPower進(jìn)入休眠!

從我上面的截圖可以看到,如果沒有從機(jī)廣播,主機(jī)一直不會(huì)觸發(fā)CH58X_LowPower(最后觸發(fā)了是因?yàn)槲掖蜷_了從機(jī)廣播)。


TIMEOUT是自行配置的,不是我們的庫里面提供出來的參數(shù),這是在你的應(yīng)用層去實(shí)現(xiàn)的功能。我這樣說的目的是“防止從機(jī)沒有廣播,主機(jī)就一直在嘗試建立連接,這樣功耗會(huì)非常高”。

如果從機(jī)沒有廣播,主機(jī)停止掃描即GAPRole_CentralCancelDiscovery,同時(shí)不要再手動(dòng)的調(diào)用Establishlink。

如果還有問題的話,請(qǐng)發(fā)送郵件至郵箱:lpc@wch.cn。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频