PC機與嵌入式裝置通訊協議設計原則

2021-07-08 19:51:30 字數 3294 閱讀 4509

pc機與嵌入式裝置通訊協議設計原則

嵌入式裝置在執行中需要設定引數,這個工作經常由pc機來實現,需要為雙方通訊設計協議,有代表性協議是

如下三種:

表1 三種常見通訊協議 名稱

固定二進位制

變長二進位制

純文字協議 代表

dl645

asn.1

xml 例項

vog:4bytes

cur:4bytes

01 04 vol

02 04 cur

vol=100v,

cur=5a

適合場合

長度內容固定

單幀資料較短

提供資料模型

長度靈活可變

資料內容、長度、

交換格式不受限 優點

編譯碼簡單,效率高,占用記憶體少

長度靈活,可以實現巢狀

可讀性極佳,十分靈活,跨平台 缺點

可讀性差,長度

受限,不易擴充套件

可讀性較差,

編譯碼較複雜

占用記憶體多,編譯碼耗時

從上表可以看到,一般嵌入式裝置記憶體和運算效能都有限,因此固定二進位制是首選通訊協議。

一.  簡單性

保證協議是乙個簡單的方案,晦澀難懂往往意味著實現困難和容易出錯。協議的結構宜採用平面方式,每個域作用明確,資料域盡可能設計得長度和位置固定,注釋詳盡,文件清晰,例項豐富,讓人盡快上手和理解。

二.  可擴充套件

必須保證將來增加功能和更改硬體後協議仍能勝任工作,這往往是通過預留空間來實現,協議的變更應該只是量的增加,不至於引起協議結構的變化。

三.  低耦合

理想情況下每個協議包是原子資訊,即本協議包不與其他協議包牽連,以防止通訊丟幀和設定牽連帶來的錯誤。

四.  穩定性

協議包長度適宜:太小包含的資訊過少,協議包的種類繁多,容易引起通訊混亂和牽連錯誤;太大包含的資訊過多,可讀性較差,組幀和解幀的工作困難,還會帶來通訊易受干擾的缺陷,一般協議長度以最小原子性資訊為標尺。

協議必須包括校驗機制,以便於接收方判別協議包正確完整接收,如果出錯需要較好的機制來確保通訊成功

(如重傳)。

五.  高效率

按資訊型別區分協議包類別,如:設定網路資訊引數,設定當前執行引數,可以區分開來,方便程式處理。

將同種操作編碼為乙個子集是一種高效手段,如read操作,編碼為0x0010,write操作,編碼為0x0020。

資料盡可能設計成同構模式,如果實在有差異,至少將同型別資料放置在一起,這樣程式可以充分利用指標和線性定址加速處理。

六.  易實現

儘量減少複雜演算法的使用,如,通訊鏈路穩定,資料幀的校驗碼可以由checksum代替crc。除非資源非常緊張,否則不要將過多的資訊擠壓在乙個資料裡,因為它會帶來可讀性差和實現困難。

七.軟體開發

盡可能地讓硬體isr完成驅動工作,不要讓「程序」參與複雜的時序邏輯,否則處理器將步履蹣跚且邏輯複雜!如:

接收固定長度的資料幀,可以使用dma,每接收完一幀dma_isr向程序發訊息。小心處理dma斷層異常(接收的資料幀長度正常但資料錯誤,資料為上幀的後半部分+本幀的前半部分)。

接收不定長的資料幀,可以使用狀態機,當接收到「幀尾資料」時向程序發訊息。小心資料紊亂和超時異常(資料紊亂時需要將狀態機及時復位,超時一般使用定時器監控)。

八. 考慮硬體

如果通訊鏈路是高速匯流排(如sport可達100mbps),一般設計成一幀產生一次中斷,它通過長度觸發的dma來實現,需要將協議設計成固定長度,如附錄a。它具備高效率,但靈活性較差。

如果通訊鏈路是低速匯流排(如uart一般100kbps),一般接收一位元組產生一次中斷,可以將協議設計成變長幀,如附錄b。它具備高靈活性,但效率較低。

附錄a 乙個基於dma傳輸固定長度的協議例項。

圖1顯示了pc傳送資料幀的格式,總長為64位元組,是4位元組的整倍數,符合絕大部分32位處理器結構體對齊的特性。

0x3c:int8u,幀頭,可見字元』

len:int8u,本幀的總資料長度,在圖4即為64

dst:int8u,標識目標裝置的id號

src:int8u,標識源裝置的id號

data:56位元組的儲存區,內容依賴於具體的通訊幀(例項見表2)

cmd:int16u,資料幀的類別

cs:int8u, 對它前面所有資料(62位元組)進行8位累加和校驗

0x7d:int8u, 幀尾,可見字元』}』

圖1 pc傳送資料幀

表2  data域資料結構例項

目的

給m&m08配置iec61850協議通用部分

命令字

0x0010/0x0020/0x0030(1/2/3mu)

名稱

位元組

單位

說明

目標mac 6

/傳送資料報的目標mac位址

源mac 6

/傳送資料報的源mac位址

vlan 4

/0表示不新增,其他為vlan值

通道對映 32

/源資料對映到asdu的資料集2

/應用識別符號

asdu數 1

/應用服務資料單元個數

資料域總長度 51

/不能超過圖1資料幀的data總長

附錄b 乙個基於變長格式的uart通訊協議例項。

pc與iwl880a(一種無線通訊產品,詳見www.rimelink.com)通訊幀採用

變長格式,如下圖所示。大部分裝置(常見為pc機)對於接收以「回車符」的機制很好處理,協議中的tail就等於0x0d(換行符)。

嵌入式通訊協議 SPI

spi 序列外設介面,是一種高速的 全雙工,同步的通訊匯流排。spi的通訊原理很簡單,它以主從方式工作,這種模式通常有乙個主裝置和乙個或多個從裝置,需要至少4根線,事實上3根也可以 單向傳輸時 也是所有基於spi的裝置共有的,它們是mosi 資料輸入 miso 資料輸出 sclk 時鐘 cs 片選 ...

嵌入式軟體 自學 通訊協議

嵌入式通訊協議 分為 大協議 和 小協議 兩種 大協議 主要用來進行系統外的整個系統之間的通訊,協議如ethernet usb sata pcie等,傳輸速率在數百甚至上千mb s。小協議 主要用於系統內各個晶元間的通訊,協議如i2c spi uart協議,傳輸速率在幾kb s到幾mb s。小協議 ...

嵌入式硬體相關通訊協議

spi是序列外圍裝置介面 serial peripheral inte ce 是motorola首先在其mc68hcxx系列處理器上定義的。是一種高速的 全雙工的和同步的序列通訊匯流排。乙個主裝置和乙個從裝置使用4根線進行通訊 具有多個從裝置時,主裝置會給每乙個從裝置分配乙個cs腳,以便於選擇相應的...