RF功能需求能否滿足一主多從?

本來計(jì)劃用藍(lán)牙連接主機(jī)從機(jī),為了降低功耗選擇使用RF,通過查看資料,只要RF配置一樣就能直接連接,主機(jī)從機(jī)只能通過軟件編程來區(qū)分嗎?此時(shí)再有一個(gè)配置相同的從機(jī)能否也接收主機(jī)數(shù)據(jù)?此時(shí)兩個(gè)從機(jī)連接主機(jī),配置相同,主機(jī)怎么區(qū)分,是要用程序加編號并分不同事件去處理嗎?想要實(shí)現(xiàn)主機(jī)發(fā)送命令給從機(jī),從機(jī)接收命令開始采集ADC值并發(fā)送給主機(jī),使用RF能否實(shí)現(xiàn)功能?

您好,當(dāng)前對于RF“一主多從”的方案,只有在應(yīng)用層代碼去分配ID或者直接在應(yīng)用層通過mac地址區(qū)分從機(jī),需要RF初始化的配置保持一致。

想要實(shí)現(xiàn)主機(jī)發(fā)送命令給從機(jī),從機(jī)接收命令開始采集ADC值并發(fā)送給主機(jī)”可以用RF代碼實(shí)現(xiàn)。規(guī)定主機(jī)在查詢某個(gè)從機(jī)A時(shí),連續(xù)廣播n個(gè)攜帶有從機(jī)A的ID或MAC的包;主機(jī)每發(fā)一個(gè)包就切換一次收發(fā)狀態(tài),監(jiān)聽從機(jī)A是否回包,監(jiān)聽超時(shí)就繼續(xù)發(fā)包,如此循環(huán)直到總時(shí)長超過X個(gè)時(shí)間單位;從機(jī)A每隔X個(gè)時(shí)間單位喚醒一次,醒來后持續(xù)啟用接收掃描一段時(shí)間來監(jiān)聽是否有主機(jī)下發(fā)命令,在收到命令包后執(zhí)行ADC采集并回包,回包中攜帶從機(jī)A的ID或者M(jìn)AC。



如何通過MAC地址區(qū)分從機(jī)?RF初始化有一個(gè)rfConfig.accessAddress是用來配對的吧。RF_PHY例程MAC是通過以下代碼設(shè)置MAC地址嗎?

#if(defined(BLE_MAC))?&&?(BLE_MAC?==?TRUE)
const?uint8_t?MacAddr[6]?=?{0x84,?0xC2,?0xE4,?0x03,?0x02,?0x02};
#endif

配對只需要RF初始化的配置保持一致,MAC地址可以不同是嗎?


rfConfig.accessAddress是接入層地址,是更底層的配置,建議用來劃分網(wǎng)絡(luò)。

您截圖里的代碼是使用程序定義的MAC,也可以。每個(gè)芯片都有一個(gè)硬件MAC地址,直接用硬件MAC不會重復(fù),可以在flash例程里找到讀取方式。MAC地址可以攜帶到自定義協(xié)議的包頭中,用來區(qū)分指定從機(jī)。

配對只需要RF初始化的配置保持一致,MAC地址可以不同”,“配對”是一定要RF初始化里保持一致的,否則應(yīng)用層都無法通信,進(jìn)行不下去。主從機(jī)之間MAC地址一般配置為不同的。


RF例程發(fā)送問題:我想發(fā)送兩段數(shù)據(jù),但是接受顯示只能接收一段,切換發(fā)送順序會顯示第一次發(fā)送的數(shù)據(jù),怎么才能連續(xù)發(fā)送?


要實(shí)現(xiàn)從機(jī)收到數(shù)據(jù)再發(fā)回來數(shù)據(jù)需要將RF例程進(jìn)行什么修改?將rfConfig.LLEMode 改為自動模式LLE_MODE_AUTO

再在收到數(shù)據(jù)時(shí)加入啟動事件tmos_set_event(taskID, SBP_RF_PERIODIC_EVT);并沒有我想看到的結(jié)果啊,進(jìn)入了事件但是根據(jù)串口信息接收到數(shù)據(jù)后開始發(fā)送,發(fā)送成功

圖片.png

然后STA12是接收超時(shí),在另一端是

圖片.png

發(fā)送成功一次然后接受超時(shí)


在自動模式下我看接收命令自動轉(zhuǎn)到發(fā)送模式,我想讓充當(dāng)“從機(jī)”的角色接收到信息后判斷指令,指令正確獲取ADC并輸出,用自動模式能夠?qū)崿F(xiàn)嗎


BASIC模式下,A往B發(fā)送兩段數(shù)據(jù),接收方B只收到第一段數(shù)據(jù)時(shí),請檢查接收方B有沒有切換收發(fā)模式,如果B在收到A的第一包后立即切換到發(fā)送模式回包,此時(shí)A又往B發(fā)了第二包,會導(dǎo)致第二包丟失;可以讓A一直發(fā)包,B一直收包,看收包數(shù)量和發(fā)包數(shù)量是否一致。

AUTO模式建議不要用與一對多的應(yīng)用,僅在一對一通信時(shí)使用。


請問還有RF的資料或者代碼應(yīng)用嗎?現(xiàn)在在自動模式收發(fā)出現(xiàn)問題,自動模式發(fā)完數(shù)據(jù),另一端接收沒問題發(fā)送也沒問題,但是發(fā)送端會接收超時(shí),接收端接收數(shù)據(jù)后用回調(diào)函數(shù)RF_2G4StatusCallBack調(diào)用事件SBP_RF_PERIODIC_EVT發(fā)送數(shù)據(jù),是發(fā)送端問題還是接收端問題?


BASIC模式能實(shí)現(xiàn)收到數(shù)據(jù)再發(fā)送,實(shí)現(xiàn)想要的功能,那AUTO模式是什么情況使用呢?還有我想要發(fā)送端加串口中斷接收上位機(jī)指令,可以參照BLE_UART例程嗎?RF能開啟低功耗模式嗎?


已解決收發(fā)問題,未使用自動模式,望說明為何自動模式無法有效完成需求


可以參考BLE_UART添加串口命令。

RF代碼也是可以通過HAL_SLEEP啟用由TMOS系統(tǒng)管理的低功耗的,休眠邏輯與BLE代碼一致。

AUTO模式下,庫中的代碼做好了收發(fā)切換,不用手動切換收發(fā)模式回包,應(yīng)用于對應(yīng)答包時(shí)延要求較高的場景。

AUTO模式有嚴(yán)格的收發(fā)切換和等待窗口,雙方最好都要使用該模式;如果接收方是BASIC模式,且代碼需要一定的時(shí)間進(jìn)行代碼處理,很可能會回包超時(shí)。


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

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