我用RF發(fā)送模式發(fā)送一個標志,我在用接收模式 state = RF_Rx(Rx_reply, 3, 0xFF, 0xFF);? 實時回復數(shù)據(jù)時候發(fā)現(xiàn),回復的數(shù)據(jù)在發(fā)送的接收看到的標志總是滯后兩次。? 怎么設置回復數(shù)據(jù)是實時最新
我看是好像是 RF_Rx 這個函數(shù)發(fā)送出去就跳出去了,可以判斷 發(fā)送出去并且發(fā)送完成了,再把函數(shù)返回的state置0嗎?或者有什么好辦法
數(shù)據(jù)發(fā)送完成會進入到發(fā)送完成標志TX_MODE_TX_FINISH,在發(fā)送完成之后再調用tmos任務進行RF的接收。
我判斷 TX_MODE_RX_DATA? ?,就是發(fā)送的接收完成 再進行標志判別,此時我看接收端的是正常的,? ? ? ?我把接收端的接收到的標志數(shù)據(jù)用 state = RF_Rx(Rx_reply, 3, 0xFF, 0xFF); 返回發(fā)送端,發(fā)送端每次更新的標志還是滯后一條數(shù)據(jù)。
RF_Rx? 這條指令是不是把數(shù)據(jù)放進了緩沖區(qū),每次收到數(shù)據(jù)立即回復緩沖區(qū)的數(shù)據(jù),然后再放一條新的數(shù)據(jù)到緩沖區(qū)?
如果這樣的話,怎么才能實時回復最新的?
AUTO模式下,需要RX收包方收到包后立即回復一包數(shù)據(jù)作為應答。為了以最快的速度響應,應答包的內容為收到包前,RF_RX接口中預先填寫好的數(shù)組,它一定是比收包時刻的內容滯后的。
如果要做相對實時的交互,可以由主機端連續(xù)發(fā)送兩包數(shù)據(jù),第一包用來交互有效數(shù)據(jù),接收無效數(shù)據(jù)回包;第二包發(fā)送一包無效數(shù)據(jù),接收有效數(shù)據(jù)的回包。
CH583M的RF_PHY例程:LLE_MODE_AUTO模式下,我把發(fā)送和接收數(shù)據(jù)速率統(tǒng)一改為 LLE_MODE_PHY_2M,發(fā)現(xiàn)發(fā)送的接收一直進入 TX_MODE_RX_TIMEOUT,而都改成LLE_MODE_PHY_1M 是正常的,為什么速率快了 反而超時?? 這里需要怎么配置才能正常不超時嗎?
重新解壓一份EVT包修改看看,我只修改了如下圖一處配置,然后默認的收發(fā)方改一改,其他沒改,2M空中速率是正常通信的。
是一包都無法通信,還是可以成功部分通信包?
若環(huán)境中存在干擾,可能會導致超時斷連,可以檢查一下通信成功包的RSSI,明顯偏弱的話,測試的無線環(huán)境可以換一個晴朗空曠的環(huán)境。