DFP 數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議應(yīng)用實(shí)例
掃描二維碼
隨時(shí)隨地手機(jī)看文章
DFP 是什么?
穩(wěn)控科技編寫的一套數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則, 取自“自由轉(zhuǎn)發(fā)協(xié)議 FFP(Free Forward Protocol)” ,或者 DFP(DoubleF Protocol), DF 也可以理解為 Datas Forward(數(shù)據(jù)轉(zhuǎn)發(fā))的縮寫。DF 協(xié)議是與硬件接口無關(guān)的數(shù)據(jù)鏈路層協(xié)議,規(guī)定了數(shù)據(jù)流如何在不同設(shè)備之間、不同接口之間的傳輸方向。
DF 協(xié)議一般用于延長(zhǎng)數(shù)字接口的傳輸距離(數(shù)據(jù)中繼),它與硬件接口類型無關(guān),可以基于 UART、 LoRA、TCP 等異步數(shù)據(jù)傳輸介質(zhì)。
應(yīng)用實(shí)例
DLS10 是符合 DFP 協(xié)議的數(shù)據(jù)中繼設(shè)備, 自帶兩個(gè) UART 接口和兩個(gè) LoRA 無線接口,實(shí)現(xiàn)了 DFP 所有需求。即: DLS10 是符合 DFP 協(xié)議的具有兩個(gè) UART 和兩個(gè) LoRA 數(shù)字接口的數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備。DLS10 的轉(zhuǎn)發(fā)前綴識(shí)別碼為: @#@#(0x40 0x23 0x40 0x23)DLS10 內(nèi)部預(yù)置有若干參數(shù)項(xiàng)(寄存器),用戶可修改這些參數(shù)以對(duì) DLS10 進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)置,寄存器
定義如下。寄存器匯總表(讀/寫)
(3)端口數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則寄存器(目標(biāo)端口設(shè)置)
每個(gè)數(shù)字接口均有一個(gè) xxxx_FWR(Forward Rule)寄存器用于設(shè)置此接口接收到數(shù)據(jù)后將數(shù)據(jù)轉(zhuǎn)發(fā)到哪個(gè)(或者哪幾個(gè))數(shù)字接口。這個(gè)寄存器從低位向高位每?jī)晌淮硪粋€(gè)目標(biāo)端口, bit0/1 代表 UART-A, bit2/3代表 UART-B, bit4/5 代表 LoRA-A, bit6/7 代表 LoRA-B。每?jī)晌恢?,低位表示是否從此接口輸出?shù)據(jù)包,高位表示輸出數(shù)據(jù)時(shí)是否帶有轉(zhuǎn)發(fā)協(xié)議頭 FP(ForwardPrefix)。
數(shù)據(jù)轉(zhuǎn)發(fā)寄存器 xxxx_FWR
例如:
設(shè)置 UA_FWR=00010000B(0x10)表示 UART-A 收到數(shù)據(jù)后從 LoRA-A 轉(zhuǎn)發(fā)出去,轉(zhuǎn)發(fā)時(shí)不帶 FP。
設(shè)置 LA_FWR=00000001B(0x01)表示 LoRA-A 收到數(shù)據(jù)后從 UART-A 轉(zhuǎn)發(fā)出去,轉(zhuǎn)發(fā)時(shí)不帶 FP。
以下實(shí)例均以 DLS 默認(rèn)參數(shù)為基礎(chǔ)。
實(shí)例 1.UART(RS232/RS485)、 LoRA 互轉(zhuǎn)本實(shí)例實(shí)現(xiàn)兩個(gè) UART 設(shè)備之間的無線透明傳輸(代替 UART 之間的物理線路)。設(shè)備 I、設(shè)備 II 均為UART 接口
DLS(1#)參數(shù)設(shè)置:設(shè)置 UART-A 通訊參數(shù)與設(shè)備 I 一致。
DLS(2#)參數(shù)設(shè)置:設(shè)置 UART-B 通訊參數(shù)與設(shè)備 II 一致。
其它參數(shù)保持默認(rèn)值,主要的幾個(gè)默認(rèn)參數(shù)說明如下:(后續(xù)實(shí)例不再一一說明默認(rèn)參數(shù))本實(shí)例僅使用了 DLS 設(shè)備的 UART-A 和 LoRA-A,默認(rèn)參數(shù)時(shí),這兩個(gè)端口在接收到數(shù)據(jù)相互轉(zhuǎn)發(fā),即: UARTA 接收到數(shù)據(jù)后從 LoRA-A 端口發(fā)送出去(期間會(huì)對(duì)轉(zhuǎn)發(fā)前綴做相應(yīng)的添加、修改、去除輸出等)。數(shù)據(jù)轉(zhuǎn)發(fā)過程描述如下:
設(shè)備 I 由 UART 發(fā)送:“123”(0x31 0x32 0x33)
DLS(1#)接收到 UART-A 數(shù)據(jù)“123” ,為其增加 FP,因參數(shù) UA_FWR=0x0010,故此 UART-A 接收到的數(shù)據(jù)轉(zhuǎn)發(fā)到 LoRA-A,轉(zhuǎn)發(fā)時(shí)不帶 FP,則經(jīng)由 DLS(1#) 的 LoRA-A 發(fā)出的數(shù)據(jù)內(nèi)容為:31 32 33
DLS(2#) 的 LoRA-A 接收到數(shù)據(jù)包 31 32 33,因?yàn)?LA_FWR=0x0001,故此數(shù)據(jù)轉(zhuǎn)發(fā)到 UART-A,轉(zhuǎn)發(fā)時(shí)不帶 FP, DLS(4#)的 UART-A 發(fā)送的內(nèi)容為:31 32 33,即設(shè)備 II 的 UART 接收到“123”。由設(shè)備 II 發(fā)送的數(shù)據(jù)傳輸至設(shè)備 I 的過程與以上過程完全相同,在此不再重復(fù)說明。