DFP 數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議規(guī)則說明
DFP 數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議規(guī)則說明
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é)議一般用于延長數(shù)字接口的傳輸距離(數(shù)據(jù)中繼),它與硬件接口類型無關(guān),可以基于 UART、 LoRA、TCP 等異步數(shù)據(jù)傳輸介質(zhì)。
DFP 設(shè)備基本特性
支持 DFP 協(xié)議的設(shè)備稱為 DFP 設(shè)備, DFP 設(shè)備都有至少兩個(gè)異步數(shù)字接口, 數(shù)字接口操作的最小數(shù)據(jù)單位為“數(shù)據(jù)包” 。
DFP 設(shè)備具有設(shè)置數(shù)據(jù)包的轉(zhuǎn)發(fā)方向的參數(shù),例如: A 端口接收到的數(shù)據(jù)包轉(zhuǎn)發(fā)到哪個(gè)端口。
DFP 設(shè)備具有設(shè)置數(shù)據(jù)包轉(zhuǎn)發(fā)時(shí)是否帶有協(xié)議頭,例如:向 B 端口轉(zhuǎn)發(fā)時(shí)是否為數(shù)據(jù)附加協(xié)議頭。
DFP 設(shè)備可以識別接收到的數(shù)據(jù)包是否帶有 DFP 協(xié)議頭,并為沒有 DFP 協(xié)議頭的數(shù)據(jù)包自動(dòng)添加協(xié)議頭。
DFP 協(xié)議規(guī)則
數(shù)據(jù)包結(jié)構(gòu)不同的 DFP 設(shè)備之間使用特定結(jié)構(gòu)的數(shù)據(jù)包來完成數(shù)據(jù)的定向轉(zhuǎn)發(fā)傳輸,一個(gè)完整的 DFP 數(shù)據(jù)包由數(shù)據(jù)轉(zhuǎn)發(fā)前綴和要轉(zhuǎn)發(fā)的數(shù)據(jù)兩部分構(gòu)成。數(shù)據(jù)內(nèi)容稱為“干數(shù)據(jù)” ,帶有轉(zhuǎn)發(fā)前綴的數(shù)據(jù)稱為“濕數(shù)據(jù)” 。
數(shù)據(jù)前綴屬性說明
FP 識別碼: 4 字節(jié) FP 識別信息,默認(rèn)為@#@#。 只要以識別信息為開始的數(shù)據(jù)包均被認(rèn)為是 FP。群組 ID: 數(shù)據(jù)包所屬于群組編碼,只有與 DFP 設(shè)備所屬群組相同的數(shù)據(jù)包才會被轉(zhuǎn)發(fā)。
起始地址:數(shù)據(jù)包由哪臺設(shè)備發(fā)出。
目標(biāo)地址: 數(shù)據(jù)包最終的目的設(shè)備地址。
轉(zhuǎn)發(fā)次數(shù):數(shù)據(jù)包已經(jīng)經(jīng)過了幾次轉(zhuǎn)發(fā)(已經(jīng) n 次)。
轉(zhuǎn)發(fā)路徑:長度 n 字節(jié),每個(gè)字節(jié)依次保存了本條數(shù)據(jù)每次被轉(zhuǎn)發(fā)時(shí)的設(shè)備地址值。
校驗(yàn)和:前面所有數(shù)據(jù)的和校驗(yàn)值。
數(shù)據(jù)包長度:協(xié)議前綴之后的數(shù)據(jù)包字節(jié)數(shù)(即:干數(shù)據(jù)的長度)。
例: 16 進(jìn)制數(shù)據(jù)包(濕數(shù)據(jù)) 40 23 40 23 02 81 85 02 81 82 D3 03 31 32 3340 23 40 23:協(xié)議前綴識別碼@#@#02:本包數(shù)據(jù)最后一次被發(fā)送時(shí)使用的群組 ID 為 02。81:本包數(shù)據(jù)的發(fā)起設(shè)備地址為 0x81。85:本包數(shù)據(jù)是發(fā)送的終點(diǎn)是設(shè)備 0x85。02:本包數(shù)據(jù)已經(jīng)被轉(zhuǎn)發(fā)了 02 次。81 82:本包數(shù)據(jù)第一次由設(shè)備 0x81 轉(zhuǎn)發(fā),第二次(最近一次)是被設(shè)備 0x82 轉(zhuǎn)發(fā)出來的。D3:之前所有字節(jié)的和校驗(yàn)。03:本包數(shù)據(jù)實(shí)際內(nèi)容為 03 個(gè)字節(jié)。31 32 33:本包數(shù)據(jù)實(shí)際內(nèi)容為 0x31 0x32 0x33。
數(shù)據(jù)有效域
是指數(shù)據(jù)包在發(fā)送時(shí)可以接收到數(shù)據(jù)的所有 DFP 設(shè)備端口。
例如:某種設(shè)備具有 3 個(gè) LoRA 端口,每個(gè) LoRA 端口可以配置為不同的頻率(如: 433MHz、 435MHz 等),當(dāng)通過某個(gè) LoRA 端口發(fā)出數(shù)據(jù)時(shí),所有與它同頻的其它設(shè)備的 LoRA 端口均可接收到數(shù)據(jù),而不同頻的 LoRA端口不會接收到數(shù)據(jù)。能夠接收到數(shù)據(jù)的所有區(qū)域稱之為“同數(shù)據(jù)域” , 也稱為“同一區(qū)域” 。(注意,這里所說的“區(qū)域” 與地理中的“區(qū)域” 的含意不同)。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。
fpga相關(guān)文章:fpga是什么